Ketika apache melakukan proses untuk mod-php, berapa lama ia tetap hidup? Apakah proses mati segera setelah respons dikirim, atau akankah tetap hidup sampai browser menerima respons penuh?
Ketika apache melakukan proses untuk mod-php, berapa lama ia tetap hidup? Apakah proses mati segera setelah respons dikirim, atau akankah tetap hidup sampai browser menerima respons penuh?
Jawaban:
Jika Anda menggunakan mod-php, maka kemungkinan Anda menggunakan prefork
MPM, yang memunculkan proses anak untuk menangani permintaan. Jumlah dan masa hidup anak-anak ini sebagaimana diatur oleh arahan dalam file utama Anda apache2.conf
(atau httpd.conf
, tergantung pada distro Anda).
Cari bagian yang terlihat seperti ini (nilai Anda mungkin beragam):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Apache memunculkan StartServers
anak-anak secara otomatis. Proses-proses ini akan menganggur sampai permintaan masuk. Jika anak-anak menjadi sibuk, itu akan menelurkan ke MaxClients
anak-anak untuk menangani beban, mencoba untuk menjaga MinSpareServers
anak-anak yang menganggur untuk mengambil permintaan baru. Setelah semuanya tenang, anak-anak yang menganggur akan dibunuh sampai hitungannya turun MaxSpareServers
.
Bit yang Anda tanyakan ditangani oleh MaxRequestsPerChild
. Ditetapkan pada 0, ini berarti bahwa anak-anak dapat hidup selamanya, yang merupakan nilai default di sebagian besar instalasi apache. Ditetapkan pada hal lain, itu berarti setiap proses anak akan secara paksa dibunuh dan dimulai kembali, terlepas dari beban saat ini, setelah menangani jumlah permintaan itu.
Rincian lebih lanjut tentang MPM prefork di sini: http://httpd.apache.org/docs/2.2/mod/prefork.html
httpd tidak memotong proses untuk mod_php. Itu fork proses untuk dirinya sendiri, yang memiliki mod_php tertanam di dalamnya. Anak itu akan tetap hidup sampai telah memenuhi MaxRequestsPerChild
permintaan. mod_php sendiri akan terus menangani setiap permintaan untuk skrip PHP hingga skrip keluar atau batas waktu terlampaui.