我有一台Linux(CentOS)服务器,我在其上运行游戏服务器,最近在更新后开始泄漏内存。如何找出导致服务器内存泄漏的原因?
答案 0 :(得分:0)
内存配置文件 使用性能工具检查泄漏。
为应用程序中运行的所有进程运行最后一个命令,并计算结果以找出导致内存泄漏的原因。
使用perf的探针的示例用法可能是检查libc的malloc()和free()调用:
$ perf探针-x /lib64/libc.so.6 malloc
$ perf探针-x /lib64/libc.so.6免费
添加了新事件: probe_libc:malloc(在0x7eac0上)
探针已创建。现在,让我们记录一下4秒钟内malloc和free在全球所有系统中的全局使用情况:
$性能记录-e probe_libc:malloc -agR sleep 4
$性能记录-e probe_libc:free -agR sleep 4
让我们在4秒钟内记录所有进程中malloc和free的使用情况:
$ perf stat -e probe_libc:free -e probe_libc:malloc -ag -p $ {pgrep $ process_name $)sleep4
输出:
进程ID'1153'的性能计数器统计信息:
11,312 probe_libc:免费
11,644́probe_libc:malloc
4.001091828秒的时间
如果每次执行perf命令时malloc和可用计数之间的差值增加,则表明存在内存泄漏。
$性能记录-e probe_libc:free -e probe_libc:malloc -agR sleep 2
运行以上命令以检查整个应用程序。
以后跑步,
$性能报告
获取以上运行的报告。