停止超过限制的 numproc

停止超过限制的 numproc

我们在 VPS 上运行 magento,它面临 Numproc 问题。根据我们的托管服务提供商的说法,我们的服务器超出了 numproc“400”的限制,并且内存使用率也很高。由于内存短缺,我们的网站面临“内存分配”问题。我们正在使用 nginx 和 php-fpm 处理程序。他们还将 MPM 从工作程序更改为事件。

现在我的问题是,我们如何控制内存。有没有办法在达到“400”或“90%”内存限制之前自动重新启动我们的服务,从而释放未使用进程占用的资源。重新启动哪个服务(apache、mysql 或 nginx)可以帮助我们收回资源。配置文件中的任何调整都可以帮助我们更好地分配资源。

顺便说一句,服务器状态(WHM 上)的内存使用率始终低于 40%。这不是很可疑吗。

我希望我能在这里描述我的观点。请帮助我们优化资源以便更好地利用。

问候

答案1

作为一名在托管公司工作的人,我发现我们的 OpenVZ 容器存在这个特殊问题。一些托管服务提供商会使用 OpenVZ,因为它能够超卖节点,从而产生我们所说的“坏邻居效应”。

基本上,容器将共享节点上的所有资源。是的,您被分配了一定量的内存、numprocs、磁盘空间等。但是,如果其他容器在任何资源类别中超出其限制,您的 VPS 资源可能会受到挤压(例如磁盘空间可能突然缩小或出现内存短缺)。

您的托管公司最有可能查看 numproc 和内存的失败计数。如果您多次超出 numproc 限制,则失败计数将开始累积。如果您的 magento 网站超出 400 numproc 限制,则有几种解决方案。

在达到资源限制之前重新启动服务并不是一个可行的解决方案。我确信您的目标是让您的网站以最佳的正常运行时间运行。如果没有办法优化您的网站以使用更少的资源,那么我会让您的托管公司检查流量(如果您是托管客户)以查看它是否合法。有时流量可能是恶意的,并试图进行暴力攻击,从而增加进程数。

关于内存使用情况,我会查看你的 php.ini 文件中的参数内存限制=64M。我建议在运行 4GB 或更少 RAM 的服务器上将限制设置为不高于 96M(64M 是理想的)。有时人们会在运行 2GB 内存的服务器上将其设置为 256M 或更高,并想知道为什么内存总是达到最大值。我不熟悉您的 magento 网站,所以我不确定理想的 php.ini 设置应该是什么。对于您描述的 VPS 环境,似乎限制不应高于 96M。

从听上去,您似乎经常超出 numproc 限制,这很可能是网站流量过大或编码未优化的原因。我强烈建议您迁移到硬件虚拟化环境(看看他们是否提供 KVM 或 XEN 虚拟化)。硬件虚拟化将消除“坏邻居”效应并为您提供专用资源。400 numproc 是我们公司为 OpenVZ 节点上的 VPS 服务器提供的最高限制。

如果您的托管公司不允许您迁移到硬件虚拟化环境,请尝试研究其入门级专用服务器。

相关内容