使用nginx 1.7&从PostgreSQL数据库中检索超过100万行的PHP(Laravel框架)导致错误500在10秒内显示。
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.
我已经设置了一些更长的时间并重新加载nginx但它不起作用。哪些设置可以防止此超时?
启用位点-
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 6000;
fastcgi_send_timeout 6000;
client_body_timeout 6000;
send_timeout 6000;
proxy_read_timeout 6000;
}
答案 0 :(得分:1)
解释我有些神秘的评论,并提供一个可能的答案:
此看起来不像是超时,这会导致nginx
发出504 Gateway Timeout
错误。 HTTP错误500意味着实际上存在错误,即:
所以,你有三个地方进行检查:FastCGI的日志中,Laravel / PHP错误日志,并可能PostgreSQL的(不太可能,因为PostgreSQL的不应该处理数百万行的问题 - 但也许有记忆的问题)
如果您不想或不能检查日志,直接加载页面,而不是从nginx
传递,应该提供更多信息,如果您不想或不能检查日志。
我的钱将在PHP层中出现内存错误,或者在FastCGI中的资源(内存和/或CPU)耗尽问题上失败。
如果是这样,你可以通过在php.ini
中为PHP进程提供更高的内存空间来快速解决问题。或者更好的是,重新设计流程以便它不会占用太多数据(你肯定不会显示一百万行;也许你在PHP中做了一些在PostgreSQL级别可以做得更好的处理?)。 / p>