Apa yang dilihat pengguna ketika Apache mencapai MaxClients?

8

Terkadang, di log kesalahan Apache saya, saya akan menemukan:

[error] server reached MaxClients setting, consider raising the MaxClients setting

Saya sengaja menurunkan MaxClients di masa lalu (ke 60) karena masalah dengan kehabisan memori, tapi saya ingin tahu persis apa yang terjadi pada pengguna saat batas ini tercapai di server. Apakah halaman yang mereka akses hanya membutuhkan waktu lebih lama untuk dimuat? Apakah mereka mendapatkan semacam pesan kesalahan?

runningonplants
sumber
1
Mungkin tidak akan sulit untuk membangun ujian untuk ini. Di server pengujian, coba turunkan MaxClients ke 1 dan lihat apa yang terjadi ketika Anda menyegarkan sesuatu di banyak jendela atau tab.
ghoti
Jelas - saya berharap seseorang akan tahu sebelum saya melakukannya. Saya tidak dapat menemukan info dalam dokumentasi Apache.
runningonplants

Jawaban:

13

Pada awalnya, permintaan klien akan antri, sampai ada proses / utas yang mendapat gratis di server apache. Jadi, klien akan melihat penundaan dalam memuat halaman. Lihat MaxClientsdokumentasi parameter untuk informasi lebih lanjut.

Ketika ditempatkan dalam antrian backlog, permintaan klien akhirnya dapat waktu habis di sisi klien. Kemudian pengguna akan melihat halaman kesalahan di browser-nya yang mengatakan bahwa server terlalu lama untuk memberikan jawaban. Nilai batas waktu default adalah 300 detik di Firefox , misalnya. Atau pengguna akan membatalkan permintaan sebelum batas waktu ...

Kemudian, jika server mendapat lebih banyak permintaan dan tidak bisa mendapatkan proses / utas gratis tepat waktu, ListenBacklogantrian dapat diisi (standarnya adalah 511 permintaan yang antri) dan permintaan berikutnya tidak akan dilayani sama sekali. Browser kemudian akan memberi tahu pengguna itu tidak dapat terhubung ke situs web, seperti jika situs web benar-benar turun.

Antrian backlog ini dikelola pada level OS, dalam implementasi TCP. Di linux, listenhalaman manual akan memberi Anda lebih banyak informasi tentang cara pengelolaannya. Berikut ini adalah bacaan yang sangat mendalam tentang antrian backlog TCP di sistem linux dan BSD .

Tonin
sumber
Apa yang perlu saya ketahui. Terima kasih! Apakah Anda mengetahui jika ada cara untuk melihat berapa banyak proses dalam antrian ListenBacklog?
runningonplants
1
Antrian backlog ini dikelola oleh OS, sebagai bagian dari tcp stack. Lihatlah listenhalaman manual. Saya tidak yakin ada cara langsung untuk mengetahui apa isi antrian ini. Juga, lihat pertanyaan SO ini . Saya telah menambahkan lebih banyak info ke jawaban saya.
Tonin