Hi!

I got a problem. Added your suggestion but got error.
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c: 
In function `perform_idle_server_maintenance':
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c:1997:
 
error: `SERVER_IDLE' undeclared (first use in this function)
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c:1997:
 
error: (Each undeclared identifier is reported only once
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c:1997:
 
error: for each function it appears in.)
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c:1998:
 
error: syntax error before ')' token
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c: 
At top level:
/usr/src/redhat/BUILD/httpd-2.0.54/server/mpm/experimental/peruser/peruser.c:2022:
 
error: syntax error before '}' token


SERVER_IDLE seems to be undefined. Any ideas?




Stefan Seufert wrote:
> Hi Janno,
>
> looking at the source it seems that the ExpireTimeout was originally
> meant to simply kill off everything, regardless of its status. (Think of
> non-terminating loops in Scripts etc). Thus the high default value of
> 1800 seconds which should allow every normal operation to finish.
>
> Still it might be worth adding another option (IdleTimeout?) doing
> exactly what you want.
>
> For a quick fix you can try to change the behaviour of the existing
> option by editing the source code:
>
> If you look at peruser.c you should find the following lines in
> perform_idle_server_maintenance():
>
>       else if(expire_timeout > 0 &&
>         (CHILD_INFO_TABLE[i].type == CHILD_TYPE_PROCESSOR ||
>           CHILD_INFO_TABLE[i].type == CHILD_TYPE_WORKER) &&
>         ap_scoreboard_image->parent[i].pid > 1 &&
>         ap_scoreboard_image->servers[i][0].status != SERVER_DEAD &&
>         apr_time_sec(now - ap_scoreboard_image->servers[i][0].last_used)
>                                                        > expire_timeout)
>
> just change the not-equal check for SERVER_DEAD to an equal check for
> SERVER_IDLE. It should look like this afterwards:
>
>       else if(expire_timeout > 0 &&
>         (CHILD_INFO_TABLE[i].type == CHILD_TYPE_PROCESSOR ||
>           CHILD_INFO_TABLE[i].type == CHILD_TYPE_WORKER) &&
>         ap_scoreboard_image->parent[i].pid > 1 &&
>         ap_scoreboard_image->servers[i][0].status == SERVER_IDLE &&
>         apr_time_sec(now - ap_scoreboard_image->servers[i][0].last_used)
>                                                        > expire_timeout)
>
> This may however result in clients that behaved badly (infinite loops,
> segfaults, ...) never to be cleaned up.
>
> Stefan
> _______________________________________________
> Peruser mailing list
> [email protected]
> http://www.telana.com/mailman/listinfo/peruser
>
>   

_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser

Reply via email to