[apache] Apache에서 최대 동시 연결 수를 어떻게 늘리나요?

Apache의 최대 동시 연결 수를 늘리려면 어떤 httpd conf 설정을 변경해야합니까? 참고 : 주로 API 서버이기 때문에 KeepAlive를 사용 중지했습니다.

#
# 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>



답변

MaxClients 및 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

우선 아파치가 시작될 때마다 StartServers매개 변수에 의해 결정되는 2 개의 자식 프로세스를 시작 합니다. 그런 다음 각 프로세스는 ThreadsPerChild매개 변수에 의해 결정된 25 개의 스레드를 시작 하므로 2 개의 프로세스가 50 개의 동시 연결 / 클라이언트 (예 : 25×2 = 50) 만 서비스 할 수 있습니다. 이제 더 많은 동시 사용자가 오면 다른 하위 프로세스가 시작되어 다른 25 명의 사용자에게 서비스를 제공 할 수 있습니다. 그러나 시작될 수있는 자식 프로세스의 수는 ServerLimit매개 변수에 의해 제어됩니다. 즉, 위 구성에서 총 16 개의 자식 프로세스를 가질 수 있으며 각 자식 프로세스는 25 개의 스레드를 처리 할 수 ​​있으며 총 16×25 = 400 명의 동시 사용자를 처리 할 수 ​​있습니다. 그러나에 정의 된 수가 MaxClients200 개 미만이면 하위 프로세스 8 개 후에는 상위 캡을 정의했기 때문에 추가 프로세스가 시작되지 않습니다.MaxClients. 이것은 또한 내가 MaxClients1000으로 설정 하면 16 개의 하위 프로세스와 400 개의 연결 후에 추가 프로세스가 시작되지 않으며 MaxClient매개 변수를 증가하더라도 400 개 이상의 동시 클라이언트를 서비스 할 수 없음을 의미합니다 . 이 경우에도 ServerLimit1000/25로 늘려야합니다. 즉, MaxClients/ThreadsPerChild=40
이것은 서버 1000 클라이언트에 최적화 된 구성입니다.

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


답변

MaxClients 지시문을 변경하십시오. 이제 256에 있습니다.


답변