Score:2

Apache "ค้าง" สองสามครั้งต่อวัน

ธง in
JYD

ฉันเขียนที่นี่หลังจากใช้เวลาหลายสัปดาห์ในการต่อสู้กับปัญหาที่ทำให้ Apache หยุดตอบสนองจนกว่าจะรีสตาร์ท มันเกิดขึ้น 3/4 ครั้งต่อวัน บางครั้งหลังจากชั่วโมง บางครั้งหลังจากบางนาที บางครั้งหลังจากวัน ไม่มีความสัมพันธ์ (อย่างน้อยก็ไม่มีหลักฐาน) กับจำนวนการเชื่อมต่อพร้อมกันกับเซิร์ฟเวอร์: เกิดขึ้นทั้งในช่วงเวลาที่มีการจราจรคับคั่ง (ระหว่าง 8.00 น. - 18.00 น.) และในช่วงกลางคืนที่มีการเข้าถึงต่ำมาก

การกำหนดค่า: VM บน Vmware ESXi Rel 7 - ระบบปฏิบัติการ: Ubuntu 20.04, Apache 2.4.41, PHP 8.0.15, ไดรเวอร์ MSSQL 17.8.1.1-1 6 CPU "Xeon(R) Gold 5218", แรม 12Gb. 3 เว็บไซต์ที่ทำงานด้วย PHP "บริสุทธิ์" (ไม่มี CMS เช่น Wordpress, Drupal, Ruby On Rails เป็นต้น) Awstats แสดงให้เห็นว่าอินทราเน็ตที่ไม่มีการเข้าถึงจากภายนอกให้บริการ < 10,000 หน้าต่อวัน ส่วนอีกประมาณ 200,000 หน้าให้บริการต่อวัน การใช้งาน CPU ส่วนใหญ่อยู่ที่ประมาณ 1% และหน่วยความจำที่ใช้ประมาณ 2Gb เมื่อเกิดปัญหาขึ้น จะไม่พบ "spikes" ของ CPU/หน่วยความจำ/เครือข่าย

ในขณะนั้นฉันติดตั้งและกำหนดค่า โมนิท ที่ทดสอบทุกๆ 20 วินาทีด้วยการขดหน้าเว็บ PHP ขั้นต่ำนี้:

<?php
echo "ok";
?>

โดยปกติจะพิมพ์ "ตกลง" ในช่วง "หยุด" แม้แต่หน้าธรรมดานี้ก็ไม่แสดง curl จบลงด้วยข้อผิดพลาดการหมดเวลาและทริกเกอร์ monit เพื่อทำการ "เริ่มบริการ apache2 ใหม่" หลังจากผ่านไป 2/3 วินาที เว็บไซต์จะกลับมาทำงานตามปกติ (จนกว่าจะหยุดทำงานครั้งต่อไป)

ติดตามรายการการแก้ไขที่ไม่สำเร็จ (ไม่เรียงตามลำดับเวลา):

  • ลบ certbot-Letsencrypt และใช้ Sectigo ที่ซื้อ SSL cerificate
  • เปลี่ยน Apache จาก mpm_worker เป็น mpm_event
  • ปิดใช้งานโมดูลของ Apache ที่ไม่ได้ใช้จำนวนมาก
  • ปิดใช้งานโมดูลของ PHP ที่ไม่ได้ใช้จำนวนมาก
  • ปิดใช้งานงาน cron ที่ไม่สำคัญส่วนใหญ่ (แม้ว่าจะไม่มีหลักฐานว่าการหยุดทำงานเกิดขึ้นระหว่างการดำเนินการงาน cron)
  • เปลี่ยนอะแดปเตอร์เครือข่ายเสมือนจาก VMXNET3 เป็น E1000
  • เปิดใช้งานการบันทึกแบบละเอียด: ไม่มีการบันทึกข้อมูลที่เป็นประโยชน์/ข้อผิดพลาด เพียงแค่มีช่องว่างเวลา 25-30 วินาทีจากหน้าสุดท้ายที่แสดงผลก่อนที่จะหยุดการเสิร์ฟครั้งแรกเมื่อการรีสตาร์ทเสร็จสมบูรณ์
  • เปิดใช้งานเป็นบางวัน mod_log_forensic: ไม่มี (!) รายงานข้อผิดพลาดโดยใช้ยูทิลิตี้ check_forensic
  • ตรวจสอบกฎการเขียนซ้ำสองสามข้อใน .conf และ .htaccess
  • เปลี่ยนการกำหนดค่าของ Apache; ค่าที่เกี่ยวข้องคือ:
    สตาร์ทเซิร์ฟเวอร์ 10
    MinSpareThreads 40
    MaxSpareThreads 120
    ขีด จำกัด ของเธรด 100
    กระทู้ต่อเด็ก 75
    MaxRequestWorkers 450
    MaxConnectionsPerChild 1,000

ไม่มีความสัมพันธ์ที่ชัดเจนระหว่างหน้า/ไฟล์ "สุดท้าย" ที่แสดงก่อนเกิดปัญหา: บางครั้งเป็นหน้า PHP (เห็นได้ชัดว่าไม่เหมือนกัน) บางครั้งเป็นรูปภาพ png/jpeg การอ่านบันทึก ฉันไม่พบคำขอของลูกค้าที่ผิดปกติ/ผิดรูปแบบ/มากเกินไป

ปัญหาเกี่ยวข้องกับ Apache 99.99% บริการ PHP-fpm ทำงานได้อย่างสมบูรณ์และไม่จำเป็นต้องรีสตาร์ทหลังจากหยุดทำงาน บริการที่ทำงานอยู่ของเซิร์ฟเวอร์อื่นทั้งหมดจะไม่ได้รับผลกระทบ

ก่อนเขียนที่นี่ ฉันอ่านหน้าเว็บมากมายแต่ไม่พบคำใบ้ที่เป็นประโยชน์ (สำหรับฉัน) เลย

ขอบคุณใน adv

เฉียว

ปปส

jp flag
เมื่อ Apache ค้าง ตรวจสอบสถานะกระบวนการด้วย `ps` ตรวจสอบ Apache `mod_status` ใช้ `strace` เพื่อดูว่ากระบวนการกำลังทำอะไรอยู่
fr flag
บางทีจำนวนเธรด httpd อาจส่งผลต่อสิ่งนี้ เนื่องจากเป็นเครื่องเสมือนอาจทำงานบนไฮเปอร์ไวเซอร์ที่มีหน่วยความจำ ram balooning?
in flag
JYD
@อเล็กซ์ ฉันเพิ่ม strace ลงในไฟล์แล้วฉันจะโพสต์ผลลัพธ์ที่นี่
in flag
JYD
@kazak ไม่มีหน่วยความจำ "balloned" จอภาพ ESX แสดง 0 KB เสมอ 12Gb ทั้งหมดสงวนไว้สำหรับ VM นี้
in flag
JYD
ในที่สุดก็ได้มา!!!!
in flag
JYD
ปัญหาคือ daemon "incron" missconfigured ของระบบไฟล์และปิดใช้งานบันทึก ในไฟล์การกำหนดค่า หนึ่งในเหตุการณ์ที่รับชมมีคำสั่ง Escape ที่ไม่ถูกต้อง เมื่อฉันเปิดใช้งานไฟล์บันทึกของ incron .log จะเริ่มเติบโตหลายร้อยบรรทัด/วินาที และมีขนาดถึงหลายสิบ MB อย่างรวดเร็ว พฤติกรรมแปลก ๆ นี้เกิดจากการหลบหนีถ่านที่ไม่ถูกต้องในไฟล์ conf: ในบรรทัดมี "$\" แทนที่จะเป็น "\$" ทำให้มีสภาพการแข่งขันที่ซ้ำซ้อนมาก แก้ไขแล้ว อาการค้างของ apache หายไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา