我有一个Linuxnetworking服务器。 它运行着Apache和一个基于python的web应用程序和postgres。 这很慢。 通过运行ab (apache基准testing)和vmstat我可以看到当请求进入时它正在交换。
有没有什么程序能dynamic地告诉我哪个进程导致了这个swappyness?
iotop可能是你以后。 您需要安装Python 2.5或更高版本,这很可能。 您还需要启用一些内核(2.6.20或更高版本)选项(TASK_DELAY_ACCT和TASK_IO_ACCOUNTING),以便正确的度量值显示在/ proc中供iotop使用。
你一定要从apache中删除所有不必要的模块。 这很重要。 closures扩展状态,自动索引等
将AllowOverride设置为“None”,并在服务器configuration中执行任何htaccess的东西将有助于I / O,并减less响应时间,这将导致每分钟内存使用量更less。
请参阅Apache性能指南 。
还可以查看postgresql文档,以提高性能并减less内存使用量。
可能你最大的内存是python程序,因为python没有针对低内存使用进行非常优化。 您可以尝试应用程序上的分析器。
如果这个活动是在执行许多HTTP请求的时候,而不是在其他时候,那么它将是主动引起交换活动的Apache和python进程。
没有什么比这更多,我们可以说没有一点点信息。
一般来说,为了减lessApache内存的使用,你需要通过改变configuration文件来减lesssubprocess的数量,如果你使用的是FastCGI,那么对于python进程的数量是一样的。
但潜在的问题是…
我们无法看到或知道Linux如何用当前的ps或top命令处理内存。 这是一个谜。
而更多的多核系统,Linux系统会计应用程序需要改进