Zabbix DB가 느릴 때: MySQL 파티션으로 해결하는 실무 구축법 (5편) — Housekeeper 비활성화와 캐시·프로세스 튜닝으로 최종 성능 완성

“복잡한 Zabbix 운영을 더 효율적으로 만들고 싶다면,
블로그의 핵심 내용을 집대성한 『Zabbix 엔터프라이즈 최적화 핸드북(PDF)』을 확인해보세요.”

https://jikimy.gumroad.com/l/zabbix-master


개요

이 시리즈의 마지막 편에서는 파티션 구조 적용 이후 Zabbix 서버의 내부 캐시 및 프로세스 튜닝을 통해
DB와 서버 프로세스 간의 I/O 밸런스를 맞추는 과정을 다룬다.

특히 Zabbix의 Housekeeper 기능을 완전히 비활성화하고,
CacheSize, HistoryCacheSize, TrendCacheSize, StartDBSyncers 등 주요 항목을 조정해
대규모 환경에서도 안정적인 동작을 유지하도록 구성한다.


1) Housekeeper 비활성화

Housekeeper는 오래된 데이터를 주기적으로 삭제하는 프로세스다.
하지만 이미 파티션 기반 자동 삭제 스크립트를 운영 중이라면,
이 기능은 중복되고 불필요한 부하만 유발한다.

Zabbix 7.4 기준으로 웹 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
TrendCacheSizeTrend 집계 캐시256M 이상
ValueCacheSize최근 값 캐시 (트리거 판단용)512M 이상
StartDBSyncersDB write 병렬 sync 프로세스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

서버 메모리 128G 기준의 안정적인 값 예시는 다음과 같다.

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) 점검 및 검증

  1. Housekeeper 중지 확인
    • Zabbix UI → Administration → Housekeeping
    • 관련 항목이 비활성화 상태인지 확인
  2. Zabbix 대시보드 반응 속도 테스트
    • 그래프/이벤트 탭 로딩 속도가 체감상 빨라지면 효과 정상

5) 결과 및 정리

단계주요 효과
Housekeeper 비활성화중복 삭제 제거, DB 부하 감소
캐시 확장메모리 기반 데이터 접근 증가, I/O 감소
DB 파라미터 튜닝InnoDB 처리율 향상, Commit 효율 개선
전체 효과파티션 기반 I/O 최적화 + Zabbix 프로세스 밸런스 완성

💡 이제 Zabbix는 수집·보존·삭제의 전체 주기가 자동화된 완전한 구조로 동작한다.
일별·월별 파티션 분리, 자동 크론 관리, 캐시 튜닝이 모두 결합되면
Zabbix DB의 병목은 사실상 제거된다.

🛠 마지막 수정일: 2025.12.09

ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. 본문 및 이미지를 무단 복제·배포할 수 없습니다. 공유 시 반드시 원문 링크를 명시해 주세요.
ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. All rights reserved. Unauthorized copying or redistribution of the text and images is prohibited. When sharing, please include the original source link.

💡 도움이 필요하신가요?
Zabbix, Kubernetes, 그리고 다양한 오픈소스 인프라 환경에 대한 구축, 운영, 최적화, 장애 분석, 광고 및 협업 제안이 필요하다면 언제든 편하게 연락 주세요.

📧 Contact: jikimy75@gmail.com
💼 Service: 구축 대행 | 성능 튜닝 | 장애 분석 컨설팅

📖 E-BooK [PDF] 전자책 (Gumroad): Zabbix 엔터프라이즈 최적화 핸드북
블로그에서 다룬 Zabbix 관련 글들을 기반으로 실무 중심의 지침서로 재구성했습니다. 운영 환경에서 바로 적용할 수 있는 최적화·트러블슈팅 노하우까지 모두 포함되어 있습니다.


💡 Need Professional Support?
If you need deployment, optimization, or troubleshooting support for Zabbix, Kubernetes, or any other open-source infrastructure in your production environment, or if you are interested in sponsorships, ads, or technical collaboration, feel free to contact me anytime.

📧 Email: jikimy75@gmail.com
💼 Services: Deployment Support | Performance Tuning | Incident Analysis Consulting

📖 PDF eBook (Gumroad): Zabbix Enterprise Optimization Handbook
A single, production-ready PDF that compiles my in-depth Zabbix and Kubernetes monitoring guides.