공개하기부끄러운블로그
공개하기부끄러운블로그
공개하기부끄러운블로그
전체 방문자
오늘
어제
  • 🥇Home (100)
    • 👨🏻‍💻Infra (73)
      • 🌐Network (4)
      • 🐧Linux (27)
      • 🌎Cloud (9)
      • ⚫️Virtualization (2)
      • 🐳Docker & Kubernetes (1)
      • 🟦WEB & WAS (18)
      • 🟩IaC (0)
      • 🟨CI & CD (0)
      • ⚙️Application (6)
      • 💻Monitoring (2)
      • 📡HA (4)
    • 👨🏻‍💻Development (3)
      • 💻Frontend (2)
      • 💾Backend (0)
      • 🐍Bash (1)
    • 💾Data (16)
      • 🧩Database (13)
      • 📁Storage (3)
    • 🎓BBS (5)
    • 👨‍👧‍👧Git (0)

최근 글

인기 글

최근 댓글

태그

  • 톰캣 버전 노출
  • pcs
  • Tomcat HTTP 헤더
  • 라이믹스
  • 다음 카카오 주소API
  • CentOS6 PostgreSQL
  • CentOS8 PostgreSQL
  • 톰캣 HTTP 헤더
  • 레드마인
  • 카카오 주소API
  • xe
  • Redmine
  • 레드마인 테마
  • 다음 주소API
  • Tomcat 버전 노출
  • 보안
  • tomcat
  • 웹방화벽
  • RHCS
  • 톰캣
  • 제로보드
  • pacemaker
  • log4j 취약점
  • 취약점
  • Tomcat 취약점
  • nginx
  • WAF
  • CentOS7 PostgreSQL
  • GFS2
  • 방화벽

티스토리

hELLO · Designed By 정상우.
공개하기부끄러운블로그

공개하기부끄러운블로그

👨🏻‍💻Infra/🐧Linux

[Linux] 대기상태 D(uninterruptible sleep) PID 죽이기

2020. 4. 1. 11:17
반응형

http://www.novell.com/support/kb/doc.php?id=7002725

http://ssambback.tistory.com/115

 

리눅스 시스템을 운영하다 보면  시스템 Hang-up에 대한  문제점을 많이 들어나게 됩니다. 물론  리눅스 시스템 
자체의 문제점이라고 보다는 특정 운영 프로세스에 대해서 인터럽트 또는 스케쥴이 정상적으로 진행되지 못했을때 나타는 문제점에 대해서 간략해 소개해 보고자 합니다.

갑자기 시스템  로그에서 출력하게된 /var/log/message 의 시스템 로그.

kernel: INFO: task startup.sh:9902 blocked for more than 120 seconds.
 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this messag
 kernel: startup.sh    D 0000000000000008     0  9902   7811 0x00000004
 kernel: ffff880828f17ce8 0000000000000082 ffff88081c2aeaa0 ffff88081c2aeaa0
 kernel: ffff88081c2aeaa0 ffffea00378c0d98 ffff88081c2aeaa0 0000010100001e60
 kernel: ffff88081c2af058 ffff880828f17fd8 000000000000fb88 ffff88081c2af058
 kernel: Call Trace:
 kernel: [<ffffffffa00accf0>] ? ext4_file_open+0x0/0x130 [ext4]
 kernel: [<ffffffff814eae85>] schedule_timeout+0x215/0x2e0
 kernel: [<ffffffff81174234>] ? nameidata_to_filp+0x54/0x70
 kernel: [<ffffffff81268d39>] ? cpumask_next_and+0x29/0x50
 kernel: [<ffffffff814eab03>] wait_for_common+0x123/0x180
 kernel: [<ffffffff8105fa40>] ? default_wake_function+0x0/0x20
 kernel: [<ffffffff814eac1d>] wait_for_completion+0x1d/0x20
 kernel: [<ffffffff8106155c>] sched_exec+0xdc/0xe0
 kernel: [<ffffffff8117ee90>] do_execve+0xe0/0x2c0
 kernel: [<ffffffff810095ea>] sys_execve+0x4a/0x80
 kernel: [<ffffffff8100b4ca>] stub_execve+0x6a/0xc0

[예상 문제점 1]
시스템 로그에서 나타난  kernel:INFO: task 의 메세지를 나타내는 의미는 현재 운영하고자 하는 startup.sh 
스크립트에 대해서  120초 (2분 default) 동안 khungtaskd  쓰레드에서 D-state 상태를 감지하여  call trace 
를 호출하게 되는  상황으로 예측할 수 있습니다. 

[예상 문제점2]
시스템의 성능저하 특히 레드햇의 보고서에 의하면 디스크의 heavy I/O 로 나타나는 문제점으로 
예측될수 있습니다. 

[예상 문제점 2]
운영되고 있는 Application에 대해서 "D-state" (Uninterruptible sleep) 모드가 120초 동안 지속되었을때
예측될수 있는 문제로  해당 프로세스가 정상적으로 스케쥴링이 일어나지 않았을 때도 나타나게 됩니다

[ D-state 원인분석을 위해서는 ? ]
위와같은 문제점에 대해서 접근할수 있는 기본적인 방법에 대해서는  정확한 문제점을  파악하기 위해서는  커널의 덤프를 이용하여 core를 분석하는 것이 가장 정확할수 있습니다. core를 분석하기 위한 방법론에 대해서는 다음 
블로깅을 통하여 소개하도록 하겠습니다. 

# echo 1 > /proc/sys/kernel/hung_task_panic

위와 같이  kernel core를  생성하기 위해 설정을 진행한 후 동일한 현생이 발생되어 core가 생성이 되면 문제가
되는 운영 프로세스의 D-state 문점에 대해서 분석이 가능합니다. 

[ hung_task_timeout을 Disable 시켜라]
기본적인 Work-Arround에 대해서는  아래와 같이 hung_task_timeout 부분에 대해서 Disable 시켜주는 것을 권장하고 있습니다. 

#  echo 0 > /proc/sys/kernel/hung_task_timeout_secs

위와 같이  커널에서 Hang Time OUt 을 체크하는 부분에 대해서 Disable 시켜준 후에는  call trace 여부가 지속적으로 발생되는지  모니터링이 필요합니다. 만약  해당 프로세스에 대해서  Uninterrupt sleep이 지속적으로 발생한다면 커널 업데이트 또한 고려해야 합니다. 

 

※ samba hang up현상은....결국은 리부팅으로 해결...

반응형
저작자표시 (새창열림)

'👨🏻‍💻Infra > 🐧Linux' 카테고리의 다른 글

APM configure 옵션 확인  (0) 2020.05.08
SSH key 생성하기  (0) 2020.04.28
[Linux] 깃허브란  (0) 2020.03.31
[Linux] http -> https 주소 리다이렉트 시키기  (0) 2020.03.27
미들웨어 개념 및 종류  (0) 2020.03.05
    '👨🏻‍💻Infra/🐧Linux' 카테고리의 다른 글
    • APM configure 옵션 확인
    • SSH key 생성하기
    • [Linux] 깃허브란
    • [Linux] http -> https 주소 리다이렉트 시키기
    공개하기부끄러운블로그
    공개하기부끄러운블로그
    IT 기술 블로그

    티스토리툴바