我有一个在PHP编写的后台运行的脚本,它连续多次连接到其他服务器(逐个)。
我专门研究了内存泄漏,以便正确关闭所使用的资源,并且我已经使用PHP的memory_get_usage()
函数实现了脚本正在使用的实时输出。
脚本运行了大约一个小时,内存显示大约340kb(最大360kb)。
然而,它停了下来。没有任何错误消息或其他任何内容。
当我看到dmesg
时,我看到的是:
内存不足:杀死进程3147(php5)得分905或牺牲孩子
杀死进程3147(php5)total-vm:651064kB,anon-rss:475032kB, 文件RSS:48KB
(有关信息,我有512Mb数字海洋服务器)
使用之前的流程列表,包括lowmem_reserve
我开始认为脚本包含一些内存泄漏。你能证实一下吗?但如果是这种情况,为什么memory_get_usage
没有增加?它可靠吗?有没有更好的方法来追踪潜在的内存泄漏?
更新1:这是我服务器的当前状态
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2283 root 20 0 67104 6724 900 S 0,0 1,3 0:05.97 fail2ban-server
4100 cyril 20 0 21416 4156 1672 S 0,0 0,8 0:00.16 bash
4094 root 20 0 81856 3976 3136 S 0,0 0,8 0:00.00 sshd
4192 root 20 0 20568 3384 1732 S 0,0 0,7 0:00.09 bash
2370 root 20 0 62032 2264 1196 S 0,0 0,4 0:00.13 console-kit-dae
4099 cyril 20 0 81856 1676 848 S 0,0 0,3 0:00.00 sshd