## 默认的coredump文件名是core,通过将core_uses_pid设置为1,coredump文件名将成为core.PID,如果core_pattern不包含%p(默认不包含)并且设置了core_uses_pid,则.PID将附加到文件名中 echo 1 > /proc/sys/kernel/core_uses_pid cat /proc/sys/kernel/core_uses_pid ## 1 "debug" (may cause privileged information to be leaked) ## 2 "suidsafe" (recommended) - protect privileged information by having the core dump be owned by and only readable for root echo 2 > /proc/sys/fs/suid_dumpable cat /proc/sys/fs/suid_dumpable ## 将core文件生成到指定目录,确保空间足够且有权限写入 echo "/data/mysql/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern cat /proc/sys/kernel/core_pattern ## 示例文件 core-mysqld-11-996-1000-2928-1643008064 - 程序为mysqld - signal码为11 - 程序运行用户uid为996 - 程序运行用户gid为1000 - 程序进程号为2928 - 生成core的时间戳为1643008064,可用date -d @1643008064解析为易识别的时间格式 ## 参数说明 %p pid %p global pid %i tid %I global tid %u uid %g gid %d dump mode(matches PR_SET_DUMPABLE and /proc/sys/fs/suid_dumpable) %s signal number %t UNIX time of dump %h hostname %e executable filename %E executable path
注意调整的是程序运行用户的core file,以及该参数的修改是对下一次启动的服务生效,已启动的服务不生效,可以用
cat /proc/${PID}/limits |grep core
查看当前的限制
## 查看当前core的大小限制 [root@10-186-61-162 mysql]# ulimit -a|grep core core file size (blocks, -c) 0 ## 调整core的限制为unlimited [root@10-186-61-162 mysql]# ulimit -c unlimited [root@10-186-61-162 mysql]# ulimit -a|grep core core file size (blocks, -c) unlimited ## 在RHEL7上可以对MySQL服务单独配置CORE限制 [root@10-186-61-162 system]# cat /etc/systemd/system/mysql_3310.service |grep Limit LimitNOFILE = 65535 LimitCORE=infinity
loose_innodb_buffer_pool_in_core_file = 1 core-file