Saat ini saya memiliki server Apache2 yang berjalan dengan mpm-preforkdan mod_phppada VPS OpenVZ dengan 512M real / 1024M burstable RAM (tanpa swap). Setelah menjalankan beberapa tes, saya menemukan bahwa ukuran proses maksimum yang didapat Apache adalah 23M, jadi saya telah menetapkan MaxClientske 25 (23M x 25 = 575 MB, ok untuk saya). Saya memutuskan untuk menjalankan beberapa tes beban di server saya, dan hasilnya membuat saya bingung.
Saya menggunakan abdi mesin desktop saya meminta halaman utama dari blog wordpress.
Ketika saya menjalankan abdengan 24 koneksi bersamaan, semuanya tampak baik-baik saja. Tentu, CPU naik, RAM bebas turun, dan hasilnya sekitar 2-3s waktu respons per permintaan.
Tetapi jika saya menjalankan abdengan 25 koneksi bersamaan (batas server saya), Apache hanya hang setelah beberapa detik. Itu mulai memproses permintaan, kemudian berhenti merespons, CPU kembali ke idle 100% dan abwaktu habis. Log Apache mengatakan sudah tercapai MaxClients.
Ketika ini terjadi, Apache tetap terkunci dengan 25 proses yang berjalan (mereka semua dalam "W" jika saya memeriksa status server) dan hanya setelah TimeOutpengaturan proses mulai mati dan server mulai merespons lagi (dalam kasus saya sudah diatur ke 45).
Pertanyaan saya: apakah itu perilaku yang diharapkan? Mengapa Apache mati begitu saja MaxClients? Jika bekerja dengan 24 koneksi, bukankah seharusnya bekerja dengan 25, hanya mungkin mengambil lebih banyak waktu untuk menanggapi setiap permintaan dan mengantri sisanya?
Kedengarannya agak aneh bagi saya bahwa setiap anak yang berjalan absendiri dapat membunuh server web hanya dengan mengatur koneksi bersamaan ke server MaxClients.