-
Notifications
You must be signed in to change notification settings - Fork 0
/
concurrency
32 lines (28 loc) · 1.55 KB
/
concurrency
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ServerLimit 16
StartServers 2
MaxClients 200
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
First of all, whenever an apache is started, it will start 2 child processes which is determined by StartServers parameter.
Then each process will start 25 threads determined by ThreadsPerChild parameter so this means 2 process can service only
50 concurrent connections/clients i.e. 25x2=50. Now if more concurrent users comes,
then another child process will start, that can service another 25 users.
But how many child processes can be started is controlled by ServerLimit parameter,
this means that in the configuration above, I can have 16 child processes in total,
with each child process can handle 25 thread, in total handling 16x25=400 concurrent users.
But if number defined in MaxClients is less which is 200 here, then this means that after 8 child processes,
no extra process will start since we have defined an upper cap of MaxClients. This also means that if I set MaxClients to 1000,
after 16 child processes and 400 connections, no extra process will start and we cannot service more than
400 concurrent clients even if we have increase the MaxClient parameter.
In this case, we need to also increase ServerLimit to 1000/25 i.e.
MaxClients/ThreadsPerChild=40 So this is the optmized configuration to server 1000 clients
<IfModule mpm_worker_module>
ServerLimit 40
StartServers 2
MaxClients 1000
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>