Bagaimana cara menyesuaikan nginx keepalive_timeout?

12

Saya menggunakan nginx bersama dengan php-fpm ke server situs berbasis mysql yang sibuk. Saat ini saya menggunakan keepalive_timeout = 5, namun saya tidak memiliki ide yang jelas tentang bagaimana menyesuaikannya secara optimal. Jadi hargai petunjuk Anda.

alfish
sumber

Jawaban:

10

Apa yang perlu Anda sesuaikan untuk dilakukan, atau lebih tepatnya: apakah Anda melihat ada masalah dengan mengaturnya?

Tidak ada jawaban satu ukuran yang cocok untuk semua; jika sebagian besar browser klien dapat memuat semua sumber daya pada halaman dalam 5 detik maka 5 detik baik-baik saja, tetapi itu sepenuhnya tergantung pada kebutuhan aplikasi Anda - jika server nginx Anda berfungsi sebagai proxy terbalik untuk Exchange ActiveSync, misalnya, Anda ingin itu menghidupkan sampai setengah jam.

Shane Madden
sumber
Yah, saya mencoba untuk meminimalkan beban server (yang cukup tinggi pada waktu pilih), dan saya kira mengoptimalkan keepalive_timeout sebagian dapat berkontribusi untuk tujuan ini. Selain itu hanya rasa ingin tahu yang sehat :)
alfish
1
Tentu - jadi, cukup "serendah mungkin tanpa menendang sebagian besar klien sebelum mereka memuat halaman" - jadi jika halaman Anda memuat di bawah satu detik untuk sebagian besar klien Anda, maka batas waktu 1 detik akan baik-baik saja. Tetapi, kecuali batas waktu Anda jauh, jauh lebih tinggi dari 5 detik, maka kemungkinan besar penyebabnya adalah beban server.
Shane Madden
Itulah intinya. Bagaimana saya bisa menentukan waktu buka halaman, mengingat perbedaan waktu buka halaman (ada yang lebih berat dari yang lain), kecepatan koneksi pengunjung, dll.
alfish
Hanya kasar itu. Beberapa detik, satu atau lain cara tidak mungkin membuat perbedaan besar dalam beban, jadi jangan ragu untuk memperkirakan tinggi - tapi sekali lagi, versi baru koneksi TCP (bahkan dengan jabat tangan SSL, jika berlaku) untuk klien yang memuat lambat tidak akan membuat perbedaan besar dalam kecepatan pemuatan keseluruhan.
Shane Madden
1
@ShaneMadden, bahwa 5 detik bukan umur koneksi, tetapi hanya batas waktu selama server menunggu permintaan lain hingga keepalive_requests. Jadi tidak penting berapa banyak waktu yang diperlukan untuk memuat halaman penuh, hanya untuk html sampai browser mulai mengambil gambar / css ... BTW maks. koneksi waktu tetap terbuka hampirkeepalive_timeout*keepalive_requests
Marki555