Làm cách nào để bạn tăng số lượng tối đa các kết nối đồng thời trong Apache?


102

Tôi cần thay đổi cài đặt httpd conf nào để tăng số lượng kết nối đồng thời tối đa cho Apache? LƯU Ý: Tôi đã tắt KeepAlive vì đây chủ yếu là máy chủ 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>

Câu trả lời:


170

Đây là giải thích chi tiết về cách tính MaxClients và 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

Trước hết, bất cứ khi nào một apache được khởi động, nó sẽ bắt đầu 2 tiến trình con được xác định bằng StartServerstham số. Sau đó, mỗi tiến trình sẽ bắt đầu 25 luồng được xác định bởi ThreadsPerChildtham số nên điều này có nghĩa là 2 tiến trình chỉ có thể phục vụ 50 kết nối / máy khách đồng thời tức là 25x2 = 50. Bây giờ nếu nhiều người dùng đồng thời đến, thì một quy trình con khác sẽ bắt đầu, có thể phục vụ 25 người dùng khác. Nhưng có bao nhiêu tiến trình con có thể được khởi động được kiểm soát bởi ServerLimittham số, điều này có nghĩa là trong cấu hình ở trên, tôi có thể có tổng cộng 16 tiến trình con, với mỗi tiến trình con có thể xử lý 25 luồng, tổng cộng xử lý 16x25 = 400 người dùng đồng thời. Nhưng nếu số được xác định ở MaxClientsđây nhỏ hơn 200, thì điều này có nghĩa là sau 8 quy trình con, sẽ không có quy trình bổ sung nào bắt đầu vì chúng tôi đã xác định giới hạn trên củaMaxClients. Điều này cũng có nghĩa là nếu tôi đặt MaxClientsthành 1000, sau 16 quy trình con và 400 kết nối, sẽ không có quy trình bổ sung nào bắt đầu và chúng tôi không thể phục vụ hơn 400 ứng dụng khách đồng thời ngay cả khi chúng tôi đã tăng MaxClienttham số. Trong trường hợp này, chúng tôi cũng cần tăng ServerLimitlên 1000/25 tức là MaxClients/ThreadsPerChild=40 Vì vậy, đây là cấu hình tối ưu hóa cho máy chủ 1000 máy khách

<IfModule mpm_worker_module>
    ServerLimit          40
    StartServers          2
    MaxClients          1000
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

24
Dường như có một số thay đổi sau phiên bản 2.3.13. Ví dụ MaxClients bây giờ là MaxRequestWorkers.
ılǝ

2
Vui lòng cho biết: trang web được liên kết hiện đang phân phối phần mềm độc hại (và khiêu dâm) ... Nó có thể bị tấn công ... Khá ẩn danh nếu bạn đang tìm kiếm giải pháp trên stackoverflow và một trang web khiêu dâm hoàn toàn mở ra ... sitecheck.sucuri. net / results / www.genericarticles.com
yoano

1
Được rồi, nhưng yêu cầu bộ nhớ và CPU là gì cho cấu hình tối ưu này. Hoặc làm thế nào để tôi xem xét CPU và Bộ nhớ cũng cho việc tối ưu hóa này.
indianwebdevil

Tôi đã áp dụng cấu hình này và các kết nối hiện tại vẫn đạt được ... có vẻ như là một giới hạn cứng ở một nơi khác
Jorge Cornejo Bellido

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.