在Linux系统中,配置核心转储文件(Core Dump File)可以帮助你调试程序崩溃或异常终止的原因。你可以通过设置系统参数来启用核心转储,并限制其最大大小为8GB。
步骤
1. 启用核心转储
首先,确保核心转储功能已启用。你可以通过以下命令检查当前的核心转储设置:
ulimit -c
如果输出为0
,表示核心转储功能未启用。你可以通过以下命令启用核心转储:
ulimit -c unlimited
2. 设置核心转储文件路径
你可以通过设置/proc/sys/kernel/core_pattern
文件来指定核心转储文件的保存路径和命名规则。
-
编辑
/etc/sysctl.conf
文件:sudo nano /etc/sysctl.conf
-
添加或修改以下行:
kernel.core_pattern=/var/crash/core-%e-%p-%t
-
%e
:可执行文件名。 -
%p
:进程ID。 -
%t
:时间戳。
-
-
应用配置:
sudo sysctl -p
3. 设置核心转储文件的最大大小
你可以通过设置/proc/sys/kernel/core_uses_pid
文件来限制核心转储文件的最大大小。
-
编辑
/etc/security/limits.conf
文件:sudo nano /etc/security/limits.conf
-
添加以下行:
* soft core 8388608 * hard core 8388608
-
8388608
是 8GB 的值(8 * 1024 * 1024)。
-
-
编辑
/etc/sysctl.conf
文件:sudo nano /etc/sysctl.conf
-
添加或修改以下行:
fs.suid_dumpable=2
-
应用配置:
sudo sysctl -p
4. 创建核心转储文件目录
确保核心转储文件的保存目录存在,并且具有适当的权限。
-
创建目录:
sudo mkdir -p /var/crash
-
设置权限:
sudo chown root:root /var/crash sudo chmod 1777 /var/crash
验证配置
你可以通过运行一个会导致崩溃的程序来验证配置是否生效。例如,运行以下命令:
./crash_program
如果配置正确,你应该在/var/crash
目录下看到生成的核心转储文件。
总结
通过以上步骤,你可以在Linux系统中配置核心转储文件,并限制其最大大小为8GB。这样可以确保在程序崩溃时生成核心转储文件,以便后续分析和调试。
在tomcat中dump日志添加
当tomcat经常内存溢出时,排查比较困难,可以选择添加dump日志,当宕机时会生成hprof格式文件,用于内存分析便于排查问题。
在windows服务器中需要配置bin/catalina.bat文件,XX:HeapDumpPath 为磁盘的已存在的路径,内存溢出时hprof文件会生成在配置路径下。
set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=F:\dump
在linux服务器中需要配置bin/catalina.sh文件。
JAVA_OPTS="$JAVA_OPTS -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/ "