Saya menjalankan server web hobi dari Blue & White G3 / 300 kuno yang menjalankan Debian PPC Squeeze 2.6.30. Performa tidak apa-apa untuk sementara waktu setelah restart, tetapi akhirnya semakin banyak macet. Saat ini pada 76 hari uptime, dan penyebab utama tampaknya adalah penggunaan memori 10+ proses apache2.
Saya pikir saya perlu menurunkan nilai untuk StartServers
,, MinSpareServers
dan / atau MaxSpareServers
, tapi saya tidak yakin yang mana yang harus disesuaikan, dan ada tiga bagian untuk masing-masing tergantung pada modul mpm mana yang digunakan.
Bagaimana saya tahu bagian mana dari berikut ini yang perlu saya ubah, dan apa saja nilai wajar yang diberikan bahwa kotak tersebut memiliki 448 MB memori fisik (riwayat peningkatan aneh masing-masing 64, 128, dan 256 batang)?
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Tidak ada contoh lain dari StartServers di apache2.conf saya, tetapi tidak ada modul mpm yang muncul di mods-available
atau mods-enabled
. Ide ide?
Terima kasih!
sumber
Jawaban:
400MB tidak banyak untuk server web hari ini - Anda mungkin ingin mempertimbangkan untuk mengganti kotak :)
Yang mengatakan, jika penggunaan memori Anda membengkak, Anda mungkin memiliki kebocoran memori di suatu tempat - untuk pengujian cepat melihat ukuran proses httpd sekarang, kemudian hentikan / mulai Apache & lihat apakah mereka jauh lebih kecil. Jika mereka mengawasi mereka selama beberapa hari dan melihat apakah mereka tumbuh.
Jika itu adalah kebocoran memori solusi nyata untuk itu adalah menemukan dan memperbaiki kebocoran memori, tetapi karena itu biasanya menyebalkan, Anda juga dapat menyesuaikan diri
MaxRequestsPerChild
dengan sesuatu selain 0 (tidak terbatas). Ini akan membunuh pekerja Apache ketika mereka telah melayani sejumlah permintaan tetap (memaksa mereka untuk menyerahkan memori mereka yang bocor dalam proses tersebut.Mulailah dengan nilai yang lebih besar (dalam ribuan atau lebih) dan turunkan ke ratusan. Jika Anda mendapatkan di bawah 100 permintaan per anak, kebocoran memori Anda cukup besar untuk benar-benar memperbaikinya karena kinerjanya yang terus-menerus mematikan dan memunculkan kembali pekerja apache akan menjadi signifikan.
Re: mpm mana yang harus disesuaikan, jawabannya hampir pasti
prefork
.Anda dapat menjalankan
httpd -V
dan mencariServer MPM:
garis yang akan memberi tahu Anda dengan pasti.sumber
Untuk memoles penggunaan memori dari proses apache Anda akan ingin menyesuaikan MaxClients.
Aturan umum adalah: (Memori yang diinginkan Max) / (Penggunaan Memori dari 1 Proses Apache) = # Klien Maks
Pada akhirnya Anda juga perlu menyesuaikan Anda untuk menjadi MaxSpareServers <= Klien Maks .
Penggunaan memori dari satu proses sangat tergantung pada modul yang telah Anda muat (php dan sebagainya) sehingga Anda mungkin ingin mengatur Klien Max sedikit lebih rendah.
sumber