ดังนั้นสำหรับบริบท ฉันใช้ PHP-FPM 7.4 บน Ubuntu และคอมไพล์ด้วย ZTS จากนั้นเพิ่มส่วนขยาย Pthreads และ ZSTD
ฉันกำลังทำงานสองสามร้อยงานและฉันต้องการให้พวกเขาสร้างกระบวนการ php ใหม่ให้เร็วที่สุดเท่าที่จะเป็นไปได้ แต่หลังจากการทดสอบหลายครั้ง ฉันรู้ว่าแม้ว่าสคริปต์ของฉันทำงานใน 0.001 วินาที ทุกครั้งที่ฉันสร้างเธรด PHP ใหม่ด้วย Pthreads มันเพิ่ม 0.01 วินาที ให้กับสมการ ซึ่งทำให้เวลาของการวนซ้ำแต่ละครั้งคูณด้วย 10
ฉันพยายามหาคำอธิบายที่เป็นไปได้สำหรับสิ่งนี้มาสองสามสัปดาห์แล้ว และจนถึงตอนนี้หลังจากทำการทดสอบหลายครั้งและปรับแต่งการตั้งค่ามากมาย สิ่งเดียวที่สมเหตุสมผลก็คือนี่เป็นข้อจำกัดของ Pthreads by design
ขั้นตอนต่อไปคือการอัปเดตโค้ดเป็นโปรเจ็กต์ Parallel ที่ใหม่กว่า แต่ในระหว่างนี้ฉันพบบางสิ่งที่น่าสงสัย เมื่อฉันเปิดใช้งาน opcache.enable_cli ใน PHP FPM config ปัญหาก็หายไปเกือบหมดและเธรดส่วนใหญ่ไม่ล่าช้า!
น่าเศร้าที่สิ่งนี้ทำให้เกิด zend_mm_heap ข้อผิดพลาดข้อผิดพลาดการแบ่งส่วนอย่างต่อเนื่องซึ่งจากสิ่งที่ฉันได้อ่านไม่สามารถแก้ไขได้จริงๆ (เป็นปัญหาหลักของ zend หรือ pthreads) แต่ดูเหมือนว่าจะเป็นการเริ่มต้นที่ดีในการทำความเข้าใจต้นตอของปัญหา .
ใครก็ได้ ?