Bagaimana Anda meningkatkan jumlah maksimum koneksi bersamaan di Apache?

102

Pengaturan conf httpd apa yang perlu saya ubah untuk meningkatkan jumlah maksimum koneksi bersamaan untuk Apache? CATATAN: Saya mematikan KeepAlive karena ini sebagian besar adalah server API.

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive Off

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
## 

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
JonnyJon
sumber

Jawaban:

170

Berikut penjelasan mendetail tentang penghitungan MaxClients dan MaxRequestsPerChild

http://web.archive.org/web/20160415001028/http://www.genericarticles.com/mediawiki/index.php?title=How_to_optimize_apache_web_server_for_maximum_concurrent_connections_or_increase_max_clients_in_apache

ServerLimit 16
StartServers 2
MaxClients 200
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25

Pertama-tama, setiap kali apache dimulai, itu akan memulai 2 proses anak yang ditentukan oleh StartServersparameter. Kemudian setiap proses akan memulai 25 utas yang ditentukan oleh ThreadsPerChildparameter sehingga ini berarti 2 proses hanya dapat melayani 50 koneksi / klien bersamaan yaitu 25x2 = 50. Sekarang jika lebih banyak pengguna bersamaan datang, maka proses anak lain akan dimulai, yang dapat melayani 25 pengguna lainnya. Tetapi berapa banyak proses anak yang dapat dimulai dikendalikan oleh ServerLimitparameter, ini berarti bahwa dalam konfigurasi di atas, saya dapat memiliki total 16 proses anak, dengan setiap proses anak dapat menangani 25 utas, total penanganan 16x25 = 400 pengguna bersamaan. Tetapi jika angka yang ditentukan dalam MaxClientskurang yaitu 200 di sini, maka ini berarti bahwa setelah 8 proses anak, tidak ada proses tambahan yang akan dimulai karena kita telah menetapkan batas atasMaxClients. Ini juga berarti bahwa jika saya menyetel MaxClientske 1000, setelah 16 proses anak dan 400 koneksi, tidak ada proses tambahan yang akan dimulai dan kami tidak dapat melayani lebih dari 400 klien bersamaan meskipun kami telah meningkatkan MaxClientparameter. Dalam hal ini, kita juga perlu meningkatkan ServerLimitke 1000/25 yaitu MaxClients/ThreadsPerChild=40 Jadi ini adalah konfigurasi yang dioptimalisasi ke server 1000 klien

<IfModule mpm_worker_module>
    ServerLimit          40
    StartServers          2
    MaxClients          1000
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
Raisul
sumber
24
Tampaknya ada beberapa perubahan setelah versi 2.3.13. Misalnya MaxClients sekarang menjadi MaxRequestWorkers.
ılǝ
2
Mohon saran: situs yang ditautkan saat ini menyajikan malware (dan porno) ... Mungkin diretas ... Cukup mengherankan jika Anda sedang bekerja mencari solusi tentang stackoverflow dan situs porno lengkap terbuka ... sitecheck.sucuri. net / results / www.genericarticles.com
yoano
1
Oke, tapi berapa memori yang dibutuhkan dan persyaratan CPU untuk konfigurasi optimal ini. Atau bagaimana cara saya mempertimbangkan CPU dan Memori juga untuk pengoptimalan ini.
indianwebdevil
Saya menerapkan konfigurasi ini dan masih koneksi saat ini tercapai ... sepertinya batas yang sulit di tempat lain
Jorge Cornejo Bellido