2017-02-16 16 views
3

なぜInnoDBデータベースへの接続は、しばしば整数秒単位で遅れますか?MySQLデータベースへの接続に時間がかかりません。

いくつかの背景

私はテーブルの 'ユーザ'(150の記録)及び(150の* 150の記録に成長している)テーブル '接続' からなる、非常に小さなMySQLデータベースを持っています。テーブルとインデックスの合計は5 MB未満です。

ユーザがアクティブな場合、「接続」の5-50レコードが変更されます(重みが変更されます)。または追加されます(まだ存在しない場合)。アプリ全体がスムーズに実行され、読み込み時間は〜100ミリ秒以下です。

そうでない場合を除きます。でも非常に小さい負荷の下で

詳細

、ページのロード時間を1000ミリ秒から10,000ミリ秒の間のどこかに60ミリからスパイク。

symfonyでプロファイラを使用すると、「getRepository」ステートメントで95%の遅延をピンダウンすることができましたが、クエリは1クエリあたり〜1ミリ秒しかかかりませんでした。これは、データベースへの接続が遅いアクションであったと私に信じさせました。私は定期的にこの理論をテストするためにデータベースに接続するヘルパースクリプトを書いた。データベースへの接続

<?php // call this script commandline using watch 
$a = microtime(true); 
$pdo = new PDO('mysql:host=127.0.0.1;dbname=mydb','myuser','mypass'); 
file_put_contents('performance.txt', (microtime(true)-$a).PHP_EOL, FILE_APPEND); 

一貫等1-3 MS、又は1,001-1,003 MS、又は2,001-2,003 MS、又は3,001-3,003 MS、整数の量を取りました秒、通常の時間を加えたものです。 400 msまたは800 msのようなものではありません。書き込みが行われていない場合、接続はほぼ即座に行われました。アプリを介していくつかの書き込みが実行されるとすぐに、より高い数値に達しました。

この現象の原因は何ですか? InnoDBのpage_cleanerは1,000ミリ秒ごとに作業を行っているようですが、それは説明の一部でしょうか?

もっと重要なことは、これをどのように修正できますか?私はMEMORYテーブルに切り替えることを考えていましたが、よりエレガントなオプションが利用できるはずです。リクエストに

EDIT

the variables and global status

追加情報:私は127.0.0.1(上記のコードスニペットを参照)に直接接続し、スキップ名解決フラグを無効にしてテストしました。それはDebianサーバです。

EDIT 2

私は遅延が1、3、7または15のいずれか秒であったが見つかりました。 1秒、+ 2秒、+ 4秒、+ 8秒のパターンに注目してください。これは本当にいくつかのタイムアウト問題のように見えます...

+1

で読むことが多くあります。私が疑うもの:十分なスレッド/(db)接続が利用できない、接続プーリングの設定(ちょうど私たちがその問題を1度持っていたから):)またはそのようなもの。接続はクエリではなく遅いです。遅れが進んでいる間、「innotop」画面を見ているかもしれませんか?長いクエリが実行されていて負荷が高いと表示されない場合、接続の作成に問題があります。 – Nanne

+0

「innotop」について知りませんでした。負荷:0.00、QPS:10-20、遅い:0、QCacheHit:50%、KCacheHit:100.00%。質問は本当に問題ではないようです。 – TacoV

+0

私はテストとしてMEMORYに切り替えました。奇妙な接続遅延の問題が続く... – TacoV

答えて

1

逆方向DNS検索には長い時間がかかります。 host_cacheのサイズに加えて、不規則な振る舞いをする可能性があります。

これをmyに追加することでオフにします。あなたはこれを変更する場合は、すべての補助金は、名前で、IPによってであってはならないことをCNF

[mysqld] 
skip-name-resolve 

注意。

は、私はあなたが正しく発行理解していれば問題は接続がある場合は、おそらく助けにはなりませんメモリテーブルに変更manual

+0

config dump( "skip_name_resolve ON")のようにmy.cnfにすでにこれを追加しました。問題は解決しません。 – TacoV

関連する問題