IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

core dump磁盘报警问题排查过程

博学无忧 2014-11-25 23:13:16 累计浏览 2,339 次
本机暂存

   玩客项目组中一台线上机器开始磁盘报警。分区磁盘容量已经占用超过80%。同一批上线的几台机器都没报警。而且离报警阀值还差很远。

   大概的排查步骤如下:

   首先,查找导致磁盘报警的大文件

$ find /home/ -type f -size +100M
/home/admin/wanke/web/wanke/api/core.7982
/home/admin/wanke/web/wanke/api/core.10035
/home/admin/wanke/web/wanke/api/core.4462
/home/admin/wanke/web/wanke/api/core.9658
/home/admin/wanke/web/wanke/api/core.14914
/home/admin/wanke/web/wanke/api/core.11037
/home/admin/wanke/web/wanke/api/core.23269
.....................
此处省略N多行
.....................

   看来是core dump文件过多导致的。

   彻底解决问题

   一般情况下,线上环境是不开启core dump的。为啥会线上产生这么多core dump文件?如果不关闭,可能随时磁盘又会报警。如果不清楚啥是core dump文件,请猛击《怎样用core文件调试你的linux程序?

   找出产生core dump文件的元凶

$ gdb -c /home/admin/wanke/web/wanke/api/core.7982
GNU gdb Fedora (6.8-37.el5)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
(no debugging symbols found)
Core was generated by `php-fpm: pool www

   很显然,最后一行Core was generated by `php-fpm: pool www 已经告诉我们,是php-fpm 产生的。

   通过以下命令查看,php-fpm的确有core dump的权限。

$cat /proc/7360/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size unlimited unlimited bytes

   注意,最后的的 Max core file size 为 unlimited。一般情况下,这个值为unlimited,就可以生成core dump文件。

   如果关闭core dump ?

   一般设置core file size 是使用 ulimited -c unlimited 命令。在登陆时默认执行的一些文件中,没有找到这个命令的影子。

   最终在/etc/security/limits.conf 文件中看到了如下设置:

   * soft core unlimited

   * hard core unlimited

   果断注释掉,然后重启php-fpm 进程。再次查看进程的limit信息。

   Limit Soft Limit Hard Limit Units

   Max cpu time unlimited unlimited seconds

   Max file size unlimited unlimited bytes

   Max data size unlimited unlimited bytes

   Max stack size 10485760 unlimited bytes

   Max core file size 0 unlimited bytes

   看来文件修改已经生效。

   删除core文件,释放空间

   删除后,磁盘空间占用马上降到了50%左右。

   注意:

   发现虽然/etc/security/limits.conf文件中设置了 core unlimited。但是通过unlimit -a 查看。core 的也是 0。

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 也说 Mac 的不好 (累计阅读 7,715)
  2. 又一个PHP低概率Core的分析(PHP内存管理) (累计阅读 4,391)
  3. 怎样用core文件调试你的linux程序? (累计阅读 4,025)
  4. 内核编译升级失败了以后的处理方案 (累计阅读 3,974)
  5. 使用smartmontools监控磁盘状况 (累计阅读 3,929)
  6. GDB的两个技巧 (累计阅读 3,842)
  7. 那些常见的Oracle错误 (累计阅读 3,263)
  8. vi 编辑文件时"Terminal too wide"问题的解决 (累计阅读 3,106)
  9. 获取 MySQL 崩溃时的 core file (累计阅读 2,895)
  10. 谈谈服务器基础架构工具的选择 (累计阅读 2,587)