2015-11-27 8 views
6

私は、4 CPUを搭載したGoogle Computeインスタンスで動作するMySQL 5.6.27-0ubuntu0.14.04.1を持っています。私は睡眠接続を開いているときにMySQL CPUを増やす

私は長い時間スリープ状態になっていると、サーバのCPUが直線的に増加することに気付きました。なぜ私は理解できないのですか?スリープ接続を終了すると、CPUは正しい使用方法に復元します。

だから要約に、私は次のようしている: 私は私のインスタンスのCPUが増加しているがわかります enter image description here

その後、私はあなたが私は持って見ることができます私のサーバー

mysql> show processlist 
-> ; 
+-------+--------+-------------------+----------------+---------+------+-------+------------------+ 
| Id | User | Host    | db    | Command | Time | State | Info    | 
+-------+--------+-------------------+----------------+---------+------+-------+------------------+ 
| 85949 | nafora | paper-eee-2:58461 | state_recorder | Sleep | 1300 |  | NULL    | 
| 85956 | nafora | paper-eee-2:58568 | state_recorder | Sleep | 64 |  | NULL    | 
| 85959 | root | localhost   | NULL   | Query | 0 | init | show processlist | 
+-------+--------+-------------------+----------------+---------+------+-------+------------------+ 

にPROCESSLISTをチェック2接続はスリープと1つはここから1300秒(私は接続が開いたままになっているプロセスを持っているので)

私は85949とCPUをちょうどFAを殺すダウン。 enter image description here

スリープ状態の1つの接続がこのように自分のデータベースに影響する可能性がある理由を誰かから説明できますか?

ありがとうございました。

+0

奇妙な問題。システムに関するもう少し情報を追加できますか? MySQLのバージョン? InnoDBかMyISAMかもしれない? InnoDB出力の 'SHOW ENGINE INNODB STATUS'の場合?監視を有効にすることもできます:http://dev.mysql.com/doc/refman/5.0/en/innodb-monitors.html。接続に関する背景?彼らはアイドルになる前に多くのことを読み書きしましたか?彼らはオートコミッティングされていますか? –

+1

あなたはそのプロセスが何をしているのか調べるべきです。多分この記事は次のように役立ちます:https://www.percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/ – fancyPants

答えて

2

一部のクローズされていない接続または長時間実行されていない低速のクエリによってこの現象が発生することがあります。グローバル変数wait_timeoutを妥当な値として構成し、ベストプラクティスごとに別の関連する変数interactive_timeoutを設定することで、非クローズ接続を制限することができます。

接続プール(Java、.NETなど)を使用するステートフルなアプリケーションでは、接続プールの設定に合わせてwait_timeoutを調整する必要があります。デフォルトの8時間(wait_timeout = 28800)は、適切に構成された接続プールでうまくいきます。

wait_timeoutを、アプリケーション接続プールの想定接続時間よりわずかに長く設定します。これは良い安全性のチェックです。また、MySQLインスタンスのパフォーマンスを観察するためにクエリをプロファイルすると、I/O bottlenecksを回避するのに役立ちます。

関連する問題