Apache httpd 工作进程崩溃(Centos 7 上的 IUS httpd24u)

Apache httpd 工作进程崩溃(Centos 7 上的 IUS httpd24u)

我正在运行 httpd24u 包宫内节育器在两台 Centos 7 服务器上。该软件包的版本标识符为“2.4.52-1.el7.ius”。

在过去一周左右的时间里,我们一直看到服务器出现间歇性中断的 HTTP 响应。浏览器报告“net::ERR_CONNECTION_CLOSED”,服务器错误日志包含如下输出:

*** Error in `/usr/sbin/httpd': free(): invalid next size (fast): 0x00007fb394015f10 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81329)[0x7fb3cf231329]
/lib64/libcrypto.so.10(CRYPTO_free+0x1d)[0x7fb3c7b1396d]
/lib64/libcrypto.so.10(EVP_MD_CTX_cleanup+0xe9)[0x7fb3c7bd0a69]
/lib64/libcrypto.so.10(+0x1275ee)[0x7fb3c7bcc5ee]
/lib64/libssl.so.10(ssl23_accept+0x39)[0x7fb3c7f37409]
/etc/httpd/modules/mod_ssl.so(+0x18352)[0x7fb3c0122352]
/etc/httpd/modules/mod_ssl.so(+0x19ed6)[0x7fb3c0123ed6]
/etc/httpd/modules/mod_ssl.so(+0xdad0)[0x7fb3c0117ad0]
/usr/sbin/httpd(ap_run_process_connection+0x40)[0x55a2b89abe10]
/etc/httpd/modules/mod_mpm_event.so(+0x714a)[0x7fb3c25db14a]
/etc/httpd/modules/mod_mpm_event.so(+0x7d9e)[0x7fb3c25dbd9e]
/lib64/libpthread.so.0(+0x7ea5)[0x7fb3cf789ea5]
/lib64/libc.so.6(clone+0x6d)[0x7fb3cf2aeb0d]
======= Memory map: ========
55a2b8955000-55a2b89e1000 r-xp 00000000 08:03 1879095252                 /usr/sbin/httpd
55a2b8be0000-55a2b8be3000 r--p 0008b000 08:03 1879095252                 /usr/sbin/httpd
55a2b8be3000-55a2b8be5000 rw-p 0008e000 08:03 1879095252                 /usr/sbin/httpd
55a2b8be5000-55a2b8be9000 rw-p 00000000 00:00 0 
55a2b9fea000-55a2ba3a0000 rw-p 00000000 00:00 0                          [heap]
55a2ba3a0000-55a2ba46c000 rw-p 00000000 00:00 0                          [heap]
7fb34c000000-7fb34c021000 rw-p 00000000 00:00 0 
7fb34c021000-7fb350000000 ---p 00000000 00:00 0 
7fb354000000-7fb354074000 rw-p 00000000 00:00 0 
7fb354074000-7fb358000000 ---p 00000000 00:00 0 
7fb358000000-7fb358021000 rw-p 00000000 00:00 0 

(内存映射持续数页。)

我不知道如何解释这个错误信息。我知道“free():下一个大小无效”表示内存错误(试图free()取消分配内存或将free()同一内存加倍)。

我能想到的最近发生的几件可能相关的事件有:

  1. httpd24u 软件包最近才更新。所有 httpd 文件(模块等)的最后修改时间都是 1 月 7 日。不过,我认为我们的问题不会追溯到那么久以前。
  2. 我们最近(2 月 3 日)启用了 HTTP/2。这还涉及将 httpd 从“worker” MPM 切换到“event” MPM(至少在其中一台服务器上)。

显然,下一个故障排除步骤是禁用 HTTP/2,看看错误是否消失。但是,即使这有帮助,我们也不想长时间不使用 HTTP/2,因为它提供了性能改进。在这种情况下我还能尝试什么?

--

更新:恢复到 2.4.51(没有其他更改)提高了我们服务器的可靠性,我认为是因为这个错误是在 2.4.52 中创建的:https://bz.apache.org/bugzilla/show_bug.cgi?id=65769

答案1

这个 httpd 随机崩溃问题也影响了我们的 CentOS 服务器。它似乎也与 MPM 工作模块有关。毫无明显原因(当然不是在负载下)httpd 崩溃了,尽管服务器报告它仍在运行并且正常。UptimeRobot 迅速报告服务器上的所有站点都瘫痪了,这通常非常可靠。今天已经发生过两次了,第一次发生在上周五,即 2 月 11 日。在那之前根本没有发生过。

相关内容