2012-04-28 21 views
2

最近、私は非常に遅い時間に私のウェブサイトでAJAXデータの読み込みが遅いことに気付いています。 Chromeブラウザでウェブデベロッパー機能を使用すると、通常300〜500msの待機速度と100〜300msの受信速度が最大5秒まで増加します!このサイトでは、jQuery、Codeigniter/PHP、MySQLを使用しています。遅いMySQLのパフォーマンスとスリープクエリ

私は自分のVPSのサポートデスクに確認し、スリープクエリが多すぎると述べました。

There are many sleep queries for the database 'databasename'. 

| 4341 | mysqluser | 204.197.252.106:48669 | databasename | Sleep | 19 | | | 
| 4373 | mysqluser | 204.197.252.106:59966 | databasename | Sleep | 78 | | | 
| 4387 | mysqluser | 204.197.252.106:34807 | databasename | Sleep | 46 | | | 
| 4388 | mysqluser | 204.197.252.106:35099 | databasename | Sleep | 6 | | | 
| 4390 | mysqluser | 204.197.252.106:35452 | databasename | Sleep | 26 | | | 
| 4391 | mysqluser | 204.197.252.106:35589 | databasename | Sleep | 7 | | | 
| 4392 | mysqluser | 204.197.252.106:35680 | databasename | Sleep | 19 | | | 
| 4393 | mysqluser | 204.197.252.106:36264 | databasename | Sleep | 12 | | | 
| 4394 | mysqluser | 204.197.252.106:36327 | databasename | Sleep | 11 | | | 

これは朝の減速の原因ですか?どのように減速の原因を見つけ出し、それを取り除くことができますか?

答えて

6
  1. これら睡眠クエリは、ちょうどオープン接続されています。彼らが何百人もいない限り、私はそれらに悩まされません。おそらく彼らはあなたのフレームワーク/ ORMが使用している接続プールを形成しています。

  2. 遅いクエリで問題を診断するには、slow query logを取得する必要があります。低速クエリのログがオフになっている場合は、すぐにオンにします。

  3. 適切なログファイルを取得したら、実行速度の遅いクエリをexplainで分析します。 Mysqlのクエリプランナとアナライザがどのようにクエリを実行しているかを見ることができます。

  4. また、実行中の最も遅いクエリとテーブルスキーマを貼り付けて、問題の診断を改善することもできます。

+1

これは、ユーザーが永続的な接続を使用していることを意味する可能性があります。 – Evert

0

あなたは、このように行うことができます寝て接続を殺したい場合:管理者としてMySQLへ ログイン:

mysql -uroot -ppassword; 

し、コマンドを実行するよりも:

mysql> show processlist; 

をあなたが何かを取得します以下のようになります。

+----+-------------+--------------------+----------+---------+------+-------+------------------+ 
| Id | User  | Host    | db  | Command | Time | State | Info    | 
+----+-------------+--------------------+----------+---------+------+-------+------------------+ 
| 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep | 183 |  | NULL    || 
| 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep | 148 |  | NULL    | 
| 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep | 148 |  | NULL    | 
| 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep | 148 |  | NULL    | 
| 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep | 11 |  | NULL    | 
| 59 | root  | localhost   | NULL  | Query | 0 | NULL | show processlist | 
+----+-------------+--------------------+----------+---------+------+-------+------------------+ 

異なる接続の完全な詳細が表示されます。今度は、以下のようにスリープ接続を強制終了することができます。

関連する問題