您的问题是如何在 502 上重新启动 PHP。我的第一个答案是尝试从一开始就防止 502 发生。
PHP 可能消耗过多内存。我的猜测是您的 php FCGI 子项数量设置得太高。在您的初始化脚本中,您应该有一个类似 PHP_FCGI_CHILDREN=20 或类似的条目来控制将启动的 PHP 进程的数量。我会尝试减少数量。如果您可以确定每个 PHP 进程的平均内存(也许使用 top),那么您可以确定应该运行的 PHP 进程的最大数量。例如,如果您有一台 2,000MB 的服务器,并且每个 PHP 进程最多消耗 100MB,那么您需要将它们限制为 20 个。
您可以创建另一个位置并以@符号开始名称。@ 符号用于“内部”位置。我喜欢使用http://openresty.org的 nginx 发行版。它包括 ngx_lua http://wiki.nginx.org/HttpLuaModule模块。Lua 是一种脚本语言,可以(除其他外)执行 shell 命令。例如:
location / {
error_page 502 = @php502error;
}
location @php502error {
content_by_lua 'os.execute("/bin/restart-my-php-processes.sh")';
}
Run Code Online (Sandbox Code Playgroud)
os.execute
是阻塞的,所以你要记住这一点...我听说有人设置 thttpd 来运行脚本。因此,您可以在 @php502error 位置添加 proxy_pass 。
归档时间: |
|
查看次数: |
8203 次 |
最近记录: |