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

简介:
磁盘报警。分区磁盘容量已经占用超过80%。同一批上线的几台机器都没报警。而且离报警阀值还差很远。

大概的排查步骤如下:

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


$ find /home/ -type f -size +100M
/home/demo/web/demo/api/core.7982
/home/demo/web/demo/api/core.10035
.....................
此处省略N多行
.....................


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

找出产生core dump文件的元凶


$ gdb -c /home/demo/web/demo/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。


目录
相关文章
|
29天前
|
XML 运维 监控
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
66 0
|
4月前
|
Linux
Linux日志自动清理方案
Linux日志自动清理方案
128 0
|
7月前
|
安全 程序员 API
向大厂看齐!为自己的程序增加自动转储的功能!
向大厂看齐!为自己的程序增加自动转储的功能!
|
10月前
|
存储 Kubernetes Linux
k8s日志自动收集脚本
k8s日志自动收集脚本
143 0
|
存储 API C++
dump系列(2)C++程序异常或内存错误,导致闪退的解决办法:分析dump文件
dump系列(2)C++程序异常或内存错误,导致闪退的解决办法:分析dump文件
1669 0
|
存储 运维 数据库
通过容器重启前后dump内存文件分析高危代码操作
通过容器重启前后dump内存文件分析高危代码操作
通过容器重启前后dump内存文件分析高危代码操作
|
监控 数据库连接 数据库
说说程序中的日志
大家在写程序时,如何处理与日志相关的事宜。程序中的日志应该怎么写,以下是我的经验与分享     日志一般用于记录程序运行信息,从而使开发者方便开发调试,了解生产环境执行情况。 在我看来程序中的日志主要分为两种:异常日志和非异常日志。
836 0