linux – 有东西占用所有内存(我怀疑某些应用程序内存泄漏).怎么
我有运行liquidsoap icecast bundle和简单网站(httpd
mysqld)的服务器.没什么特别的.每天约2000人次,平均约50人同时在线.
服务器有8GB RAM.随着时间的推移,可用内存量不断减少,尽管在服务器上没有启动任何新内容,也没有新用户.在某些时候它开始交换,服务器上的负载上升,它变得没有响应.通常我所做的只是重启服务器…… 可以做些什么来检测究竟是什么泄漏内存?我使用top来监控资源的使用情况,但据我所知它没有显示任何帮助: 有没有办法找出使用那么多内存的东西?或什么开始大量交换到磁盘?有没有重新启动服务器释放内存的方法? 解决方法
在批处理模式下运行top以定期报告内存大小可以用来查看当事情向南时谁在使用内存.在批处理模式下运行
sar 应该对内存使用和相关I / O提供一些良好的诊断.运行munin来监视系统应该为您提供一个图表,其中详细说明了正在使用的内存.这可能会有很大帮助.
您可以使用limits.conf来限制程序的最大核心大小.正确设置,这应该杀死任何泄漏内存的程序.这适用于pam_limits模块.也可以使用ulimits命令设置限制. 您正在运行一些可能使用大量内存的程序.你可以看到的一些事情包括. >在apache2下运行的编程不良的应用程序可能会泄漏内存.发生这种情况时,您应该看到内存大小增加.通过将MaxRequestsPerChild设置为100左右,您可以调整apache2以在一定次数的使用后回收子项.如果这样可以解决问题,那么您需要解决泄漏问题.我会先看这个. 正常的内存使用:可用内存不是你想要的很多东西.如果你的系统已经运行了很长时间并且有很多空闲内存,那就错了.每次读取或写入文件时,块都将进入缓冲区缓存.这会减少你的空闲记忆,这是一件好事.系统将保留足够的可用空间来启动一些程序,而无需寻找其他内存.由于许多程序运行速度很快,因此当它们停止运行时,它们的内存将返回到空闲池. 当您读取缓冲区高速缓存中的文件时,不需要磁盘访问,并且从缓冲区高速缓存中解析读取.写入使用类似的机制.如果您的系统需要内存,则缓冲区缓存是首先使用的地方之一.大多数缓冲区可以立即释放. 如果你有内存泄漏,你会发现可用内存和缓冲区都开始缩小.这仍然不是一个严重的问题,因为泄漏的内存最终应该移动到交换空间.在填充交换空间之前,系统仍然可以正常运行,并将剩余的可用空间绘制到无法启动的程序点.通常可以使用少量交换空间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |