サイトへのヒットを追跡するために Piwik を使用しています。かなり人気があります (1 日あたり平均 4,000 回の訪問/30,000 ページビュー)。最近まで、Dreamhost でホストされていましたが、大きすぎてメモリ制限に達せずにアーカイブできなかったため、ほとんど機能しませんでした。
最近、nginx と php5-fpm を使用して VPS に移動しましたが、別の問題があります。トラッカーがクエリでハングし続けます。現在、php5-fpm プロセスの独自のプールを使用していますが、詰まりがちです。
[27-Aug-2013 03:20:05] 警告: [プール統計] 子 5908、スクリプト '/var/www/stats/piwik.php' (要求: "GET /piwik.php") の実行がタイムアウトしました (76.106048秒)、終了 [27-Aug-2013 03:20:05] 警告: [プール統計] 子 5905、スクリプト '/var/www/stats/piwik.php' (要求: "GET /piwik.php") の実行がタイムアウトしました (82.416656秒)、終了 [27-Aug-2013 03:20:05] 警告: [プール統計] 開始から 75.932611 秒後にシグナル 15 (SIGTERM) で子 5914 が終了しました [27-Aug-2013 03:20:05] 通知: [プール統計] 子 6219 が開始されました 等等等…
遅いログは、core/Tracker/Visit.php:1203 の大きな SELECT クエリを示しています。
[27-Aug-2013 03:17:52] [プール統計] pid 5789 script_filename = /var/www/stats/piwik.php [0x091b21b4] xecute() /var/www/stats/core/Tracker/Db/Pdo/Mysql.php:159 [0x091b2024] クエリ() /var/www/stats/core/Tracker/Db/Pdo/Mysql.php:126 [0x091b0bfc] フェッチ () /var/www/stats/core/Tracker/Visit.php:1203
テーブルは最適化されており、私が知る限り最新です。挿入クエリがハングし続ける理由が見つかりません。mysqltuner を使用して caching/etc を適切な値に調整しようとしましたが、何らかの理由でプロセスがロックアップしてシステムを詰まらせ続けています。
また、問題が常に明白であるとは限りません。すべてが突然下り坂になるまで、しばらく時間がかかる可能性があります。バラバラになり始めた時期と特定のリクエストまたはログとの間に明らかな相関関係を見つけることができませんでした。