Apache因磁盘空间不足无响应时,错误日志不直接提示“磁盘满”,而是表现为SSLMutex创建失败、无法打开日志、Bus error、apr_file_open报“No space left on device”等;需结合df -h与df -i查磁盘及inode占用,ipcs -a查apache残留IPC资源,lsof +L1查已删未释文件,并按configtest→模块检查→调试启动顺序恢复。

Apache 因磁盘空间不足导致服务无响应,错误日志本身往往不直接写“磁盘满了”,而是表现为子进程崩溃、无法写日志、启动失败或请求超时等间接现象。排查需结合日志线索与系统状态交叉验证,不能只盯 error.log 里有没有“no space”字样。
看错误日志里的典型异常信号
打开 /var/log/apache2/error.log(Debian/Ubuntu)或 /var/log/httpd/error_log(RHEL/CentOS),重点搜索以下关键词:
- Cannot create SSLMutex 或 could not create rewrite map cache —— Apache 尝试创建共享内存或缓存文件失败,常因 tmpfs 或 /dev/shm 满了
- Failed to open log file、Permission denied: AH00099 —— 表面是权限问题,实则是磁盘满导致 inode 耗尽或 write 失败
- Segmentation fault、child pid XXX exit signal Bus error (7) —— 部分模块(如 mod_ssl、mod_cache)在写入临时文件失败时会触发底层崩溃
- 大量重复的 apr_file_open: No space left on device —— 最直接证据,但出现前可能已被日志轮转机制屏蔽
查系统层面的磁盘与 IPC 资源残留
Apache 在磁盘满后若被强制 kill(如 kill -9),常遗留共享内存段、信号量或消息队列,持续占用内核资源,即使清理了磁盘,ipcs -a 仍显示大量 apache 相关条目,导致后续启动报 “No space left on device” —— 实际是内核 IPC 资源耗尽,而非磁盘。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 运行
ipcs -a | grep apache查看是否有残留的 shm、sem、msg 条目 - 清除全部 apache 相关 IPC 对象:
for i in $(ipcs -s | awk '/apache/{print $2}'); do ipcrm -s $i; done - 同时检查
/dev/shm使用率:df -h /dev/shm,清空:sudo rm -f /dev/shm/*
确认磁盘与 inode 真实使用情况
仅看 df -h 不够,需同步检查 inode:
-
df -h—— 查看各挂载点容量,重点关注/var(日志)、/tmp(临时文件)、/(根分区) -
df -i—— 查看 inode 使用率,inode 耗尽时df -h显示还有空间,但新建文件失败 - 定位大文件或日志膨胀:
sudo du -sh /var/log/apache2/* | sort -hr | head -10 - 检查是否被删除但未释放的文件(常见于 logrotate 异常):
lsof +L1或sudo lsof | grep deleted | grep apache
验证与恢复操作顺序
完成清理后,不要直接重启 Apache,按顺序验证:
- 先执行
sudo apachectl configtest确保配置无误 - 再运行
sudo apachectl -t -D DUMP_MODULES确认模块加载正常(磁盘满曾导致模块初始化失败) - 用
sudo apachectl -k start -e debug -E /tmp/start_debug.log启动并捕获调试日志 - 启动成功后,立即检查
ps aux | grep apache和ss -tlnp | grep :80确认进程与端口真实就绪

















