Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是什么导致了一个“错误”;“超出工艺限制”;错误?_Php - Fatal编程技术网

Php 是什么导致了一个“错误”;“超出工艺限制”;错误?

Php 是什么导致了一个“错误”;“超出工艺限制”;错误?,php,Php,大约一周前我建立了一个网站,我向一个邮件列表发送了一封邮件,告诉每个人这个网站是活的。就在那之后,网站关闭了,一般错误日志中充斥着“超出进程限制”的错误。从那个以后,我一直在努力清理大量代码并最小化数据库连接。我仍然会在错误日志中看到该错误,大约每天一次。是什么导致了这个错误?我试着打电话给网络主机,他们说这与我的代码有关,但无法告诉我代码出了什么问题或是哪个页面导致了错误。有人能给我更多的信息吗?例如,什么是进程以及我应该有多少进程?进程限制通常是由共享Web主机提供商强制执行的,通常与您帐户

大约一周前我建立了一个网站,我向一个邮件列表发送了一封邮件,告诉每个人这个网站是活的。就在那之后,网站关闭了,一般错误日志中充斥着“超出进程限制”的错误。从那个以后,我一直在努力清理大量代码并最小化数据库连接。我仍然会在错误日志中看到该错误,大约每天一次。是什么导致了这个错误?我试着打电话给网络主机,他们说这与我的代码有关,但无法告诉我代码出了什么问题或是哪个页面导致了错误。有人能给我更多的信息吗?例如,什么是进程以及我应该有多少进程?

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

有许多因素在起作用。你应该从你的主机提供商那里弄清楚这个限制是多少,然后找到一个可以处理你的负载的新的。大问题

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

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

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

不过,老实说,除非您的工作人员太少而没有利用内存,否则优化apache并不是一篇简单的短文,没有服务器(内存、cpu计数等)和httpd.conf设置的细节


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

什么是PHP进程?我很困惑。我们有一个共享的托管帐户。如果PHP是通过CGI或FastCGI执行的,那么它是系统上的一个进程,就像执行其他任何东西一样。如果PHP作为一个模块运行,它将内置到web服务器中。基本上,你的主机提供商有额外的限制,他们没有向你透露。您需要弄清楚这些限制是什么,以便在购买新主机时知道您需要什么。PHP正在我们的web服务器上使用CGI执行。我应该找一个运行PHP作为模块的web主机吗?@user1770047,不,这不是问题所在。您需要找到一个允许您所需的更高进程限制的web主机。或者,说服你现在的那个提高限制。我真的很困惑是什么导致了这么多进程。我们有另一个网站有相同的托管计划,该网站比这个网站用PHP做的更多,但它从来没有出现过问题。我应该在自己的机器上运行top吗?我用的是Wordpress,但没什么特别的。我还使用1台MySQL服务器。@user1770047将ssh插入运行apache的服务器,然后在服务器计算机上运行top以查看进程大小。如果在运行top时点击“m”,它将按内存使用量从高到低排序。@user1770047我发现您使用的不是php_mod,而是快速CGI。请阅读我关于请求时间的更新。很遗憾,我没有服务器访问权限。我完全不知道。@user1770047我将开始分析一个请求所需的时间,看看这看起来是否糟糕。