Zabbix DBが遅いとき:MySQLパーティションで解決する実務構築ガイド(第5編)

— Housekeeper無効化とキャッシュ・プロセスチューニングによる最終パフォーマンス完成


概要

このシリーズの最終編では、パーティション構造を適用した後に行う
Zabbixサーバー内部キャッシュとプロセスのチューニングにより、
DBとサーバープロセス間のI/Oバランスを最適化する手順を解説する。

特に、ZabbixのHousekeeper機能を完全に無効化し、
CacheSizeHistoryCacheSizeTrendCacheSizeStartDBSyncers などの主要パラメータを調整して、
大規模環境でも安定した動作を維持できる構成を目指す。


1) Housekeeper 無効化

Housekeeperは古いデータを定期的に削除するプロセスである。
しかし、すでにパーティションベースの自動削除スクリプトを運用している場合、
この機能は重複し、不要な負荷を発生させる。

Zabbix 7.4では、Web UIから直接無効化する必要がある。

パス
Administration → Housekeeping

項目設定値説明
Events and alerts☐(オフ)イベントログ自動削除を停止
Services☐(オフ)SLA関連サービス履歴を保持しない
User sessions☑(オン)ユーザーセッションのみ保持
History☐(オフ)DBパーティションスクリプトが処理
Trends☐(オフ)DBパーティションスクリプトが処理

⚙️ Housekeeperが残っていると、大量削除時にMySQL I/Oが一時停止することがある。
パーティション構成を導入している環境では、必ず無効化しておくこと。


2) Zabbixサーバーのキャッシュおよびプロセスチューニング

設定ファイル/etc/zabbix/zabbix_server.conf

以下の項目を見つけてコメントアウトを解除し、環境に合わせて値を調整する。

項目説明推奨値(RAM 128Gの場合)
CacheSize設定キャッシュ(ホスト・テンプレート構造)256M〜512M
HistoryCacheSizeリアルタイムメトリックキャッシュ512M〜1G
TrendCacheSizeトレンド集計キャッシュ256M以上
ValueCacheSize最新値キャッシュ(トリガー判定用)512M以上
StartDBSyncersDB書き込み並列同期プロセス数8〜16
StartPollersPollerプロセス数(ホスト数÷50を目安)環境に応じて調整

編集例:

# vi /etc/zabbix/zabbix_server.conf

CacheSize=512M
HistoryCacheSize=1G
TrendCacheSize=512M
ValueCacheSize=512M
StartDBSyncers=12
StartPollers=20

変更を反映:

# systemctl restart zabbix-server

3) MySQL InnoDBチューニング

設定ファイル/etc/mysql/mysql.conf.d/mysqld.cnf

サーバーメモリ128GB環境での安定的な推奨設定例は以下のとおり。

innodb_buffer_pool_size = 72G
innodb_log_file_size = 1G
innodb_flush_log_at_trx_commit = 2
innodb_doublewrite = 1
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_buffer_pool_instances = 4
項目設定値評価
innodb_buffer_pool_size = 72GRAMの56〜60%、適正 ✅
innodb_log_file_size = 1G安定性重視、I/Oスパイク防止 ⚙️(書き込み量が多い場合は4G推奨)
innodb_flush_log_at_trx_commit = 2性能重視・安定性維持 ✅
innodb_doublewrite = 1innodb_doublewrite=0 はNVMeの高IOPSと並列書き込み性能によりパフォーマンス上は有利だが、
停電やカーネルパニック時に**torn page(ページ破損)**が発生する可能性がある。
よって運用DBでは安定性を重視し innodb_doublewrite=1 を維持するのが定石。 ✅
innodb_flush_method = O_DIRECTOSキャッシュ重複を防止 ✅
innodb_io_capacity = 2000NVMeベースで適正、余裕があれば3000〜4000も可 ✅
innodb_read/write_io_threads = 8十分 ✅
innodb_buffer_pool_instances = 472G構成で推奨範囲 ✅

変更を反映:

# systemctl restart mysql

4) 確認と検証

Housekeeper停止の確認

Zabbix UI → Administration → Housekeeping
関連項目が無効化されていることを確認。

Zabbixダッシュボード応答速度テスト
グラフ/イベントタブの読み込み速度が体感的に向上していれば正常。


5) 結果とまとめ

ステップ主な効果
Housekeeper無効化重複削除の排除、DB負荷の軽減
キャッシュ拡張メモリベースアクセス増加によるI/O削減
DBパラメータチューニングInnoDB処理効率向上、コミット性能改善
総合効果パーティションベースI/O最適化+Zabbixプロセスバランス完成

💡 これでZabbixは収集・保持・削除の全サイクルが自動化された完全な構成として動作する。
日次/月次パーティション分割、自動cron管理、キャッシュチューニングを組み合わせることで、
Zabbix DBのボトルネックは実質的に解消される。

🛠 마지막 수정일: 2025.11.05

💡 お困りですか?
Zabbix、Kubernetes、各種オープンソースインフラの構築・運用・最適化・障害解析が必要であれば、いつでもご連絡ください。

📧 メール: jikimy75@gmail.com
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング