Optimasi prefork Apache - Memilih nilai `MaxRequestsPerChild` yang tepat

9

Saya mencoba untuk mengoptimalkan server web kami untuk menangani koneksi sebanyak mungkin. Saya membaca banyak posting dan catatan Apache. Saya mencoba memahami nilai mana yang harus saya pilih MaxRequestsPerChild.

Pada awalnya, saya sudah mencoba mengaturnya menjadi 4.000, tetapi server mengalami kesulitan menangani banyak permintaan, jadi saya mulai menaikkannya. Saat ini pengaturan saya adalah:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

Setelah mengatur MaxRequestsPerChildke 40.000 server berhasil menangani lebih banyak koneksi tanpa menggunakan lebih banyak memori / cpu.

Adakah yang bisa memberi tahu saya apakah nilai ini terlalu tinggi atau tidak apa-apa untuk memiliki nilai setinggi itu?

Terima kasih!

Info OS:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104
Kuf
sumber

Jawaban:

10

MaxRequestsPerChildbenar-benar hanya berguna untuk membatasi jumlah kebocoran memori dari waktu ke waktu ketika menjalankan skrip dinamis. Jika Anda hanya menyajikan konten statis atau skrip yang sangat kecil / sederhana maka Anda mungkin dapat mengaturnya menjadi 0 atau sangat tinggi tanpa banyak efek. Jika Anda menjalankan skrip yang lebih besar / kompleks, maka atur 0 / tinggi akan mengakibatkan proses Apache Anda menghabiskan lebih banyak memori. Tepatnya berapa banyak lagi tergantung pada aplikasi spesifik Anda.

Di sisi lain, pengaturan yang sangat rendah sebenarnya dapat mengakibatkan penggunaan CPU sedikit lebih banyak karena proses Apache terus-menerus dimulai kembali.

Saya akan melakukan tes sederhana untuk melihat berapa banyak memori yang dapat digunakan proses Anda. Setel MaxRequestsPerChildke 0 dan mulai ulang Apache. Tes memuat beberapa halaman dan lihat ukuran awal proses Apache yang digunakan top. Periksa lagi setelah beberapa jam / hari / minggu (tergantung pada aplikasi Anda dan tampilan halaman) dan lihat bagaimana pertumbuhannya. Jika tidak tumbuh terlalu banyak maka nilai 0 atau sangat besar untuk MaxRequestsPerChildharus baik-baik saja.

Jika Anda memiliki ukuran maksimum yang ditetapkan untuk proses Apache Anda (yaitu, Anda ingin mereka menjadi 50MB atau kurang) maka Anda dapat melakukan tes yang sama dengan berbagai nilai MaxRequestsPerChildhingga Anda menemukan nilai yang membuat Apache kurang dari itu.

uesp
sumber
1
Bagaimana saya bisa menguji memuat halaman dan melihat ukuran proses Apache menggunakan Windows Server?
Ahmad Alfy