— Housekeeper無効化とキャッシュ・プロセスチューニングによる最終パフォーマンス完成
概要
このシリーズの最終編では、パーティション構造を適用した後に行う
Zabbixサーバー内部キャッシュとプロセスのチューニングにより、
DBとサーバープロセス間のI/Oバランスを最適化する手順を解説する。
特に、ZabbixのHousekeeper機能を完全に無効化し、CacheSize、HistoryCacheSize、TrendCacheSize、StartDBSyncers などの主要パラメータを調整して、
大規模環境でも安定した動作を維持できる構成を目指す。
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以上 |
| StartDBSyncers | DB書き込み並列同期プロセス数 | 8〜16 |
| StartPollers | Pollerプロセス数(ホスト数÷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 = 72G | RAMの56〜60%、適正 ✅ | |
| innodb_log_file_size = 1G | 安定性重視、I/Oスパイク防止 ⚙️(書き込み量が多い場合は4G推奨) | |
| innodb_flush_log_at_trx_commit = 2 | 性能重視・安定性維持 ✅ | |
| innodb_doublewrite = 1 | innodb_doublewrite=0 はNVMeの高IOPSと並列書き込み性能によりパフォーマンス上は有利だが、 | |
| 停電やカーネルパニック時に**torn page(ページ破損)**が発生する可能性がある。 | ||
よって運用DBでは安定性を重視し innodb_doublewrite=1 を維持するのが定石。 ✅ | ||
| innodb_flush_method = O_DIRECT | OSキャッシュ重複を防止 ✅ | |
| innodb_io_capacity = 2000 | NVMeベースで適正、余裕があれば3000〜4000も可 ✅ | |
| innodb_read/write_io_threads = 8 | 十分 ✅ | |
| innodb_buffer_pool_instances = 4 | 72G構成で推奨範囲 ✅ |
変更を反映:
# 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
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.