httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lu, Yingqi" <yingqi...@intel.com>
Subject RE: svn commit: r1599531 - in /httpd/httpd/trunk: CHANGES include/ap_listen.h server/listen.c server/mpm/event/event.c server/mpm/prefork/prefork.c server/mpm/worker/worker.c server/mpm_unix.c
Date Sun, 05 Oct 2014 00:27:36 GMT
Yes, I was able to duplicate both issues and attached is a patch which should fix them. Thanks
again very much for the feedback, really appreciated!

Attached patch is based on httpd trunk r1629441. In this patch, the changes are:

1. Fix the graceful restart issue for prefork/worker/event MPM. 
2. Fix the "server seems busy" and "scoreboard is full" issue on restart for both worker and
event MPM. Prefork does not have this issue.
3. Guard the ap_daemons_to_start >= num_buckets. I mentioned this in a separate mail thread
couple days ago, I merged the change here.
4. Change CPU thread count check from _SC_NPROCESSORS_ONLN to _SC_NPROCESSORS_CONF. This makes
sure num_buckets to be a constant as long as the system is running. This change addresses
the use case like: A user offline some of the CPU threads and then restart httpd. In this
case, I think we need to make sure num_buckets does not change during the restart. 

Kaspar, can you please test the patch and let us know if that resolves your issue? 

At the meantime, can some please review the patch and help add it into trunk?

Thanks,
Yingqi


-----Original Message-----
From: Lu, Yingqi [mailto:yingqi.lu@intel.com] 
Sent: Saturday, October 04, 2014 7:52 AM
To: dev@httpd.apache.org
Subject: RE: svn commit: r1599531 - in /httpd/httpd/trunk: CHANGES include/ap_listen.h server/listen.c
server/mpm/event/event.c server/mpm/prefork/prefork.c server/mpm/worker/worker.c server/mpm_unix.c

Hi Kaspar,

Thanks for the email. I will try to duplicate your case and find a solution for it. 

Thanks,
Yingqi

-----Original Message-----
From: Kaspar Brand [mailto:httpd-dev.2014@velox.ch]
Sent: Saturday, October 04, 2014 4:08 AM
To: dev@httpd.apache.org
Subject: Re: svn commit: r1599531 - in /httpd/httpd/trunk: CHANGES include/ap_listen.h server/listen.c
server/mpm/event/event.c server/mpm/prefork/prefork.c server/mpm/worker/worker.c server/mpm_unix.c

> Author: jim
> Date: Tue Jun  3 13:07:29 2014
> New Revision: 1599531
> 
> URL: http://svn.apache.org/r1599531
> Log:
> Optimize w/ duplicated listeners and use of SO_REUSEPORT where 
> available.
> 
> Modified:
>     httpd/httpd/trunk/CHANGES
>     httpd/httpd/trunk/include/ap_listen.h
>     httpd/httpd/trunk/server/listen.c
>     httpd/httpd/trunk/server/mpm/event/event.c
>     httpd/httpd/trunk/server/mpm/prefork/prefork.c
>     httpd/httpd/trunk/server/mpm/worker/worker.c
>     httpd/httpd/trunk/server/mpm_unix.c


With these changes, I'm getting segfaults with the worker MPM from current trunk (r1629257)
when trying to gracefully restart, i.e. with SIGUSR1. "Standard" restarts (SIGHUP) seem to
work better, though I'm getting "server seems busy" and "scoreboard is full" log entries and
other errors in this case. A sample stack (CentOS 6 / x86_64) is shown below, in case it helps
in tracking down the issue.

Kaspar


(gdb) bt f
#0  make_child (s=0x7f8b447c26f8, slot=0) at worker.c:1410
        pid = <value optimized out>
#1  0x00007f8b43342037 in server_main_loop (_pconf=<value optimized out>, plog=<value
optimized out>,
    s=<value optimized out>) at worker.c:1742
        status = 0
        pid = {pid = 2188, in = 0x7f8b447c26f8, out = 0x7f8b44791138, err = 0x7f8b42811993}
        i = <value optimized out>
        old_gen = 0
        child_slot = 0
        exitwhy = APR_PROC_EXIT
        processed_status = 0
#2  worker_run (_pconf=<value optimized out>, plog=<value optimized out>, s=<value
optimized out>) at worker.c:1872
        remaining_children_to_start = 3
        rv = <value optimized out>
        i = <value optimized out>
#3  0x00007f8b432ffe7e in ap_run_mpm (pconf=0x7f8b44791138, plog=0x7f8b447be498, s=0x7f8b447c26f8)
    at mpm_common.c:100
        pHook = <value optimized out>
        n = <value optimized out>
        rv = -1
#4  0x00007f8b432f940e in main (argc=1, argv=0x7ffffbee4618) at main.c:799
        c = 0 '\000'
        showcompile = 0
        showdirectives = 1148776984
        confname = 0x7f8b433442ea "conf/httpd.conf"
        def_server_root = 0x7f8b433442d1 "/home/apache-httpd/trunk"
        temp_error_log = 0x0
        error = <value optimized out>
        process = 0x7f8b4478f218
        pconf = 0x7f8b44791138
        plog = 0x7f8b447be498
        ptemp = 0x7f8b447bc348
        pcommands = 0x7f8b447b3248
        opt = 0x7f8b447b3338
        rv = <value optimized out>
        mod = <value optimized out>
        opt_arg = 0x0
        signal_server = <value optimized out>
Mime
View raw message