Your math is still off. ServerLimit x ThreadsPerChild = 200 x 25 = 5000. This does not equal your MaxClients of 1000. Try a ServerLimit of 20 and ThreadsPerChild of 50.
If you’re vmstat “r” column is high, chances are you’re getting a lot of requests. What’s your apache requests/second? (check the apache server-status webpage). That will also tell you what the incoming connections are actually doing. Maybe you have EnableSendFile on and your system doesn’t support it. Maybe you have EnableMMAP on and your system doesn’t support it. Maybe you’re pulling files over NFS over a slow link?
Until you look at the server-status page, you won’t know.
You should also run an strace on your apache processes to find out some more information, see if there’s a lot of extraneous calls or error in there.
strace -f -F -v –p <an_apache_child_pid>
And you should still see what all these numbers look like with keepalives off.
-Tony
---------------------------
Manager, IT Operations
Format Dynamics, Inc.
303-573-1800x27
From: kulbir Saini [mailto:kulbir.saini1@xxxxxxxxx]
Sent: Friday, March 13, 2009 9:08 PM
Hi All
Thanks.
I also agree lowering MaxRequestsPerChild will keep busy apache in killing and recreating child process. I dont know what Math i worked, i reconfigured both of the apache instances on the server with following -
<IfModule worker.c>
ServerLimit 200
StartServers 2
MaxClients 1000
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestsPerChild 20000
</IfModule>
KeepAliveTimeout 5
There was rise in load, teh system snapshot is -
[root@cinschpr35 root]# top
5:46pm up 257 days, 7:09, 5 users, load average: 5.70, 5.31, 5.15
614 processes: 606 sleeping, 8 running, 0 zombie, 0 stopped
CPU0 states: 98.2% user, 1.1% system, 0.0% nice, 0.1% idle
CPU1 states: 99.4% user, 0.0% system, 0.0% nice, 0.1% idle
CPU2 states: 99.4% user, 0.1% system, 0.0% nice, 0.0% idle
CPU3 states: 98.4% user, 1.0% system, 0.0% nice, 0.0% idle
Mem: 3927672K av, 3922000K used, 5672K free, 5196K shrd, 1363088K buff
Swap: 1048536K av, 736K used, 1047800K free 2112964K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
32006 apache0 25 0 6796 6796 4092 R 99.8 0.1 213:21 httpd
2306 apache0 25 0 6624 6624 4100 R 99.4 0.1 136:42 httpd
2298 apache0 25 0 6624 6624 4100 R 97.2 0.1 135:39 httpd
2308 apache0 25 0 6624 6624 4100 R 95.4 0.1 135:05 httpd
17059 tomcat1 15 0 82432 80M 9932 S 1.1 2.0 9:10 java
14678 tomcat0 15 0 101M 101M 31464 S 1.1 2.6 6:32 java
16228 root 15 0 1488 1488 836 R 1.1 0.0 0:00 top
19850 tomcat1 15 0 82432 80M 9932 S 0.9 2.0 6:16 java
1110 tomcat0 15 0 101M 101M 31464 S 0.5 2.6 10:19 java
23605 tomcat0 15 0 101M 101M 31464 S 0.5 2.6 7:31 java
#free -m
total used free shared buffers cached
Mem: 3835 3828 7 5 1335 2059
-/+ buffers/cache: 433 3402
Swap: 1023 0 1023
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
5 0 1 736 8236 1367124 2108452 0 0 1 12 3 1 11 5 13
4 0 0 736 8156 1367132 2108460 0 0 0 172 370 404 98 2 0
4 0 1 736 8172 1367132 2108468 0 0 0 0 281 309 99 1 0
4 0 1 736 8168 1367132 2108480 0 0 0 162 288 366 100 0 0
5 0 1 736 8128 1367132 2108488 0 0 0 0 287 342 99 1 0
4 0 1 736 8136 1367132 2108496 0 0 0 148 286 322 100 1 0
5 0 1 736 8180 1367132 2108504 0 0 0 0 275 332 98 2 0
4 0 2 736 8148 1367132 2108512 0 0 0 10 267 326 99 1 0
4 0 1 736 8184 1367136 2108520 0 0 0 190 288 357 99 1 0
4 0 0 736 8104 1367136 2108536 0 0 0 10 298 404 99 1 0
4 0 2 736 7980 1367140 2108540 0 0 0 254 332 414 99 1 0
4 0 0 736 7968 1367140 2108548 0 0 0 20 286 408 98 2 0
5 0 1 736 7972 1367140 2108560 0 0 0 0 346 418 99 1 0
4 0 1 736 7992 1367144 2108568 0 0 0 216 315 371 100 0 0
5 0 0 736 8004 1367144 2108576 0 0 0 0 285 358 100 0 0
5 0 0 736 7956 1367144 2108588 0 0 0 158 333 392 100 0 0
6 0 2 736 7928 1367144 2108596 0 0 0 0 326 383 99 1 0
6 0 2 736 8064 1367144 2108604 0 0 0 0 291 356 100 0 0
4 0 0 736 8056 1367148 2108616 0 0 0 180 301 376 99 1 0
4 0 1 736 8016 1367148 2108624 0 0 0 34 335 413 99 1 0
Above, i can see two things happened-
1> in "top" output teh httpd process eating CPU has high "TIME" value. why?
2> the vmstat output value of "r" increases. Why?
Thanks in advance
Kulbir
On Fri, Mar 13, 2009 at 6:38 PM, Tadeu Alves <tadeudca@xxxxxxxxx> wrote:
i forget the other stuff i'm using moodle with some images werving with eaccelerator running with php and i you want i can send a conf file about mysql, php and apache if you would like to.
On Fri, Mar 13, 2009 at 2:45 PM, Anthony J. Biacco <abiacco@xxxxxxxxxxxxxxxxxx> wrote:
1. I have to rail totally against this. The more you lower MaxRequestsPerChild, the more often apache is killing and recreating a child process. At numbers as low as 2000 or lower, you’re starting to defeat the whole purpose of using the worker mpm.
>=50% of apache’s time is going to be spent managing child processes on a high traffic site. MaxRequestsPerChild should either be 0 or something very high. IF your process memory usage gets higher and higher, then you have a memory leak somewhere.
2. Don’t use ThreadLimit, stick with ThreadsPerChild
3. You MaxClients doesn’t sync up to your other numbers. MaxClients is going to be ServerLimit x ThreadsPerChild. So for you, 1500. If you want to serve 1500 concurrent reqs, then set MaxClients to match this at 1500. If you want 500, then change ServerLimit,StartServers and ThreadsPerChild so the math is right. For instance, ServerLimit 10, StartServers 5, ThreadsPerChild 50 will be you a MaxClients of 500.
If you give us your server parameters (cpu, memory, modules loaded, apache rss usage, types of files served), we’d be able to better recommend numbers for what your server can support.
-Tony
---------------------------
Manager, IT Operations
Format Dynamics, Inc.
303-573-1800x27
From: Tadeu Alves [mailto:tadeudca@xxxxxxxxx]
Sent: Friday, March 13, 2009 8:45 AM
To: users@xxxxxxxxxxxxxxxx
Subject: Re: Apache Tunning
nice one. Getting on this hook, in my server we run moodle i dunno if you guys know about it and a very high hits/second i wan't to know if going down about MaxRequestsPerChild 500 will be good to performance and any idea about changing my server variables to make it support more concurrent connections
########################################
<IfModule worker.c>
ServerLimit 30
ThreadLimit 70
StartServers 20
MaxClients 500
MinSpareThreads 10
MaxSpareThreads 15
ThreadsPerChild 50
MaxRequestsPerChild 2000
MaxMemFree 5000
#ReceiveBufferSize 714400 (not using anymore)
#################################
On Fri, Mar 13, 2009 at 5:41 AM, Gaurav Khambhala <gaurav@xxxxxxxxxxxxxx> wrote:
Hi Kulbir,
Gaurav wrote:Tadeu Alves wrote:
i thibk that you can down the variable
MaxRequestsPerChild 20000 to 2000 it's too much and if the child process keeps the request well i't grows bigger and bigger in memory
Even 2000 is too much. Various high load,high traffic servers also don't have this much high value.
Found this: http://rimuhosting.com/howto/memory.jsp may be useful to you.
--
Cheers,
Gaurav Khambhala
i-hack-at-DeepRoot Linux
Getting GNU/Linux to work for you. Faster. Better. Today. Every way.
http://www.deeproot.in, +91 80 4089 0000
---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
" from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx