さくらの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になってレスポンスも上々になった。
コメント