Untuk mengikuti kereta band Penumpang Phusion, kami telah menyiapkan server pementasan untuk aplikasi rel kecil untuk menguji semuanya.
Sejauh ini sangat bagus untuk digunakan, itu membuat pemasangan / konfigurasi dan penerapan aplikasi menjadi mudah. Masalahnya adalah situs yang kami gunakan tidak terlalu sering terkena dan tampaknya mematikan server di latar belakang. Artinya ketika seseorang pergi ke situs, mereka harus menunggu sangat lama sampai itu memulai server baru untuk menangani permintaan tersebut. Kami telah membaca dokumentasi, mencoba beberapa pengaturan yang berbeda (mode smart / smart-lv2, penumpangidletime dll) dan masih belum menemukan solusi yang sebenarnya.
Setelah menelusuri hasil Google, kami tidak dapat menemukan informasi yang berguna. Saat ini kami memiliki tugas cron yang membuat permintaan sesering mungkin dalam upaya agar server tetap berjalan.
Apakah ada orang lain yang mengalami masalah ini dan apakah Anda punya saran untuk memperbaikinya?
sumber
Jawaban:
Apa yang terjadi adalah Aplikasi dan / atau ApplicationSpawners Anda ditutup karena batas waktu. Untuk memproses permintaan baru Anda, Penumpang harus memulai salinan baru dari aplikasi Anda, yang dapat memakan waktu beberapa detik, bahkan pada mesin yang cepat. Untuk memperbaiki masalah ini, ada beberapa opsi konfigurasi Apache yang dapat Anda gunakan untuk membuat Aplikasi Anda tetap hidup.
Inilah yang secara spesifik telah saya lakukan di server saya. PassengerSpawnMethod dan PassengerMaxPreloaderIdleTime adalah opsi konfigurasi yang paling penting dalam situasi Anda.
# Speeds up spawn time tremendously -- if your app is compatible. # RMagick seems to be incompatible with smart spawning # Older versions of Passenger called this RailsSpawnMethod PassengerSpawnMethod smart # Keep the application instances alive longer. Default is 300 (seconds) PassengerPoolIdleTime 1000 # Keep the spawners alive, which speeds up spawning a new Application # listener after a period of inactivity at the expense of memory. # Older versions of Passenger called this RailsAppSpawnerIdleTime PassengerMaxPreloaderIdleTime 0 # Just in case you're leaking memory, restart a listener # after processing 5000 requests PassengerMaxRequests 5000
Dengan menggunakan mode pemijahan "pintar" dan mematikan PassengerMaxPreloaderIdleTime, Passenger akan menyimpan 1 salinan aplikasi Anda di memori setiap saat (setelah permintaan pertama setelah memulai Apache).
Application
Pendengar individu akanfork
diedit dari salinan ini, yang merupakan operasi yang sangat murah. Ini terjadi begitu cepat sehingga Anda tidak tahu apakah aplikasi Anda harus menelurkan pendengar atau tidak.Jika aplikasi Anda tidak kompatibel dengan smart spawning, sebaiknya simpan PassengerPoolIdleTime yang besar dan buka situs Anda secara berkala menggunakan curl dan cronjob atau monit atau sesuatu untuk memastikan pendengar tetap hidup.
The Penumpang Panduan Pengguna adalah sebuah referensi awesome untuk ini dan banyak lagi opsi konfigurasi.
edit : Jika aplikasi Anda tidak kompatibel dengan pemijahan pintar, ada beberapa opsi baru yang sangat bagus
# Automatically hit your site when apache starts, so that you don't have to wait # for the first request for passenger to "spin up" your application. This even # helps when you have smart spawning enabled. PassengerPreStart http://myexample.com/ PassengerPreStart http://myexample2.com:3500/ # the minimum number of application instances that must be kept around whenever # the application is first accessed or after passenger cleans up idle instances # With this option, 3 application instances will ALWAYS be available after the # first request, even after passenger cleans up idle ones PassengerMinInstances 3
Jadi, jika Anda menggabungkan PassengerPreStart dan PassengerMinInstances, Passenger akan menjalankan 3 instans segera setelah apache dimuat, dan akan selalu menyimpan setidaknya 3 instans, sehingga pengguna Anda jarang (jika pernah) melihat penundaan.
Atau, jika Anda sudah menggunakan pemijahan pintar (disarankan)
PassengerMaxPreloaderIdleTime 0
, Anda dapat menambahkanPassengerPreStart
untuk mendapatkan manfaat tambahan dari segera memulai.Terima kasih banyak kepada para pahlawan di phusion.nl !
sumber
RailsSpawnMethod
tidak digunakan lagi dan mendukungPassengerSpawnMethod
modrails.com/documentation/…Hanya jika ada pengguna server nginx yang tersandung pada pertanyaan ini, arahan 'PassengerMaxRequests' dan 'PassengerStatThrottleRate' tidak diterjemahkan ke nginx. Namun yang lain melakukannya:
rails_spawn_method smart; rails_app_spawner_idle_time 0; rails_framework_spawner_idle_time 0; passenger_pool_idle_time 1000;
HTH!
EDIT
rails_spawn_method
tidak digunakan lagi di penumpang 3 sebagai gantinyasegalanya baik-baik saja sampai saat ini.
sumber
"passenger_max_preloader_idle_time" directive is duplicate
Anda juga dapat menggunakan PassengerMinInstances:
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances
Ini dapat digabungkan dengan PassengerPreStart
sumber
KEMBALI:
# Additionally keep a copy of the Rails framework in memory. If you're # using multiple apps on the same version of Rails, this will speed up # the creation of new RailsAppSpawners. This isn't necessary if you're # only running one or 2 applications, or if your applications use # different versions of Rails. RailsFrameworkSpawnerIdleTime 0
Hanya sesuatu untuk ditambahkan dan mungkin berguna.
Metode spawn default dalam rilis saat ini adalah "smart-lv2", yang melewatkan spawner framework, jadi menyetel batas waktu spawner framework tidak akan berpengaruh kecuali Anda secara eksplisit menyetel metode spawn ke "smart".
Sumber: http://groups.google.com/group/phusion-passenger/browse_thread/thread/c21b8d17cdb073fd?pli=1
sumber
Jika host Anda adalah server bersama, seperti milik saya, Anda tidak dapat mengubah pengaturan dan terjebak dengan tugas cron.
sumber
Saya juga mengalami masalah ini tetapi saya tidak dapat mengubah pengaturan penumpang karena saya tidak memiliki izin menulis ke file ini. Saya menemukan alat ( http://www.wekkars.com ) yang membuat aplikasi saya merespons dengan cepat. Mungkin ini juga bisa menjadi solusi untuk Anda.
sumber
periksa versi penumpang. itu RailsSpawnMethod
<string>
untuk versi lama.Jika demikian (jika saya ingat dengan benar), ganti Penumpang dengan Rel di semua arahan konfigurasi atau cari dokumen penumpang lama untuk lebih jelasnya
sumber