Score:1

พนักงาน Apache MPM ติดอยู่ใน G (จบอย่างงดงาม) เติบโต - "สกอร์เต็ม"

ธง us

เรียกใช้ผู้ปฏิบัติงาน MPM, Apache 2.4.46, Debian 9

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

ฉันไม่เชื่อว่ามันไม่มีส่วนเกี่ยวข้องกับโค้ดเว็บไซต์ของฉัน (php) เนื่องจากคำขอที่หยุดทำงานจำนวนมากเป็นเพียง GET รูปภาพล้วน ๆ ไม่เกี่ยวข้องกับ php

ป้อนคำอธิบายรูปภาพที่นี่

<IfModule mpm_worker_module>
ServerLimit 500
StartServers       10
MinSpareThreads    50
MaxSpareThreads    100
    ThreadLimit          64
    ThreadsPerChild      64
    MaxRequestWorkers     500
    MaxConnectionsPerChild   0
</IfModule>

ป้ายบอกคะแนน ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่าง g คนงาน ป้อนคำอธิบายรูปภาพที่นี่

apache ตลอดสัปดาห์ ช่องฟรีลดน้อยลง ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

พยายามเปิดและปิด Keep Live

ป้อนคำอธิบายรูปภาพที่นี่

us flag
ที่ฉันอยู่ตอนนี้คือฉันรู้ว่า G ติด PID ที่แสดงในสถานะ apache ไม่ทำงานด้วยซ้ำ ?? > kill 21734 sh: 1: kill: ไม่มีกระบวนการดังกล่าว
Score:1
ธง jo

เมื่อคุณใช้ผู้ปฏิบัติงาน MPM คำขอจะได้รับการจัดการโดยเธรดที่มีอยู่ในกระบวนการ

จาก https://httpd.apache.org/docs/2.4/mod/worker.html

กระบวนการควบคุมเดียว (พาเรนต์) มีหน้าที่รับผิดชอบในการเรียกใช้กระบวนการย่อย กระบวนการลูกแต่ละกระบวนการจะสร้างเธรดเซิร์ฟเวอร์ในจำนวนคงที่ตามที่ระบุในคำสั่ง ThreadsPerChild เช่นเดียวกับเธรดตัวฟังที่รับฟังการเชื่อมต่อและส่งต่อไปยังเธรดเซิร์ฟเวอร์เพื่อประมวลผลเมื่อมาถึง

บน Linux กระบวนการ 'มี' เธรด นั่นคือ PID หนึ่งสามารถมีได้หลายเธรดซึ่งใช้หน่วยความจำร่วมกัน (ท่ามกลางทรัพยากรอื่นๆ) กับเธรดอื่นๆ ใน PID นั้น

ตามความเป็นจริงแล้ว Linux สนใจเฉพาะ 'งาน' เท่านั้น กระบวนการที่ไม่ใช่มัลติเธรดคือ PID ที่มีคอนเทนเนอร์ หนึ่ง งาน.

เมื่อคุณโหลด Apache ใหม่อย่างนุ่มนวล แสดงว่าคุณกำลังยุติกระบวนการที่มีอยู่ สิ่งที่เกิดขึ้นที่นี่คือ Apache ทำให้แต่ละเธรดรอจนกว่าเธรดทั้งหมดในกระบวนการบรรจุจะเสร็จสิ้นก่อนที่จะรีสตาร์ทคอนเทนเนอร์ PID

ดังนั้น ในกรณีของคุณ คุณมีเธรดเดียวที่อยู่ในกระบวนการทั้งหมดในรายการนั้นซึ่งยังไม่ว่างหรือติดค้างอยู่

คุณมีตัวเลือกไม่กี่อย่าง

  1. เพียงแค่เลิกรอแล้วเริ่มต้นใหม่
  2. ค้นหาเธรดปัญหา (อาจเป็นข้อผิดพลาดในแอปพลิเคชัน) และแก้ไข

1 เป็นเรื่องง่าย เพิ่มตัวเลือกการกำหนดค่า สง่างามShutdownTimeout ด้วยมูลค่าที่สูงแต่ไม่โง่ พูด 900 วินาที ตามค่าดีฟอลต์ ค่านี้จะไม่มีที่สิ้นสุด ซึ่งหมายความว่าเธรดของคุณรอตลอดไปเพื่อให้เธรดปัญหาของคุณเสร็จสิ้น

ข้อเสียเปรียบหลักคือคุณมีโอกาสชนกับกระบวนการระหว่างทำสิ่งที่สำคัญ ซึ่งการยกเลิกอาจทำให้ไฟล์เสียหายหรือทำให้แอปพลิเคชันเสียหายได้ คุณยังเรียกใช้โอกาส (น้อยมาก) ในการยกเลิกไคลเอนต์ระหว่างการประมวลผล

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

us flag
ก่อนอื่นขอขอบคุณสำหรับคำตอบของคุณ บางอย่าง (หลายงานต่อ pid) ของสิ่งที่คุณพูดนั้นเกี่ยวข้องและสมเหตุสมผลและให้เบาะแสบางอย่างแก่ฉัน แต่สิ่งที่คุณพูดเกี่ยวกับการรีสตาร์ท apache อย่างสง่างามฉันไม่เชื่อว่าเกี่ยวข้องเนื่องจาก GracefulShutdownTimeout afaik เกี่ยวข้องกับพฤติกรรมของ apache เท่านั้น เมื่อคุณออกการรีสตาร์ท ฉันไม่ได้ออกการรีสตาร์ท ปัญหาของฉันเกิดขึ้นเมื่อเวลาผ่านไป ไม่มีการรีสตาร์ท สิ่งที่ฉันตรวจสอบคืองานทั้งหมดที่มี PID เดียวกัน อาจมีกระบวนการ PHP ภายในรายการที่หยุดทำงาน
us flag
ยังคงเกิดขึ้น ฉันตรวจสอบ PID ของฉัน และไม่มีงาน PHP ในเธรด G ที่ติดอยู่...จึงไม่แน่ใจว่าเกิดอะไรขึ้น มีเพียงคำขอภาพนิ่ง/เนื้อหาเท่านั้นที่ไม่เคยจบสิ้นอย่างงดงาม
us flag
ดังนั้นฉันจึงได้แนวคิดว่าสถานะเซิร์ฟเวอร์ apache แสดงเฉพาะไฟล์คงที่ ไม่ใช่กิจกรรม php-fpm ซึ่งกลายเป็นกรณีนี้ ดังนั้นฉันจึงตั้งค่าสถานะ php-fpm เพื่อให้ฉันสามารถเห็นได้ว่าเป็นอย่างไร เป็นไปได้ว่าเป็นสิ่งที่แขวนอยู่และฉันก็ตั้งค่าบันทึกช้าเพื่อจับมันด้วย https://gist.github.com/Jiab77/a9428050ab9bb3f17c5e33343da94fd8
us flag
แต่ก็ยังไม่มีโชค ฉันตั้งค่าการตรวจสอบกระบวนการ php และ pid ไม่ได้อยู่ในนั้นซึ่งติดอยู่ใน G และฉันรู้ว่าฉันไม่จำเป็นต้องทำเช่นนั้นด้วยซ้ำ เพราะฉันสามารถดูรายการกระบวนการที่กำลังทำงานสำหรับ PID ที่ติดอยู่ได้ ! ดังนั้นดูเหมือนว่า pid ไม่ทำงาน แต่ apache คิดว่าเป็นเช่นนั้นหรืออยู่ในสถานะบางอย่างที่ทำให้ไม่แสดงในการแสดงกระบวนการปกติ ???

โพสต์คำตอบ

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