it-swarm-ja.com

nginx + php5-fpm:リソースが一時的に利用できません

私はSymfonyアプリ用にこの設定のnginx(Debian dockerコンテナ内)を持っています:

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が利用可能で、1つの要求のみを行っています。CPU負荷は0.0です。

FPMをnginxで機能させるにはどうすればよいですか?

1
Tim-Erwin

構成スニペットに表示される明らかなものは、迷子です/文字:

    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。これは実際には問題ではありませんが、問題が発生するシナリオに遭遇した可能性があります。


それでも解決しない場合は、アプリケーションコードを調べてください。

0
Michael Hampton