504のエラーが出た場合
client—①—nginx—②—php5-fpm—③—mysql
1 |
504 gateway time-out |
上記の構成として、この場合、②においてnginx—>php5-fpmでphp5の処理が遅くnginxが切断してしまった。
という事なので、nginxのfastcgiのtimeout値を伸ばしてあげる必要があります。
例えば、以下のようなファイルを作成して、nginxを再起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
% sudo vi /etc/nginx/conf.d/fastcgi.conf --- fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 300; < --- ココ fastcgi_read_timeout 300; <--- ココ fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; --- % sudo /etc/init.d/nginx restart |
※reloadでも良いかもしれません
104のエラーが出た場合
client—①—nginx—②—php5-fpm—③—mysql
1 |
recv() failed (104: Connection reset by peer) while reading response header from upstream, client: |
において、php5が処理時間がかかってしまって、nginx—>php5-fpmにクエリは投げられたけど、nginx< ---php5-fpmに返す際に、php5-fpmがコネクションを切っちゃったケース。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
% sudo vi /etc/php5/fpm/pool.d/www.conf --- ;pm.process_idle_timeout = 10s; ↓ pm.process_idle_timeout = 30s; --- % sudo vi /etc/php5/php.ini --- max_execution_time = 30 ← 60などに増やす --- % sudo /etc/init.d/php5-fpm restart それでも改善しない場合は、phpの動作を確認します。 <pre> % sudo vi /etc/php5/fpm/pool.d/www.conf --- ;pm.status_path = /status ↓ pm.status_path = /status ;php_admin_value[error_log] = /var/log/fpm-php.www.log ↓ php_admin_value[error_log] = /var/log/fpm-php.www.log --- % sudo /etc/init.d/php5-fpm restart |
php5-fpmのプロセスが足りない場合
→ /etc/php5/fpm/pool.d/www.conf : pm.max_children = 5 や、pm.max_spare_servers = 3を増やす
※ pm = dynamicを確認
mysqlの接続数も増やす 5×3=15だったのを増やした分だけ接続できるように!
1 2 3 4 |
s sudo vi /etc/mysql/my.cnf --- max_connections=128 < --- pm.max_children x pm.max_spare_servers以上にする --- |
ここにイイカンジでまとまってました。