You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by samarjit adhikari <ad...@yahoo.com> on 2007/03/03 19:57:14 UTC

[users@httpd] Apache 2.x server is taking too much time to sending response to the client.

Hi  All,



Problem Description:

---------------------

I have written a cgi script which does 

 i) fork  and exec a command with the child process

ii) create pipe 

to read some data from the child process. The parent process waits untill it reads complete data from the child.



observation from the packet capture:

------------------------------------

 i) IE is sending GET request with the CGI binary name  in the URL

       i.e. GET /XXXX/<cgi-binary> say at the time T

ii) The response came from the server at the time (T+300) sec.



observation from the "top" command in the server side.

--------------------------------------------------------

i)  Immediately the cgi-binary goes into "zimbie" state  consuming 0.3% of the CPU.

ii) The child process which is being created from the parent cgi-binary goes into "sleeping" state consuming 0.5% of CPU.

ii) After 300 sec the parent cgi-binary exited and the response sent to the client.



Which httpd server version was tried:

--------------------------------------

The same binary works perfectly in the httpd version 1.3.33.

The same binary does not work in the httpd version 2.0.48 and 2.0.59



I am attaching "httpd.conf " for the version 2.0.59.



Search result on the Web:

--------------------

A bug(id 23911) in the apache version 2.0.54 exists due to which a CGI binaries goes into zombie state in some scenario. I have looked in to the following URL

http://issues.apache.org/bugzilla/show_bug.cgi?id=23911.


The problem can be reproduced with the sample program also.
Sample program:
----------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int             pid;                    /*child ID*/
    int             ret_stat;

    pid=fork();
    if(pid!=0)      /*PARENT*/
    {
        printf("Content-type: text/html\n\n");
        printf("<html><head></head><body>\n");
        printf("<h1>PARENTAL ZOMBIES 3</h1>\n");
        printf("</body></html>\n");
    }
    else
    {               /*CHILD*/
        sleep(300);
        exit(0);
    }
    return(0);
}

I am not sure ,whether it is a configuration issue or any other. Any  pointer on this issue will help me a lot.



With regards,



SaMaR



		
__________________________________________________________
Yahoo! India Answers: Share what you know. Learn something new
http://in.answers.yahoo.com/

Re: [users@httpd] Apache 2.x server is taking too much time to sending response to the client.

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
Simple, I think, interrupt your CGI process in gdb to determine what
line that hung up on.

Bill

samarjit adhikari wrote:
> Hi  All,
> 
> 
> 
> Problem Description:
> 
> ---------------------
> 
> I have written a cgi script which does 
> 
>  i) fork  and exec a command with the child process
> 
> ii) create pipe 
> 
> to read some data from the child process. The parent process waits untill it reads complete data from the child.
> 
> 
> 
> observation from the packet capture:
> 
> ------------------------------------
> 
>  i) IE is sending GET request with the CGI binary name  in the URL
> 
>        i.e. GET /XXXX/<cgi-binary> say at the time T
> 
> ii) The response came from the server at the time (T+300) sec.
> 
> 
> 
> observation from the "top" command in the server side.
> 
> --------------------------------------------------------
> 
> i)  Immediately the cgi-binary goes into "zimbie" state  consuming 0.3% of the CPU.
> 
> ii) The child process which is being created from the parent cgi-binary goes into "sleeping" state consuming 0.5% of CPU.
> 
> ii) After 300 sec the parent cgi-binary exited and the response sent to the client.
> 
> 
> 
> Which httpd server version was tried:
> 
> --------------------------------------
> 
> The same binary works perfectly in the httpd version 1.3.33.
> 
> The same binary does not work in the httpd version 2.0.48 and 2.0.59
> 
> 
> 
> I am attaching "httpd.conf " for the version 2.0.59.
> 
> 
> 
> Search result on the Web:
> 
> --------------------
> 
> A bug(id 23911) in the apache version 2.0.54 exists due to which a CGI binaries goes into zombie state in some scenario. I have looked in to the following URL
> 
> http://issues.apache.org/bugzilla/show_bug.cgi?id=23911.
> 
> 
> The problem can be reproduced with the sample program also.
> Sample program:
> ----------------------
> #include <stdio.h>
> #include <stdlib.h>
> int main(int argc, char *argv[])
> {
>     int             pid;                    /*child ID*/
>     int             ret_stat;
> 
>     pid=fork();
>     if(pid!=0)      /*PARENT*/
>     {
>         printf("Content-type: text/html\n\n");
>         printf("<html><head></head><body>\n");
>         printf("<h1>PARENTAL ZOMBIES 3</h1>\n");
>         printf("</body></html>\n");
>     }
>     else
>     {               /*CHILD*/
>         sleep(300);
>         exit(0);
>     }
>     return(0);
> }
> 
> I am not sure ,whether it is a configuration issue or any other. Any  pointer on this issue will help me a lot.
> 
> 
> 
> With regards,
> 
> 
> 
> SaMaR
> 
> 
> 
> 		
> __________________________________________________________
> Yahoo! India Answers: Share what you know. Learn something new
> http://in.answers.yahoo.com/
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> 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@httpd.apache.org
>    "   from the digest: users-digest-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org


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