nginx + php5-fpm:资源暂时不可用

nginx + php5-fpm:资源暂时不可用

我有一个 nginx(在 Debian docker 容器中),其 Symfony 应用程序的配置如下:

location ~ ^/api/(app|app_dev|config)\.php(/|$) {
    root /var/www/backend/web/;
    fastcgi_split_path_info ^/api/(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    fastcgi_param HTTPS off;
}

位置被正确识别,SCRIPT_FILENAME指向正确的文件。但是,我得到了

recv() not ready (11: Resource temporarily unavailable)

每当我发出请求时,nginx 调试日志中都会出现这样的信息。nginx 会以 进行响应504 Gateway Time-out

有一些空闲的 fpm 工作进程,我杀死它们后它们会立即被重新创建,这对我来说似乎是正确的,因为它是一个池。我尝试使用127.0.0.1:9000而不是套接字,但结果是一样的。这很可能不是负载或内存的问题,有足够的 RAM 可用,而且我只发出一个请求,CPU 负载为 0.0。

如何使 FPM 与 nginx 协同工作?

答案1

在您的配置片段中,我看到的明显的东西是杂散/字符:

    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

请注意,在示例配置中,这一点是不存在的。

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

/root指令中也有一个遗漏之处。

    root /var/www/backend/web/;

我期望看到:

    root /var/www/backend/web;

使用您现有的配置,SCRIPT_FILENAME设置为,例如/var/www/backend/web///api/config.php。这实际上不应该有关系,但您可能遇到过它确实有关系的情况。


如果这不能解决问题,请开始查看您的应用程序代码。

相关内容