タグ : php

[PHP-FPM] WARNING: [pool www] server reached pm.max_children setting (30), consider raising it

WordPress (Nginx + PHP-FPM) なサイトで Admin ページで Bad Gateway を頻発させていました。

Nginx のエラーログ

tail -F /var/log/nginx/codenote.net/error.log 

[error] 3029#0: *12410 connect() to unix:/var/run/php-fpm/www.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 185.11.147.17, server: codenote.net, request: "POST /xmlrpc.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/www.sock:", host: "codenote.net"

PHP-FPM のエラーログ

tail -F /var/log/php-fpm/error.log

WARNING: [pool www] server reached pm.max_children setting (30), consider raising it

エラーログに書いてあるように pm.max_children の設定値の上限に達しているので設定値を上げて解決させましょう。

# vim /etc/php-fpm.d/www.conf
# 30 で上限に達していたので適当に 50 に上げてみましょう
 
pm.max_children = 50

設定変更した後、PHP-FPM を reload して設定を反映させます。

service php-fpm reload

再度 tail -F /var/log/php-fpm/error.log でエラーログを監視して WARNING メッセージが表示されなくなったら解決できたと思います。

まだ WARNING メッセージが表示されていたら、更に pm.max_children を 60, 70 と上げていってメッセージが出力されなくなるまで調整しましょう。

[PHP-FPM] recv() failed (104: Connection reset by peer)

Nginx + PHP-FPM 構成で、502 bad gateway が頻発する問題が発生しました。

エラーログ

2013/09/15 19:02:06 [error] 2281#0: *23 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 125.1.92.146, server: codenote.net, request: “GET /php/1322.html HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php-fpm/www.sock:”, host: “codenote.net”

request_terminate_timeout が短すぎるのが原因だったので、120秒に変更することで解決しました。

# vim /etc/php-fpm.d/www.conf
request_terminate_timeout = 120s

参考情報

ブログが表示されなくなる(nginx+WordPressで500エラー) | 魚座時代

Network is unreachable: nginx+PHP-FPMでどこまでチューニングできるか

CentOS 6.3 (さくらVPS) に Nginx + php-fpm + MySQL の WordPress 環境を構築する手順

さくら VPS – CentOS6.3 に Nginx + php-fpm + MySQL で WordPress 環境を構築する手順をご紹介します。

WordPress | ワードプレス

続きを読む

[PHP] Mac に PEAR、PHPUnit をインストールする

Mac OS X Mountain Lion に PEAR と PHPUnit をインストールする方法をメモ。

大枠は下記サイトを参考にしました。ありがとうございます。

PEAR のインストール

$ cd /tmp && mkdir pear && cd pear
$ curl -O http://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar
 1. Installation base ($prefix)                   : /usr/lib/php
 2. Temporary directory for processing            : /tmp/pear/install
 3. Temporary directory for downloads             : /tmp/pear/install
 4. Binaries directory                            : /usr/bin
 5. PHP code directory ($php_dir)                 : /usr/lib/php
 6. Documentation directory                       : /usr/lib/php/doc
 7. Data directory                                : /usr/lib/php/data
 8. User-modifiable configuration files directory : /usr/lib/php/cfg
 9. Public Web Files directory                    : /usr/lib/php/htdocs
10. Tests directory                               : /usr/lib/php/tests
11. Name of configuration file                    : /Users/your_username/.pearrc

php.ini に PEAR を include する設定を追加する

% sudo cp /etc/php.ini.default /etc/php.ini
% sudo chmod +w /etc/php.ini
% sudo vim /etc/php.ini
;include_path = ".:/php/includes"

↓(変更する)

include_path = ".:/php/includes:/usr/lib/php/share/pear"

Manual :: PEAR パッケージマネージャの取得とインストール

Mac OS X LionでPEARをインストールする方法 | Web活メモ帳

PHPUnit のインストール

% sudo pear channel-discover pear.phpunit.de
% sudo pear channel-discover components.ez.no
% sudo pear channel-discover pear.symfony-project.com
% sudo pear install phpunit/PHPUnit
 
% phpunit --version    
PHPUnit 3.7.1 by Sebastian Bergmann.

以上です。