アプリ全体の速度が低下し、損傷やその他の問題を引き起こす可能性のあるアプリケーションの問題がいくつかあると思います。
アプリケーションの問題は、スリープしている多くの mysql 接続によって発生します。
SHOW PROCESSLIST;
出力 :
| 356058234 | Y | X:39119 | D | Sleep | 1442 | | NULL |
| 356058441 | Y | X:39126 | D | Sleep | 1442 | | NULL |
| 356059383 | Y | X:46615 | D | Sleep | 2049 | | NULL |
| 356059389 | Y | X:46617 | D | Sleep | 2052 | | NULL |
| 356065991 | Y | X:39267 | D | Sleep | 1442 | | NULL |
-------------
452 rows in set (0.00 sec)
またmysqlreport
__ Connections _________________________________________________________
Max used 8001 of 8000 %Max: 100.01
Total 356.07M 58.6/s
これは、私が本当に接続を使い果たしていることを示しています。8000の制限でも。ここに何かがあるはずです。しかし、そのようなものをデバッグするのは面倒です。
とにかく、たとえば次のように netstat を使用してプロセス ID を調べましたnetstat -ntp | grep :39267
。
tcp 0 0 IP_1:3306 IP_2:38727 VERBUNDEN 791/mysqld
そこで、さらに一歩進んで調べてみると、791
次のような長い文字列 (数百行) が出力されます。
tcp 0 0 IP_1:3306 IP_2:34109 VERBUNDEN 791/mysqld
tcp 0 0 IP_1:3306 IP_3:32864 VERBUNDEN 791/mysqld
tcp 0 0 IP_1:3306 IP_3:37231 VERBUNDEN 791/mysqld
tcp 0 0 IP_1:3306 IP_2:38727 VERBUNDEN 791/mysqld
tcp 0 0 IP_1:3306 IP_2:36645 VERBUNDEN 791/mysqld
しかし、これは私に何を教えてくれますか? 接続が多すぎる問題を実際に引き起こしている手がかりを得るには、さらにどの情報を収集する必要がありますか?
アプリケーションに関する詳細情報:
データベース上で非常に大きな更新、挿入、削除を行うコードを複数のサーバーで実行し、フレームワークGearmanをフォークしてこれらのデータを取得します。PHP 5.4およびZend Framework駆動型アプリケーションで使用されるMySQL INNODB データベースを実行しています。OSはLinux(Debian)です。