発生している問題
Nginx(1.10) + PHP-FPM(7.0) + MariaDB(10.0) + CodeIgniter(3.1.9) でサイトを構築しています。
以下のプログラムを実行すると、504 Gateway Time-out が発生します。
PHP
1while(true){ 2 sleep(30); 3}
NginxやPHP-FPMにタイムアウトを設定しているため、このエラー自体は通常の動きだと思うのですが、1箇所で504エラーが発生すると、同サイトへのすべてのアクセスが504エラーとなるため、対応方法を知りたいと考えています。
ヒントになりそうな情報などでもよいので、ご存知の方がいらっしゃれば教えていただきたいです。よろしくお願いいたします。
わかっていること
PHP-FPM・MariaDB を再起動すると回復する
すべてのアクセスが504エラーとなったときに PHP-FPM もしくは MariaDB を再起動すると回復します。(Nginxは再起動しても回復しませんでした。)
DBプロセスをkillすると回復する
問題のプログラムを実行時にDBプロセスを確認すると、以下プロセスの11299 が開始され、プロセスが残り続けます。それ以降のアクセスは 11303 のようにロック状態となります。11299 をkillすると、回復します。
MariaDB
1MariaDB [(none)]> show processlist; 2+-------+----------+-----------+----------------+---------+------+-----------+-----------------------------------------------------+----------+ 3| Id | User | Host | db | Command | Time | State | Info | Progress | 4+-------+----------+-----------+----------------+---------+------+-----------+-----------------------------------------------------+----------+ 5| 11282 | root | localhost | NULL | Query | 0 | init | show processlist | 0.000 | 6| 11299 | UserName | localhost | DatabaseName | Sleep | 81 | | NULL | 0.000 | 7| 11303 | UserName | localhost | DatabaseName | Query | 71 | User lock | SELECT GET_LOCK('27fac...', 300) AS ci_session_lock | 0.000 | 8+-------+----------+-----------+----------------+---------+------+-----------+-----------------------------------------------------+----------+ 9MariaDB [(none)]> kill 11299;
CodeIgniter特有の問題の可能性が高い
通常のPHPプログラムとしてsleepを実行すれば、想定通りの動作(1箇所のみ504エラーで同サイトへのすべてのアクセスは問題なく処理できる)となります。
エラーメッセージは特になし
nginx・php-fpm・mariadbについてエラーログを確認しましたが、気になる点はありませんでした。
試したこと
pconnectの設定値がFALSEであることを確認しました
http://ryokwkm2.hatenadiary.jp/entry/2015/09/28/161925
CodeIgniterを最新にしてみました

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。