Nginx+php-fpmで502 Bad gatewayが出たときの対処メモ

sytesmNginxJa_-_Nginx_Community.png

□サイト内検索


スポンサードリンク

NginxJa Nginx Community

さくらのVPS8G内にてNginxを利用しているWordpressのサイトがあります。
このサイトで、502 Bad gatewayが表示されてしまいWEBサイトが機能しなくなったときの個人メモです。

CloudFlareを利用していたので最初にネームサーバーを書き換えてCloudFlareの利用を停止。
続いてエラーログを調べる。

・WordPressサイトのエラーログの内容は以下

 [error] 9864#0: *76478 connect() to unix:/tmp/php.socket failed 
(11: Resource temporarily unavailable) while connecting to upstream, client: 127.0.0.1, 
server: **********, request: "POST /xmlrpc.php HTTP/1.0", 
upstream: "fastcgi://unix:/tmp/php.socket:", host: "***.***.***.***"

『Resource temporarily unavailable』で調べてみると
プロセス数が足りなくて同時接続で上手く行っていないような内容。

■変更前
502 Bad gateway時のphp-fpm.conf ファイルの設定

pm string= static
pm.max_children =  15
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 1024

pm.max_childrenが低いと同時に処理できる数が減るがCPUに負荷がかかる。
pm.max_children = 30にしたら load averageが20を超えて重重サイトに。

■変更後
free- mでメモリ量を調べたところ、CPU負荷は高いがメモリが余っていたようだ。
WEBサーバー用途以外で利用することがないので、phpで使うメモリの量を増やす事にした。

phpで使用出来るメモリをがっつり上げられるように、
mysqlのキャッシュサイズ割当を減らしてから、/etc/php.d/apc.iniのapc.shm_sizeを大きく上げた。

・/etc/my.cnfを編集
query_cache_size = 16Mに

・/etc/php.d/apc.ini
apc.shm_size=768Mに

php.iniのメモリーリミットもガッツリ上げる。

・php-fpm.conf の変更後

pm string= dynamic
pm.max_children =  80
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500

再設定後、nginxとphp-fpmを再起動。

/etc/init.d/nginx restart
/etc/init.d/php-fpm restart

一日様子見後、Resource temporarily unavailableのエラーも記録されず、
load averageの平均が2〜3になってレスポンスも上々になった。


スポンサードリンク

このサイトが役に立ったらシェアにご協力ください

  • このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です