Debiannetworking服务器上的内存使用率不断上升

我的web服务器在同一台机器上运行apache 1.3.x的PHP应用程序和mysql。 大多数情况下,它运行良好,CPU使用率仍然有很好的余地,但不知何故内存使用在整个正常运行时间内不断增长。

虽然它看起来像是时不时,我有片刻我的服务器因为内存不足而closures。 重启apache或者mysql只会减less100M的memusage。

附件是每月内存使用情况的概述。 在内存不足的情况下,这两次大规模的丢包是服务器重启。 http://imageshack.us/photo/my-images/51/memorymonth.png/

对他的行为有任何解释,或者我可以如何解决?

谢谢! 史蒂芬

linux内存pipe理主要是试图利用所有可能的内存。 “空闲”空间不断用作缓冲区高速caching以提高效率。 这随着时间的推移而增长,但随着新进程需要更多的内存,随着空闲池的缩小,内存pipe理器将根据需要返回缓冲区caching。 因此,当您终止某些进程时,您可能会看到正在释放的部分内存。 但是,此缓冲区caching不会导致内存不足。

问题:您使用的是32位还是64位的Linux版本。 如果您使用的是32位版本,那么有可能mysql的某个apache进程碰到2GB的进程内存限制,从而报告内存不足。 但这只是一个猜测。

你是否正在运行除了可能会占用内存的apache和mysql以外的其他东西。 一些严重编码的Java应用程序也一直在stream泪。 现在还不清楚你的其他进程是否会导致内存问题。

对系统,进程的混合,mysqlconfiguration参数的一些调查可能是有序的。

顺便说一句,我明白,你可以刷新缓冲区caching使用以下命令(以root身份):

sync; echo 3 > /proc/sys/vm/drop_caches 

但是,这不是我build议你在生产环境中做的事情,但在testing或基准testing环境中可能会很有趣。

希望这可以帮助。

graphics显示的行为对于linux / unix是正常的,因为它会一直使用所有可用的内存,以便更好地pipe理自己 – 如果您想知道更多,有无数文章讨论此行为。 这就是为什么重新启动mysql或apache只会导致一个小的“增益”。

既然你不能“解决”这个特定的行为,你需要检查发生了什么事情导致内存不足的问题。 对于Apache + php来说,创build一个竞争条件并不困难,无论是从stream量高峰还是在运行的应用程序中的错误。

调整你的apacheconfiguration的限制,调整mysql的连接和内存限制,安装PHP的操作码caching都是从现有的设置中获得更多性能的所有方法。

随意张贴更多的细节或其他问题获得更多的帮助。

祝你好运!