Linux 中怎么排查 Apache 进程占用过多内存的故障

小辰姑娘_1454

小辰姑娘_1454

2026-08-28

785人浏览

原创

apache内存过高需逐层定位:先用ps查高rss子进程,再通过/proc/pid/cmdline和访问日志关联请求,排查php资源未释放、模块冲突、keepalivetimeout过长、maxrequestsperchild设置不当及缓存配置错误等诱因,最后通过禁用模块或切换mpm模式验证。

linux 中怎么排查 apache 进程占用过多内存的故障

Apache 进程内存占用过高,不能只盯着 httpd 进程名看,得一层层剥开:先确认是不是它真在吃内存,再定位是哪个子进程、哪个请求、哪段脚本或哪项配置在拖累。整个过程重在“关联”和“验证”,而不是盲目调参。

直接看哪个 Apache 子进程占内存最多
用 ps 按实际物理内存(RSS)排序,一眼揪出大户:

ps aux --sort=-rss | grep httpd | head -10

重点关注 RSS(单位 KB)和 %MEM 列。如果某个 httpd 进程 RSS 达到 200MB+,而服务器总内存才 2GB,这就明显异常。注意区分 prefork(多进程)和 worker/event(多线程)模式——prefork 下每个子进程独立占内存,worker 下线程共享内存但单个线程失控也会拉高整体。

查这个高内存进程具体在跑什么
拿到 PID 后,先看它加载了哪些模块和配置:

cat /proc/PID/cmdline | tr '\0' '\n'

输出里常含 -f /etc/httpd/conf/httpd.conf 或 DocumentRoot /var/www/xxx,能快速对应到站点。更关键的是查访问日志,把时间对上:

# 查最近 1 分钟的请求,按路径统计频次和响应时间
awk -v start=$(date -d '1 minute ago' '+%d/%b/%Y:%H:%M') \
    '$4 ~ start {print $7, $9}' /var/log/httpd/access_log | \
    awk '{path[$1]++; time[$1]+=$2} END {for (p in path) print path[p], int(time[p]/path[p]), p}' | \
    sort -nr | head -5

如果某 URL 出现频次高、平均响应时间超数秒,大概率就是它——比如一个没加 limit 的 PHP 分页接口,或一个反复读大文件的脚本。

Apache Superset Dashboard and SQL Exploration Skill
Apache Superset Dashboard and SQL Exploration Skill

Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。

下载

检查常见内存膨胀诱因

  • PHP 脚本未释放资源:循环中 new PDO() 却不 unset(),或 file_get_contents() 读几百 MB 文件后没清空变量;
  • 模块冲突或滥用:mod_php + mod_proxy + mod_rewrite 组合下,复杂规则可能触发重复解析,累积内存;
  • KeepAliveTimeout 过长:设成 30 秒,大量空闲连接挂着,每个连接维持 socket 缓冲区 + SSL 上下文;
  • MaxRequestsPerChild 过大或为 0:子进程永不退出,长期运行后因 PHP 内存泄漏越涨越大;
  • 缓存配置不当:mod_cache_disk 的 CacheRoot 挂载在 tmpfs 上,实际把缓存全塞进内存。

验证是否配置或模块问题
临时停用可疑模块试试:

a2dismod php8.1 deflate cache_disk  # Debian/Ubuntu
systemctl reload apache2

观察内存是否回落。若明显下降,再逐个启用,定位元凶。也可以改用 mpm_event 替代 mpm_prefork(尤其搭配 PHP-FPM),让 Apache 自身更轻量——这时 httpd 进程内存通常压到 10–20MB,压力转给独立的 php-fpm 进程,便于单独调优。

不复杂但容易忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux apache

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

840

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2432

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

816

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

729

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

374

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2196

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4032

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

647

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习