Hi All,

I apologize for the attachments of size 800+k in my previous mail. I will not 
do it again.

Tom,
Yes, I agree with you. But even after it served 30000 (keep alive connections + 
non keep alive) requests, the child process is not exiting. It is running on 
the server until Apache is restarted.

Regards,
Karthik Kanna

________________________________
From: Tom Evans <tevans...@googlemail.com>
To: users@httpd.apache.org
Sent: Tuesday, 12 May, 2009 8:34:25 PM
Subject: Re: [us...@httpd] Apache child process not exiting after it served 
MaxRequestsPerChild

On Tue, 2009-05-12 at 18:24 +0530, Karthik kanna wrote:
> Hi,
>  
> I am using Apache 2.0.59 in AIX 5.3. Apache is running as "apache"
> user-id, even the parent process is also running as "apache" user-id.
> I am using non-standard ports like 8028/9028, so I do not require root
> user to run the parent process.. This is the configuration I am using
> in Apache 2.0.59.
>  
>  StartServers 2
>  MaxClients 150
>  MinSpareThreads 25
>  MaxSpareThreads 75
>  ThreadsPerChild 25
>  MaxRequestsPerChild 30000
>  
> Actually what is happening - when the child process served 30000
> requests, it is not killed by the parent process and the child process
> is running forever on the server till I manually kill the child
> process or restart the Apache. But parent process spawns new child
> process. So the number of Apache httpd process is increasing day by
> day on the server. The thing is, few child process gets killed by the
> parent process once it served 30000 requests. But few child process is
> not exiting.

MaxRequestsPerChild doesn't kill children after N requests, it kills
them after N unique keep alive connections + non keep alive requests -
IE if one keep alive connection requests 40 different entities in its
lifetime, then apache will consider that as 1 request as far as counting
MaxRequestsPerChild. See
http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild

>  
> Truss output of the child process that is not exiting:
> 3911841: yield()                                = 
> 3911841: thread_waitact(400)                    = 0
> 1144501: __semop(1048580, 0xF1B22D58, 1)        = 0
> 1144501: __semop(1048580, 0xF1B22D60, 1)        = 0
> 1144501: _nsleep(0x202069E8, 0x20206A60)        = 1
> 3911841: yield()                                = 
> 822367: kread(-802643620, 0x00000000, 0) (sleeping...)
> 822367: kread(-802643620, 0x00000000, 0)        = 0
> 3911841: yield()                                = 
> 822367: kread(-802643620, 0x00000000, 0) (sleeping...)
> 822367: kread(-802643620, 0x00000000, 0)        = 0
> 3911841: yield()                                = 
> 3911841: thread_waitact(400)                    = 0
> 
> Few system calls like thread_waitact(), kread(), semop() and yield()
> are running infinitely for the child process. Before the child process
> starts executing these system call infinitely, the last system call it
> was executing was thread_terminate_ack() after it served 30000
> requests.
>  
> In the child process, one thread is in running state executing
> _p_nsleep() system call and another thread is in wait state, whereas
> all other threads are in terminated status.
>  
> (dbx) thread 
>  thread  state-k    wchan    state-u    k-tid  mode held scope
> function 
>  $t1    wait      0x38882158 running  2894597    k  no  pro  read
>              
> >$t2    run                  running  3674465    k  no  pro
>  _p_nsleep        
>  $t3                          terminated            u  no
> pro                    
> 
> Since 2 threads are not terminated, I think child process is not
> exiting by the process process.
>  
> Have you faced this problem? Any help you provide to resolve the issue
> is much appreciated.
>  
> Regards,
> Karthik Kanna

Also, please don't email me 800+k of logs again. kthx :)


---------------------------------------------------------------------
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-unsubscr...@httpd.apache.org
  "  from the digest: users-digest-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org


      Own a website.Get an unlimited package.Pay next to nothing.*Go to 
http://in.business.yahoo.com/

Reply via email to