สิ่งที่เกิดขึ้นคือ Application และ / หรือ ApplicationSpawners ของคุณกำลังปิดตัวลงเนื่องจากหมดเวลา ในการดำเนินการตามคำขอใหม่ของคุณผู้โดยสารจะต้องเริ่มต้นสำเนาแอปพลิเคชันของคุณใหม่ซึ่งอาจใช้เวลาหลายวินาทีแม้ในเครื่องที่เร็ว ในการแก้ไขปัญหามีตัวเลือกการกำหนดค่า Apache สองสามตัวที่คุณสามารถใช้เพื่อให้แอปพลิเคชันของคุณมีชีวิตอยู่
นี่คือสิ่งที่ฉันทำบนเซิร์ฟเวอร์โดยเฉพาะ PassengerSpawnMethod และ PassengerMaxPreloaderIdleTime เป็นตัวเลือกการกำหนดค่าที่สำคัญที่สุดในสถานการณ์ของคุณ
PassengerSpawnMethod smart
PassengerPoolIdleTime 1000
PassengerMaxPreloaderIdleTime 0
PassengerMaxRequests 5000
เมื่อใช้โหมดการวางไข่ "อัจฉริยะ" และปิด PassengerMaxPreloaderIdleTime Passenger จะเก็บสำเนาแอปพลิเคชันของคุณ 1 ชุดไว้ในหน่วยความจำตลอดเวลา (หลังจากคำขอครั้งแรกหลังจากเริ่ม Apache) Application
ผู้ฟังแต่ละคนจะได้รับการfork
แก้ไขจากสำเนานี้ซึ่งเป็นการดำเนินการที่ถูกสุด ๆ มันเกิดขึ้นเร็วมากจนคุณไม่สามารถบอกได้ว่าแอปพลิเคชันของคุณจะต้องมีผู้ฟัง
หากแอปของคุณเข้ากันไม่ได้กับการวางไข่แบบสมาร์ทฉันขอแนะนำให้เก็บ PassengerPoolIdleTime ขนาดใหญ่ไว้และกดปุ่มไซต์ของคุณเป็นระยะโดยใช้ curl และ cronjob หรือตรวจสอบหรือบางอย่างเพื่อให้แน่ใจว่าผู้ฟังยังมีชีวิต
คู่มือผู้โดยสารผู้ใช้คือการอ้างอิงที่น่ากลัวสำหรับเหล่านี้และตั้งค่าตัวเลือกมากขึ้น
แก้ไข : หากแอปของคุณเข้ากันไม่ได้กับการวางไข่อัจฉริยะมีตัวเลือกใหม่ ๆที่ดีมาก
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/
PassengerMinInstances 3
ดังนั้นหากคุณใช้ PassengerPreStart และ PassengerMinIn
หรือหากคุณใช้การวางไข่อัจฉริยะ (แนะนำ) PassengerMaxPreloaderIdleTime 0
อยู่แล้วคุณสามารถเพิ่มPassengerPreStart
เพื่อรับประโยชน์เพิ่มเติมจากการเริ่มต้นใช้งานได้ทันที
ขอบคุณฮีโร่มากมายที่phusion.nl !