เซิร์ฟเวอร์ที่โหลดสูงอาจทำให้เกิดการค้างและข้อผิดพลาด“ ถูกบล็อกนานกว่า 120 วินาที”


17

กำลังใช้งานเซิร์ฟเวอร์ VM และ 'baremetal' สองสามเครื่อง Java ทำงานบนที่สูง - มากกว่า 400% + ในบางครั้ง เซิร์ฟเวอร์สุ่มค้างกับข้อผิดพลาดในคอนโซล "java - ถูกบล็อคนานกว่า 120 วินาที" - kjournald เป็นต้น

ฉันไม่สามารถรับเอาต์พุต dmesg ได้ด้วยเหตุผลบางประการข้อผิดพลาดนี้จะเขียนไปยังคอนโซลซึ่งฉันไม่สามารถเข้าถึงได้เนื่องจากนี่โฮสต์จากระยะไกล ดังนั้นฉันไม่สามารถคัดลอกการติดตามแบบเต็ม

ฉันเปลี่ยนสภาพแวดล้อมที่เปิดอยู่แม้กระทั่งเซิร์ฟเวอร์จริงและก็ยังเกิดขึ้นอยู่

ผมเปลี่ยน hung_task_timeout_secs 0 กรณีนี้เป็นเท็จบวกตามhttp://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/deployment.html

นอกจากนี้ยังไม่ได้ติดตั้ง irqbalance บางทีมันอาจจะช่วยได้?

นี่คือ Ubuntu 10.04 64 บิต - ปัญหาเดียวกันกับเซิร์ฟเวอร์ 2.6.38-15 ล่าสุดและ 2.6.36

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โดยเฉพาะอย่างยิ่งการติดตามสแต็คที่ตามมาหรือไม่

ยิ่งกว่านั้นนี่ไม่ใช่สิ่งที่ผิดพลาด สิ่งนี้ไม่ได้บอกว่างานนั้นถูกแขวนไว้ตลอดกาลและข้อความนั้นถูกต้องสมบูรณ์ นั่นไม่ได้หมายความว่าเป็นปัญหาสำหรับคุณและคุณสามารถตัดสินใจเพิกเฉยได้หากคุณไม่สังเกตเห็นผลกระทบใด ๆ จากผู้ใช้

สิ่งนี้ไม่สามารถเกิดจาก:

  • ปัญหาซีพียู (หรือมากกว่านั้นจะเป็นความล้มเหลวของฮาร์ดแวร์ที่ไม่น่าจะเป็นไปไม่ได้)
  • ปัญหาหน่วยความจำ (เป็นไปไม่ได้มากที่ฮาร์ดแวร์จะล้มเหลว แต่จะไม่เกิดขึ้นหลายครั้งไม่ขาด RAM ตามกระบวนการoom-killed)
  • ขาดการแลกเปลี่ยน ( oom-killerอีกครั้ง)

หากต้องการขยายคุณอาจตำหนิได้หากขาดหน่วยความจำในแง่ที่ทำให้ระบบการแคชข้อมูลใน RAM ของคุณไม่เพียงพอจะทำให้ I / O มากขึ้น แต่มันก็ไม่ได้ตรงไปตรงมาเหมือน "หน่วยความจำไม่เพียงพอ"


ไม่มีอะไรถูกบันทึกลงใน / var / log / dmesg ดังนั้นฉันเพิ่งวางสิ่งที่คอนโซลแสดง .. เมื่อสิ่งนี้ปรากฏว่าระบบหยุดทำงาน 100%
Tee

ข้อความนี้มาจากเคอร์เนลซึ่งจะปรากฏในdmesg(หากถูกบันทึกเมื่อเร็ว ๆ นี้) เนื่องจากคำสั่งนี้พิมพ์บัฟเฟอร์การบันทึกเคอร์เนลของเคอร์เนล หวังว่าsyslogการตั้งค่าของคุณจะเข้าสู่ระบบที่ใดที่หนึ่ง/var/logแต่ฉันไม่รู้ว่าอยู่ที่ไหน
Pierre Carrier

ข้อความจะไม่ปรากฏขึ้น/var/log/dmesgแต่อาจปรากฏขึ้นเมื่อคุณเรียกใช้dmesgคำสั่ง ไฟล์ถูกสร้างขึ้นระหว่างขั้นตอนการบู๊ตและโดยทั่วไปจะเก็บเฉพาะข้อความเคอร์เนลเวลาบูต (ซึ่งในที่สุดจะเลื่อนออกจากบัฟเฟอร์วงแหวนเคอร์เนล) คุณสามารถติดตั้ง / เปิดใช้งานsysstatและดูการใช้ทรัพยากรได้ตามที่รายงานฉันสงสัยว่าดิสก์ I / O / iowait อาจเกี่ยวข้องกับการแลกเปลี่ยน (sysstat จะช่วยในการระบุนี้)
ดร. Edward Morbius

@ Dr.EdwardMorbius แล้วเราจะแก้ไขได้อย่างไร ฉันมีปัญหาสำคัญเกี่ยวกับเรื่องนี้กับเซิร์ฟเวอร์ Zimbra ของเราซึ่งทำงานได้ดีในสภาพแวดล้อมการผลิตจนกระทั่งเมื่อไม่นานมานี้
ลำเอียง

@ ไม่เสมอ: ขออภัยในความล่าช้าฉันไม่ได้มาที่นี่บ่อย สั้น ๆ : คุณจะต้องโพรไฟล์กระบวนการ Java ของคุณและหาสาเหตุที่ทำให้แขวนอยู่ การรวบรวมขยะเป็นส่วนหนึ่งที่ฉันมีปัญหา (และประสบความสำเร็จ) ในการปรับแต่ง ค้นหาการออกแบบตามหลักสรีรศาสตร์ของ JVM คอลเลคชันและดูoracle.com/technetwork/java/javase/gc-tuning-6-140523.htmlฉันพบว่าฮีปที่เพิ่มขึ้นช่วยได้อย่างชัดเจน
ดร. เอ็ดเวิร์ดมอร์เบี

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/... "โดยค่าเริ่มต้นลีนุกซ์ใช้หน่วยความจำที่มีอยู่สูงสุดถึง 40% สำหรับการแคชระบบไฟล์หลังจากทำเครื่องหมายนี้แล้วระบบไฟล์จะล้างข้อมูลที่ค้างอยู่ทั้งหมดลงในดิสก์ซึ่งทำให้ IO ต่อไปนี้หมดไป การ จำกัด เวลา 120 วินาทีโดยค่าเริ่มต้นในกรณีที่นี่ระบบย่อย IO ไม่เร็วพอที่จะล้างข้อมูลภายใน ... "
Peter M

2

ฉันเพิ่งพบข้อผิดพลาดนี้ในหนึ่งในกลุ่มการผลิตของเรา:

11 พ.ย. 14:56:41 xxx เคอร์เนล: INFO: task xfsalloc / 3: 2393 ถูกบล็อคนานกว่า 120 วินาที

11 พฤศจิกายน 14:56:41 Xxxx เคอร์เนล: ไม่บริสุทธิ์ 2.6.32-504.8.1.el6.x86_64 # 1

11 พ.ย. 14:56:41 xxx: "echo 0> / proc / sys / kernel / hung_task_timeout_secs" ปิดใช้งานข้อความนี้

..

ในการตรวจสอบเพิ่มเติมของบันทึก sar พบว่าการรอ IO เพิ่มขึ้นในช่วงเวลาเดียวกัน

และเมื่อตรวจสอบฮาร์ดแวร์ (ดิสก์ทางกายภาพ) เห็นข้อผิดพลาดขนาดกลางและข้อผิดพลาด SCSI อื่น ๆ ได้เข้าสู่ระบบหนึ่งดิสก์ทางกายภาพซึ่งในทางกลับกันคือการปิดกั้น IOs เนื่องจากขาดทรัพยากรในการจัดสรร

11/11/15 19:52:40: สิ้นสุด pRdm 607b8000 ค่าสถานะ = 0 TimeOutC = 0 RetryC = 0 ร้องขอ c1173100 ตอบกลับ 60e06040 iocStatus 0048 retryC 0 devId: 3 devFlags = f1482005 iocLogInfo: 31140000

11/11/15 19:52:40: DM_ProcessDevWaitQueue: งาน mgmt ในกระบวนการ devId = x 11/11/15 19:52:40: DM_ProcessDevWaitQueue: งาน mgmt ในกระบวนการ devId = x

ดังนั้นนี่เป็นเพราะข้อผิดพลาดของฮาร์ดแวร์ในคลัสเตอร์ของเรา

ดังนั้นมันจะดีถ้าคุณสามารถตรวจสอบไฟล์ core และถ้ามีโปรแกรมอรรถประโยชน์ ipmi อยู่ให้ตรวจสอบคำสั่ง ipmiutil / ipmitool sel elist เพื่อตรวจสอบปัญหา

ขอแสดงความนับถือ VT


0

คุณสามารถไปที่อินเทอร์เฟซการตรวจสอบของผู้ให้บริการคลาวด์ของคุณและตรวจสอบว่าคุณไม่ได้เกิน IOPS สูงสุดที่ระบุไว้สำหรับการจัดเก็บของคุณที่จะอธิบายว่าทำไมมันใช้เวลานานในการล้างข้อมูลแคช
IOps สูงสุดมีอยู่ในหน้าแอตทริบิวต์การจัดเก็บ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.