0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Zabbixが遅かったのでDBの「innodb_buffer_pool_size」を見直した話

Posted at

Zabbixを利用していて、仕様はそこそこなのにやたら遅い。Webフロントの詰まりや、"Utilization of history syncer processes over 75%"などの警告が出る。

CPUもメモリも優先度余裕あるのに…これ、DB周りが原因かもと詳しく調べてみた。

発見したポイント

MariaDBの innodb_buffer_pool_size が、なんと 128MB のまま。これが大問題だった。

innodb_buffer_pool_size って何者なのか

ざっくり言うと:

「InnoDB のデータやインデックスをメモリに保持するためのキャッシュプールの大きさ」

データベースの実態はディスクベース。これをこまめに読み書きするのは非実用的なので、InnoDBは可能な限りメモリにだけ管理させる。

その主役が innodb_buffer_pool であり、そのサイズを指定するのが innodb_buffer_pool_size

小さいと何が起きるのか

Zabbixの場合、つまり:

  • 多数の INSERT (history 系) が DB に飛ぶ
  • MariaDBがそれをメモリでうまくさばけない
  • ディスクへの直接書きが増える
  • 結果、I/O で詰まる

これが「Utilization of history syncer processes over 75%」の原因である可能性大。

実際の現場

# grep StartHistoryPollers /etc/zabbix/zabbix_server.conf
StartHistoryPollers=50

# MariaDB側
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
-> 128MB

完全にバランスがおかしい状態。。。

解決策

innodb_buffer_pool_size を増やす

# /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 4G

メモリに余裕があれば 8G もOK

StartHistoryPollers を減らす

StartHistoryPollers=12

DBが受け渡れる範囲に要調整

innodb_log_file_size も見直し

innodb_log_file_size = 512M

書き込み性能の向上

まとめ

  • Zabbixが遅い時は DB周りも見るべし
  • innodb_buffer_pool_sizeInnoDBデータベースの性能の要
  • 小さすぎると、いくらCPUやメモリに余裕があっても、Zabbixは遅くなる
  • 詰まってるのは「ZabbixではなくMariaDB」かも
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?