1

PHP を使用するサーバー上のページに移動すると、「502 Bad Gateway」エラーが発生するという問題が頻繁に発生します。

エラーログ:

/var/log/nginx/error.log毎分このエラーの約 3 つのコピーを示します。

2016/08/27 15:07:22 [error] 17309#0: *53554 connect() to unix:/var/run/php5-fpm.sock 
failed (11: Resource temporarily unavailable) while connecting to upstream, client: 
[dedicated server], server: localhost, request: "POST /xmlrpc.php HTTP/1.0", 
upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: [my IP address]

nginxまたはプロセスからの CPU 負荷php5-fpmが非常に大きくなる (100% を超える) こともありますが、わずかに目立つ (2%) こともあり、重要でないことはめったにありません。

syslog(!)でよく見かけるものを次に示します。

Aug 27 15:17:21 [site] avahi-daemon[871]: Invalid response packet from host 
[some IP address that isn't mine and nslookup never heard of].

私がこれまでに試したこと:

  • apt-get update
  • php5php5-cgi、および を削除して再インストールphp5-fpm
  • apache2システムで実行されていないことを確認しました
  • これを...nginx.conf内の に追加しました:http {}

    fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;

  • を実行している同じユーザーが をnginx所有していることを確認しました/var/run/php5-fpm.sock。これは、listen.ownerおよびlisten.groupで参照されている所有者と同じ/etc/php5/fpm/pool.d/www.confです。

  • そのソケットへの参照を TCP/IP ソケットに変更してみました:

    /etc/nginx/sites-available/defaultfastcgi_pass unix:127.0.0.1:9000; /etc/php5/fpm/pool.d/www.conf行を含む行を含むlisten = 127.0.0.1:9000;

    これにより php ページが機能しなくなったので、その変更を元に戻しました。

  • nginx.confセットアップで PHP ファイルを無効にしていないことを確認しました。私はそうではなく、時にはうまくいくので、それはあり得ません。

php5-fpm セットアップ:

(a)頻繁に発生するため、(b)504エラーが発生しない場合、phpを使用するページで読み込み時間が非常に遅くなるため、php5がメモリまたはCPU時間を消費する問題であると思われます。/etc/php5/fpm/pool.d/www.confファイルの関連部分は次のとおりです。

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

だから:他に何を試すべきですか?ティア。

4

1 に答える 1

5

以下の項目を確認できます。

1-sudo service php5-fpm status実行していない場合は開始してみてください

2- ソケットを tcp/ip に変更している間に unix を削除します。つまり、/etc/nginx/sites-available/defaultファイル内で、php ブロックを に変更fastcgi_pass unix:/var/run/php5-fpm.sock;fastcgi_pass 127.0.0.1:9000;/etc/php5/fpm/pool.d/www.confファイルを に変更listen = /var/run/php5-fpm.sockします。listen = 127.0.0.1:9000

3- php のプロセス マネージャーを増やしてみpm.max_children=40pm.start_servers = 10くださいpm.min_spare_servers = 5pm.max_spare_servers = 10

4-nginx.confからキープアライブ接続をオフにします

5-可能であれば、キャッシングを実装してみてください(ほぼ静的なコンテンツに対して行われるため、すべてのリクエストが php に影響を与えることはありません)。

于 2016-08-30T04:23:29.133 に答える