自 2018 年 11 月以来,我们在使用 Zabbix 3.4.10 时遇到了性能问题。从那时起,我们对 tcp 连接进行了调整,在操作系统 (CentOS 6.9) 中进行调整,在 MariaDB 配置中进行调整,在 Zabbix Server 配置中进行调整,并在 Zabbix Proxies 配置中进行调整。
仍然存在以下问题:
每天 2 次(下午 5:22 和晚上 8:22,过去时间不同)历史同步器达到 100%,代理变为“无数据处理”。当历史同步器达到 100% 时,开始出现几个“无数据”警报。为了恢复,我们停止 2 个主要代理,重新启动服务器,并以时间间隔提升 2 个代理。
主机数量 6679 项目数量 732813 触发器数量 358638 所需服务器性能,每秒新值 2695.54
硬件(VM):
服务器:CPU:4 CPU 内存:24GB
数据库(Ver 15.1 Distrib 10.3.4-MariaDB,适用于 Linux(x86_64),使用 readline 5.1):CPU:8 个 CPU 内存:64GB 磁盘:SSD
基础设施:
1 个 Zabbix 服务器版本 3.4.10 (lx-all-mon-zserver-01)
1 个数据库版本 15.1 Distrib 10.3.4-MariaDB (lx-all-mon-zdb-03)
6 个机器代理
1 个数据库监控代理
1 个网络检查代理
答案1
解决方案:
- My.cnf已更改为以下设置:
[client-server]
[mysqld]
datadir = /opt/timwe/data/mysql
innodb_log_group_home_dir = /opt/timwe/data/mysql/innodblog
log-bin = /opt/timwe/data/mysql/binlog
log_error = /opt/timwe/log/mysql_error.log
slow_query_log_file = /opt/timwe/log/slow_query.log
tmpdir=/opt/timwe/data/mysql/tmpfs
innodb_autoextend_increment = 256
innodb_buffer_pool_instances = 12
innodb_buffer_pool_size = 48G
innodb_concurrency_tickets = 5000
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
innodb_log_files_in_group = 8
innodb_old_blocks_time = 1000
innodb_open_files = 2048
innodb_stats_on_metadata = OFF
innodb_force_recovery = 0
skip-name-resolve
bind-address = 0.0.0.0
default_storage_engine = innodb
event_scheduler = ON
binlog-row-event-max-size = 8192
binlog-format = MIXED
character_set_server = utf8
collation_server = utf8_bin
expire_logs_days = 1
join_buffer_size = 262144
max_allowed_packet = 32M
max_connect_errors = 10000
max_connections = 5000
max_heap_table_size = 134217728
port = 3306
query_cache_type = 1
query_cache_size = 268435456
slow-query-log = ON
table_open_cache = 2048
thread_cache_size = 512
tmp_table_size = 134217728
user = mysql
wait_timeout = 86400
[mysql_safe]
log-error=/opt/timwe/log/mysqld_safe_error.log
pid-file=/var/run/mysqld/mysqld.pid