4

大约一周前,我启动了一个网站,并向邮件列表发送了一封电子邮件,告诉所有人该网站已经上线。在那之后,网站关闭了,一般错误日志中充斥着“超过进程限制”错误。从那以后,我尝试真正清理大量代码并最小化数据库连接。我仍然会在错误日志中每天看到一次该错误。什么可能导致此错误?我试图打电话给网络主机,他们说这与我的代码有关,但无法指出代码有什么问题或哪个页面导致错误的任何方向。谁能给我更多信息?例如,什么是流程,我应该有多少流程?

4

2 回答 2

1

哇。大问题。

显然,您最大化了您的 apache 子工作进程。要大致了解可以创建多少个,请使用 top 获取一个 http 进程的粗略内存占用。如果您使用的是 wordpress 或其他 cms,则每个长度可能很容易为 50-100m(如果您使用 apache 的 php 模块)。然后,假设这台机器只用于 Web 服务,取你的总内存,减去一个块供操作系统使用,然后除以 100m(在这个例子中)。这就是您可以拥有的最大工作进程。在你的 httpd.conf 中设置它。完成此操作并重新启动 apache 后,监视顶部并确保您没有开始交换内存。如果你这样做了,你设置的工人数量太高了。

如果有任何其他东西像 mysql 服务器一样运行,请在计算可以拥有的工人数量之前为它腾出空间。如果这个数字很小,粗略地引用一个伟人的话说“你需要一艘更大的船”。只是在开玩笑。对于超过 100m 的 http 进程,您可能会看到非常高的内存使用率。您可以将每个孩子的最大请求数调整得更低,以缩短 http 进程的生命周期。这可以帮助清理臃肿的 http worker。

另一个需要关注的领域是请求的时间响应时间……每个请求需要多长时间?要快速检查,请使用 firebug 的 firebug 插件并查看“net”选项卡,了解您的初始请求需要多长时间才能回复(不是图像等)。如果由于某种原因请求需要超过 1 或 2 秒的时间来响应,那么这是一个大问题,因为您会遇到日志堵塞。造成这种情况的原因可能是 php 代码或 mysql 查询响应时间过长。要解决这个问题,请确保您使用 wordpress 以使用一些好的缓存插件来降低 mysql 的压力。

不过,老实说,除非您只是因为工作人员太少而没有利用内存,否则在没有服务器(内存、cpu 计数等)和 httpd.conf 设置的详细信息的情况下,优化您的 apache 并不是一件容易的事.

注意:如果您没有服务器访问权限,您将很难确定内存使用情况。

于 2012-10-24T02:41:25.640 回答
0

进程限制通常是由共享虚拟主机提供商强制执行的,通常与在您的帐户下执行的进程数有关。这通常等于一次与您的服务器建立的连接数(假设每个连接一个 PHP 进程)。

有很多因素在起作用。您应该从您的托管服务提供商那里弄清楚该限制是多少,然后找到一个可以处理您的负载的新服务。

于 2012-10-24T02:38:57.917 回答