httpd [apache 2.4] 内存泄漏问题
Posted
技术标签:
【中文标题】httpd [apache 2.4] 内存泄漏问题【英文标题】:httpd [apache 2.4] memory leak issue 【发布时间】:2018-10-10 05:17:43 【问题描述】:问题描述:
在我们的性能环境中,我们观察到httpd
内存使用量在一段时间内不断增加,httpd 进程内存使用量会在 10 小时内从 6MB 增加到 1GB,并且在停止加载后,进程的内存使用量不会下降到它开始的 6 MB。
所选组件的版本号(如果适用): 使用带有 RHEL 7.4 的 httpd-2.4.6-67.el7_4.6.x86_64
如何重现: 每秒触发 1000 个 HTTP 请求
复制步骤:
实际结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12314 notifs 20 0 5723112 2.101g 104 S 129.4 17.9 785:17.34 java
12582 notifs 20 0 5727148 2.082g 4 S 117.6 17.7 782:13.72 java
15509 notifs 20 0 3767700 1.009g 500 S 11.8 8.6 78:27.08 httpd
15511 notifs 20 0 3527984 984116 524 S 11.8 8.0 77:25.43 httpd
15510 notifs 20 0 3640620 964676 552 S 11.8 7.8 75:20.43 httpd
15504 notifs 20 0 77460 764 532 S 0.0 0.0 0:02.40 httpd
(注意 httpd 以 ~6 MB 开始,10 多小时后达到 ~1GB)。
预期结果:
没有这样的内存泄漏
附加信息:
系统 (VM) 配置有 12 GB 主内存和 4 GB 交换空间,httpd 吃掉了所有这些。
httpd 仅在 10180 (HTTP) 上侦听
【问题讨论】:
你请求1000次的页面是做什么的?每个 Apache 使用的模块是什么?什么服务器端技术。如果您请求静态文件与动态文件有区别吗?缺少很多元素来完全理解这个问题。 另外,如果完全不涉及编程,这是serverfault.com的问题 【参考方案1】:List of Module :-
LoadModule authz_host_module /usr/lib64/httpd/modules/mod_authz_host.so
LoadModule authz_core_module /usr/lib64/httpd/modules/mod_authz_core.so
LoadModule log_config_module /usr/lib64/httpd/modules/mod_log_config.so
LoadModule headers_module /usr/lib64/httpd/modules/mod_headers.so
LoadModule setenvif_module /usr/lib64/httpd/modules/mod_setenvif.so
LoadModule mime_module /usr/lib64/httpd/modules/mod_mime.so
LoadModule alias_module /usr/lib64/httpd/modules/mod_alias.so
LoadModule lbmethod_byrequests_module /usr/lib64/httpd/modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module /usr/lib64/httpd/modules/mod_lbmethod_bytraffic.so
LoadModule slotmem_shm_module /usr/lib64/httpd/modules/mod_slotmem_shm.so
LoadModule proxy_module /usr/lib64/httpd/modules/mod_proxy.so
LoadModule proxy_connect_module /usr/lib64/httpd/modules/mod_proxy_connect.so
LoadModule proxy_http_module /usr/lib64/httpd/modules/mod_proxy_http.so
LoadModule proxy_balancer_module /usr/lib64/httpd/modules/mod_proxy_balancer.so
LoadModule access_compat_module /usr/lib64/httpd/modules/mod_access_compat.so
LoadModule mpm_worker_module /usr/lib64/httpd/modules/mod_mpm_worker.so
LoadModule unixd_module /usr/lib64/httpd/modules/mod_unixd.so
LoadModule socache_shmcb_module /usr/lib64/httpd/modules/mod_socache_shmcb.so
we are pumping post dynamic request from back-end server towards Apache server.
Note :- same scenario was working in SLES 11 with apache 2.2 , but no`enter code here`w we are upgraded to RHEL 7.4 with apache 2.4 where we starting facing issue .
thanks in advance
【讨论】:
以上是关于httpd [apache 2.4] 内存泄漏问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Apache httpd 进程中定位内存泄漏,基于 PHP/Doctrine 的应用程序