我们使用mod_php和mysql在Apache上部署了Magento应用程序。我注意到apache服务器有时会消耗大量内存,这会导致内存交换并导致服务器上的高负载。每当apache服务器上有高负载时,导致高负载的apache进程在mysql端处于休眠模式,而在客户端处于CLOSE_WAIT状态。如有任何帮助来解决这个问题,我们将不胜感激。
发布于 2012-06-20 20:21:50
@raj,您可能会发现进程处于S状态,因为它们正在等待另一个受I/O约束的进程(D状态)。让机器停止交换。
因此,关键是解决两个关键问题,标准内存分配和内存承诺。
在运行Magento时,只要将PHP内存限制设置得太高,就很容易对RAM进行大规模提交。在正常情况下,它不会有任何不良影响,但一旦应用程序尝试使用该内存,它几乎会立即进入交换(如果你已经耗尽了内存)。
然后,您可能会发现Apache并不是内存使用的主要关注点,而是MySQL更有可能是罪魁祸首。
您没有提到您的服务器规范或您的商店的任何具体细节,因此不可能准确地提供建议。但是,简单地修改您的Apache和MySQL配置将是一个简单的起点。删除Apache线程、MySQL连接、分配的内存承诺的数量。然后开始用像Munin这样的工具绘制图形,这样就可以将流量、线程、CPU使用和内存使用联系起来。不这样做,你就是盲目工作。
但是,我建议您不要在netstat周围乱搞,因为您还需要很长时间才需要诊断TCP状态;您需要从头开始。
发布于 2012-05-17 11:45:58
去读一些关于HTTP调优和性能管理的好书(真的--你不太可能在这里得到答案)。
这会导致内存交换
然后您的服务器配置不当-- Then服务器永远不应该开始交换。应用通常的apache调优程序并减少php内存。
每当apache服务器上有高负载时,导致高负载的apache进程在mysql端处于睡眠模式。
嗯?根据定义,休眠过程不会导致加载。什么mhysql端?
https://serverfault.com/questions/389956
复制相似问题