PHP运行速度太慢,总是显示“504 Gateway Time-out”

PHP运行速度太慢,总是显示“504 Gateway Time-out”

My server spec: Dual core ATOM 330 CPU 2GB RAM Use nginx with PHP in fastcgi use eaccelerator CPU 74.3%id RAM used: 350MB of 2GB 

在我的服务器中有很多站点,每一分钟都有cron运行,甚至在几分钟内,同时运行两个或三个cron。

我的所有网站cron都很重,通常是运行超过一分钟的cron。

我的nginx.conf变得太大了,直到nginx拒绝启动,因为太多的网站在里面。 它已经通过增加server_names_hash_max_size来解决。 我打算在我的服务器中添加更多的网站

现在,打开我的网站总是显示504 Gateway Time-out 。 我testing了许多eaccelerator和PHP设置,但是这个504 Gateway Time-out仍然发生。

禁用cron时, 504 Gateway Time-out将消失

我不知道:这是因为没有足够的处理器能力?

我该怎么办? 升级我的处理器?

– – – – 添加

这是刚刚我的CPU的top

 Cpu(s): 17.5%us, 3.8%sy, 0.1%ni, 71.6%id, 6.9%wa, 0.1%hi, 0.1%si, 0.0%st 

那个错误是nginx告诉你PHP正在超时。

为了确定什么是错误的,我们需要看看PHP代码实际上在做什么。

如果错误与cron作业密切相关,并且我假设这些cron作业正在运行PHP脚本和/或与常规PHP代码使用的相同资源(可能是DB或其他)竞争 – 那么您应该启动在这一点上寻找争议。

有些东西导致你的PHP会话没有完成他们的代码,并挂起 – 专注于此,你会find你的答案。 (另外 – 为这种情况设置优雅的错误页面 – 我认为nginx可以让你做到这一点!)

我该怎么办? 升级我的处理器?

显然不是 – 从你的状态来看,你的处理器闲置在75%左右,所以这很可能不是问题。

你看过你的IO使用情况吗? 我会把钱投入到你的stream程不得不等待IO的猜测上,因此比平时花费的时间要长。

运行top并观察CPU使用行中的%wa项目。 以下是我的一台服务器的输出示例:

 Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 

如果这个%wa价值高于20%左右,这很可能是你的问题。