Apache Segfault高负载

时间:2014-06-06 15:06:20

标签: apache load segmentation-fault

我在Apache服务器上处理随机段错误。 它发生在我的高负载服务器上,而它从未发生在低负载服务器上。

我有一个Core Dump并使用了GDB。事实是,我无法弄清楚gdb信息出了什么问题。我想这是堆栈的问题,但我无法通过增加ThreadStackSize来解决它。有人能帮助我吗?

这是核心转储文件中bt full的结果:

(gdb) bt full
#0  0x00007f3999130e75 in pthread_join () from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#1  0x00007f3999373772 in apr_thread_join () from /usr/lib/libapr-1.so.0
No symbol table info available.
#2  0x00007f3999c32f4e in join_workers (listener=0x7f398fc29ac0, threads=threads@entry=0x7f399dd5b4d0)
    at worker.c:1104
        worker_os_thread = 0x7f398fc296f8
        i = 4
        rv = <optimized out>
        thread_rv = 0
#3  0x00007f3999c332a0 in child_main (child_num_arg=child_num_arg@entry=4) at worker.c:1287
        threads = 0x7f399dd5b4d0
        rv = <optimized out>
        ts = 0x7f398fc29128
        thread_attr = 0x7f398fc29148
        start_thread_id = 0x7f398fc291a8
#4  0x00007f3999c5f7a9 in make_child (s=0x7f3999be8818, slot=<optimized out>) at worker.c:1341
        pid = 0
#5  0x00007f3999c6005d in perform_idle_server_maintenance () at worker.c:1560
        j = <optimized out>
        free_slots = {3, 4, 2, 8, 3, 0, -1715671832, 0, -9876048, 32767, -1724501777, 32569, 0, 0, -1692282864,
          32569, 2, 0, 0, 2, 0, 0, 0, 0, -1715544024, 32569, -1692282864, 32569, -9875984, 32767, -1724499750,
          32569}
        total_non_dead = <optimized out>
        active_thread_count = <optimized out>
        idle_thread_count = <optimized out>
        free_length = <optimized out>
        i = <optimized out>
        ps = <optimized out>
        totally_free_length = <optimized out>
        last_non_dead = <optimized out>
#6  server_main_loop (remaining_children_to_start=0) at worker.c:1663
        status = 0
        pid = {pid = -1, in = 0x7f3995c9c89d, out = 0x7f3999bee028, err = 0x7f39993627ae}
        i = <optimized out>
        child_slot = <optimized out>
        exitwhy = APR_PROC_EXIT
        processed_status = <optimized out>
#7  ap_mpm_run (_pconf=_pconf@entry=0x7f3999bee028, plog=<optimized out>, s=s@entry=0x7f3999be8818)
    at worker.c:1765
        remaining_children_to_start = 0
        rv = <optimized out>
#8  0x00007f3999c33ee6 in main (argc=3, argv=0x7fffff694fb8) at main.c:755
        c = 0 '\000'
        configtestonly = 0
        confname = 0x7f3999c623ba "apache2.conf"
        def_server_root = 0x7f3999c623ad "/etc/apache2"
        temp_error_log = <optimized out>
        error = <optimized out>
        process = 0x7f3999bf7118
        server_conf = 0x7f3999be8818
        pglobal = <optimized out>
        pconf = 0x7f3999bee028
        plog = 0x7f3999bba028
        ptemp = 0x7f3999be6028
        pcommands = 0x7f3999bec028
        opt = 0x7f3999bec118

感谢你的帮助

1 个答案:

答案 0 :(得分:0)

我终于找到了答案。

由mod_perl调用c库引起的段错误。我无法找出为什么它只在高负荷下发生。

我使用fastcgi来处理请求,我没有任何其他段错误。