MySQL InnoDB page_cleaner設定は最適ではない可能性があります


15

mysqld.logでこのメモを確認します。

[Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.)

このようなことについてここで言及されているようです: 「同期インデックスを実行中」のMySQLインスタンスのストール

私の質問は、このメモがログに記録された場合、どのようなアクションが実行されるべきかということです。

MySQLおよびOSバージョン:
mysql-community- server- 5.7.9 -1.el7.x86_64
centos-release-7-1.1503.el7.centos.2.8.x86_64

実行SHOW変数は「%InnoDBの」のような。提案されているように:

innodb_page_cleaners | 1

回答:


10

MySQL 5.7.8では、innodb_page_cleanersのデフォルト値が1から4に変更されました。ページクリーナスレッドの数がバッファプールインスタンスの数を超える場合、innodb_page_cleanersはinnodb_buffer_pool_instancesと同じ値に自動的に設定されます

innodb_buffer_pool_instancesを次でチェックします。

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_instances'

あなただけ設定することができますinnodb_page_cleanersように高いようinnodb_buffer_pool_instances。あなたが望むならinnodb_page_cleaners=4、あなたも必要innodb_buffer_pool_instances=4です。


2
さて、私はinnodb_buffer_pool_instancesとinnodb_page_cleanersの両方を8に設定しており、時々警告が表示されます。最適化テーブルなどのような重いI / O操作中にストライプ化されたデスクトップクラスのディスクが回転するだけで、mysqlの微妙な方法でディスクが遅すぎると思われます;)
Aleksandar Ivanisevic

5

さまざまなクライアントで同じ問題が発生し、innodb_lru_scan_depthの値を設定したことが原因であることがわかりましたし、デフォルトの1024から128下げると、特に書き込みバインドされたワークロードでトランザクションの処理時間が短縮されます値を低く設定しすぎると、バッファプールがそのバッファとバッファプールのダーティページの一部をクリアできなくなると思います。

このケースでは、値を128から256に増やすことで大幅な改善が見られましたが、一般的に正しい値はハードウェアと負荷の種類によって異なります。トリックは、OLTP性能を向上し、持っていないとして、MySQLはバッファプール清潔そうに保つせる間に正しい値を見つけることですpage_cleaner上記のメッセージ(で述べたように、多くの作業を行うために必要をpage_cleaner:1000msでは、ループを意図」のInnoDB 15888msかかりました」)。

MySQLを再起動せずに値を動的に変更できます。たとえば

SET GLOBAL innodb_lru_scan_depth=256;

1
MySQLを再起動すると、innodb_lru_scan_depthは1024に戻るので、永久に変更するにはどうすればよいですか?
カリムサミル

@KarimSamir ロードパスのinnodb_lru_scan_depth = 256どこかに追加しますmy.cnf
クエンティンスコーセン

0

このStackOverflowスレッドは便利です...

/programming/41134785/how-to-solve-mysql-warning-innodb-page-cleaner-1000ms-intended-loop-took-xxx

これは基本的に、DBの書き込みが多すぎて、BufferPoolがダーティ値でいっぱいになることを意味します。これにより、PageCleanerがトリガーされ、ダーティページが処理および消去されます。ダーティページが通常より多すぎるため、PageCleanerがバッファをクリアするのに時間がかかりました。

innodb_lru_scan_depth特定の変数は、クリアするために実行されるバッファプールスキャンの量を制御します。これは大きな値であるか、システムの書き込みスループットが非常に高く、多数のダーティページが発生している可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.