높은로드로 인해 서버가 정지되고 "120 초 이상 차단"오류가 발생할 수 있습니까?


17

현재 몇 개의 VM 및 '베어 메탈'서버가 실행 중입니다. Java는 때때로 400 % 이상에서 실행되고 있습니다. 콘솔 "java-120 초 이상 차단됨"-kjournald 등의 오류로 서버가 임의로 정지됩니다.

어떤 이유로 든이 오류는 콘솔에 기록하기 때문에 dmesg 출력을 얻을 수 없습니다. 이는 원격으로 호스팅되므로 액세스 할 수 없습니다. 따라서 전체 추적을 복사 할 수 없습니다.

나는 이것이 물리적 서버조차도있는 환경을 바꿨으며 여전히 일어나고 있습니다.

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/deployment.html에 따라 거짓 양성인 경우 hung_task_timeout_secs를 0으로 변경했습니다 .

또한 irqbalance가 설치되어 있지 않습니다. 아마도 도움이 되겠습니까?

이것은 최신 2.6.38-15 서버 및 2.6.36에서 우분투 10.04 64 비트와 동일한 문제입니다.

CPU 또는 메모리 문제 / 스왑이 남지 않아이 문제가 발생할 수 있습니까?

콘솔 메시지는 다음과 같습니다.

[58Z?Z1.5?Z840] INFUI task java:21547 blocked for more than 120 seconds.
[58Z?Z1.5?Z986] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z06Z] INFUI task kjournald:190 blocked for more than 120 seconds.
[58Z841.5?Z336] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z600] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z841.5?Z90?] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?3413] INFUI task java:21547 blocked for more than 120 seconds.
[58Z841.5?368Z] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?ZZ36] INFUI task kjournald:60 blocked for more than 120 seconds.
[58Z961.5?Z6Z5] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?31ZZ] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z961.5?3393] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.

답변:


15

그렇습니다.

이것이 의미하는 바는 명백하다. 커널은 120 초 동안 작업을 예약 할 수 없었다. 이것은 종종 디스크 액세스와 관련된 리소스 부족을 나타냅니다.

irqbalance도움이 될 수 있지만 분명하게 들리지는 않습니다. 에서이 메시지의 주변 dmesg, 특히 그 뒤에 오는 스택 추적을 제공 할 수 있습니까?

더욱이 이것은 오 탐지 가 아닙니다 . 이것은 그 과제가 영원히 중단되었다고 말하는 것이 아니며 , 그 진술은 완벽하게 정확합니다. 그렇다고해서 문제가되는 것은 아니며 사용자에게 영향을주지 않으면 무시하기로 결정할 수 있습니다.

다음과 같은 이유로 발생할 수 없습니다.

  • CPU 문제 (또는 오히려 하드웨어 오류가 발생할 수 있음)
  • 메모리 문제 (매우 하드웨어 오류는 발생하지만 여러 번 발생하지는 않습니다. 프로세스로 인해 RAM이 부족하지 않음 oom-killed),
  • 스왑 부족 ( oom-killer다시).

확장하면, RAM에서 데이터 캐싱 시스템을 박탈하면 더 많은 I / O가 발생한다는 점에서 메모리 부족으로이를 비난 할 수 있습니다. 그러나 "메모리 부족"만큼 간단하지는 않습니다.


/ var / log / dmesg에 기록 된 내용이 없으므로 콘솔에 표시된 내용을 붙여 넣었습니다.이 메시지가 나타나면 시스템이 100 % 중단 된 것입니다.
Tee

이 메시지는 커널에서 온 것으로, dmesg이 명령이 커널 로깅 링 버퍼를 인쇄 할 때 (최근에 기록 된 경우)에 나타납니다 . 바라건대 당신의 syslog설정도 어딘가에서 그것을 기록합니다 /var/log,하지만 난 곳을 알 수 없었다.
Pierre Carrier

이 메시지는 것입니다 NOT 에 표시 /var/log/dmesg하지만, 당신이 실행할 때까지 설정 dmesg명령을 사용합니다. 파일은 부팅 과정에서 생성되며 일반적으로 부팅시 커널 메시지 만 캡처합니다. 그렇지 않으면 결국 커널 링 버퍼에서 스크롤됩니다. sysstat보고 된대로 리소스 사용률을 설치 / 활성화 하고 확인할 수 있습니다 . 디스크가 의심됩니다. I / O / iowait, 스와핑과 관련이있을 수 있음 (sysstat가이를 식별하는 데 도움이 될 것입니다)
Dr. Edward Morbius

@ Dr.EdwardMorbius 어떻게이 문제를 해결합니까? 최근까지 프로덕션 환경에서 훌륭하게 실행되는 Zimbra 서버와 관련하여 중요한 문제가 있습니다.
Lopsided 2014 년

@Lopsided : 늦어서 죄송합니다. 자주 여기에 없습니다. 간단히 말해서, Java 프로세스를 프로파일 링하고 왜 중단되는지 알아 내야합니다. 가비지 콜렉션은 튜닝에서 문제가 있고 성공한 영역 중 하나입니다. JVM 가비지 수집 ergodymics를 찾거나 oracle.com/technetwork/java/javase/gc-tuning-6-140523.html을 참조하십시오 . 힙 증가가 현저히 도움이된다는 것을 알았습니다.
Dr. Edward Morbius

6
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

그런 다음 변경 사항을 커밋하십시오.

sudo sysctl -p

나를 위해 그것을 해결 ....


6
각 설정이 무엇을하는지 설명해야합니다.
kasperd

6
도커 환경에서와 비슷한 문제가 해결되었습니다. 여기에 대한 설명을 발견 : blackmoreops.com/2014/09/22/...를 . "기본적으로 Linux는 파일 시스템 캐싱에 사용 가능한 메모리의 최대 40 %를 사용합니다.이 표시에 도달하면 파일 시스템은 모든 미해결 데이터를 디스크로 플러시하여 다음 IO가 모두 동기화됩니다.이 데이터를 디스크로 플러시하려면 기본적으로 120 초의 시간 제한입니다.이 경우 IO 하위 시스템이 데이터를 플러시 할만큼 빠르지 않습니다 ... "
Peter M

2

최근 프로덕션 클러스터 중 하나 에서이 오류를 겪었습니다.

11 월 11 일 14:56:41 xxx 커널 : 정보 : 작업 xfsalloc / 3 : 2393이 120 초 이상 차단되었습니다.

11 월 11 일 14:56:41 Xxxx 커널 : 오염되지 않음 2.6.32-504.8.1.el6.x86_64 # 1

11 월 11 일 14:56:41 xxx : "echo 0> / proc / sys / kernel / hung_task_timeout_secs"는이 메시지를 비활성화합니다.

..

sar 로그를 추가로 확인한 결과 IO 대기 시간이 증가했습니다.

그리고 하드웨어 (물리 디스크)를 확인하자마자 매체 오류와 다른 SCSI 오류가 하나의 물리 디스크에 기록되어 할당 할 리소스가 부족하여 IO를 차단하고있었습니다.

15/11/15 19:52:40 : 종료 된 pRdm 607b8000 flags = 0 TimeOutC = 0 재시도 C = 0 요청 c1173100 응답 60e06040 iocStatus 0048 재시도 0 devId : 3 devFlags = f1482005 iocLogInfo : 31140000

11/11/15 19:52:40 : DM_ProcessDevWaitQueue : devId = x 프로세스의 태스크 mgmt 11/11/15 19:52:40 : DM_ProcessDevWaitQueue : devId = x 프로세스의 태스크 mgmt

클러스터의 하드웨어 오류 때문입니다.

따라서 코어 파일을 확인할 수 있고 ipmi 유틸리티가 있으면 ipmiutil / ipmitool sel elist 명령을 확인하여 문제를 확인하십시오.

감사합니다, VT


0

클라우드 공급자의 모니터링 인터페이스로 이동하여 스토리지에 지정된 최대 IOps를 초과하지 않았는지 확인할 수 있는데, 이는 캐시 데이터를 플러시하는 데 시간이 오래 걸린 이유를 설명합니다.
최대 IOps는 스토리지 속성 페이지에서 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.