Первоначальные условия:
ОС RHEL 7.6 Zabbix 4.4.6. nginx и zabbix сервер на одном сервере , база данных (mariadb 10.4) на другом сервере.
Оперативная память: на сервере - 16 Гб, на базе данных - 32 Гб. Количество узлов - 600. Количество элементов данных - 10000.
Конфигурационный файл mariadb:
# path
datadir = /var/lib/mysql
# tmpdir = /dev/shm
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
basedir = /usr
lc-messages-dir = /usr/share/mysql
# network
connect_timeout = 60
wait_timeout = 28800
max_connections = 3000
max_allowed_packet = 256M
max_connect_errors = 1000
#interactive_timeout<--><------>= 180
#net_read_timeout<-----><------>= 900
#net_write_timeout<----><------>= 900
# limits
tmp_table_size = 1G
max_heap_table_size = 1G
table_open_cache = 1024
# logs
# general_log_file<----><------>= /tmp/mysql.log
# general_log<-><------><------>= 1
slow_query_log<><------><------>= ON
log_error = /tmp/mysql-error.log
slow_query_log_file = /tmp/mysql-slow.log
slow_query_log = 1
long_query_time = 5
# innodb
################################################## ###############################
#query_cache_type=1
#query_cache_size=2G
query_cache_type=0
query_cache_size=0
query_cache_limit=1M
innodb_buffer_pool_instances=21
join_buffer_size=512K
################################################## ###############################
thread_cache_size=16
innodb_data_file_path = ibdata1:128M;ibdata2:128M:autoextend:max:4096M
innodb_file_per_table = 1
innodb_status_file = 1
innodb_buffer_pool_size = 12G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_strict_mode<----><------>= 0
# innodb_use_native_aio><------>= 0
innodb_log_file_size<--><------>= 1G
innodb_buffer_pool_instances<-->= 12
# performance_schema<--><------>= ON
в конфигурационном файле zabbix_server изменены только значения: StartPollers=50; StartPollersUnreachable=10
В логе медленных запросов много записей вида:
# Time: 200304 9:12:08
# User@Host: zabbix[zabbix] @ [IP]
# Thread_id: 834904 Schema: zabbix QC_hit: No
# Query_time: 5.098264 Lock_time: 0.000122 Rows_sent: 0 Rows_examined: 3668171
# Rows_affected: 0 Bytes_sent: 331
use zabbix;
SET timestamp=1583302328;
SELECT p.eventid,p.objectid,p.clock,p.ns,p.name,p.severit y FROM problem p WHERE p.source='0' AND p.object='0' AND NOT EXISTS (SELECT NULL FROM functions f,items i,hosts_groups hgg LEFT JOIN
rights r ON r.id=hgg.groupid AND r.groupid=15 WHERE p.objectid=f.triggerid AND f.itemid=i.itemid AND i.hostid=hgg.hostid GROUP BY i.hostid HAVING MAX(permission)<2 OR MIN(permission) IS NULL OR
MIN(permission)=0) AND NOT EXISTS (SELECT NULL FROM event_suppress es WHERE es.eventid=p.eventid) AND (p.r_eventid IS NULL OR p.r_clock>1583302023) ORDER BY p.eventid DESC LIMIT 1001;
MySQL использует только 6 Гб памяти.
Проблема:
Медленно (минуту и более) открываются дашбоды. Причем, что интересно - если пользователь имеет права на всё, т.е. админ,
то его дашборд открывается за приблизительно 3 секунды, если пользователь имеет ограничения по правам, то его
дашборд открывается минуту и более. Изменение параметров конфигурации MySQL в сторону увеличения параметров
ничего не дало. Перевод на гораздо более мощное железо базы данных ничего не дало.
ОС RHEL 7.6 Zabbix 4.4.6. nginx и zabbix сервер на одном сервере , база данных (mariadb 10.4) на другом сервере.
Оперативная память: на сервере - 16 Гб, на базе данных - 32 Гб. Количество узлов - 600. Количество элементов данных - 10000.
Конфигурационный файл mariadb:
# path
datadir = /var/lib/mysql
# tmpdir = /dev/shm
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
basedir = /usr
lc-messages-dir = /usr/share/mysql
# network
connect_timeout = 60
wait_timeout = 28800
max_connections = 3000
max_allowed_packet = 256M
max_connect_errors = 1000
#interactive_timeout<--><------>= 180
#net_read_timeout<-----><------>= 900
#net_write_timeout<----><------>= 900
# limits
tmp_table_size = 1G
max_heap_table_size = 1G
table_open_cache = 1024
# logs
# general_log_file<----><------>= /tmp/mysql.log
# general_log<-><------><------>= 1
slow_query_log<><------><------>= ON
log_error = /tmp/mysql-error.log
slow_query_log_file = /tmp/mysql-slow.log
slow_query_log = 1
long_query_time = 5
# innodb
################################################## ###############################
#query_cache_type=1
#query_cache_size=2G
query_cache_type=0
query_cache_size=0
query_cache_limit=1M
innodb_buffer_pool_instances=21
join_buffer_size=512K
################################################## ###############################
thread_cache_size=16
innodb_data_file_path = ibdata1:128M;ibdata2:128M:autoextend:max:4096M
innodb_file_per_table = 1
innodb_status_file = 1
innodb_buffer_pool_size = 12G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_strict_mode<----><------>= 0
# innodb_use_native_aio><------>= 0
innodb_log_file_size<--><------>= 1G
innodb_buffer_pool_instances<-->= 12
# performance_schema<--><------>= ON
в конфигурационном файле zabbix_server изменены только значения: StartPollers=50; StartPollersUnreachable=10
В логе медленных запросов много записей вида:
# Time: 200304 9:12:08
# User@Host: zabbix[zabbix] @ [IP]
# Thread_id: 834904 Schema: zabbix QC_hit: No
# Query_time: 5.098264 Lock_time: 0.000122 Rows_sent: 0 Rows_examined: 3668171
# Rows_affected: 0 Bytes_sent: 331
use zabbix;
SET timestamp=1583302328;
SELECT p.eventid,p.objectid,p.clock,p.ns,p.name,p.severit y FROM problem p WHERE p.source='0' AND p.object='0' AND NOT EXISTS (SELECT NULL FROM functions f,items i,hosts_groups hgg LEFT JOIN
rights r ON r.id=hgg.groupid AND r.groupid=15 WHERE p.objectid=f.triggerid AND f.itemid=i.itemid AND i.hostid=hgg.hostid GROUP BY i.hostid HAVING MAX(permission)<2 OR MIN(permission) IS NULL OR
MIN(permission)=0) AND NOT EXISTS (SELECT NULL FROM event_suppress es WHERE es.eventid=p.eventid) AND (p.r_eventid IS NULL OR p.r_clock>1583302023) ORDER BY p.eventid DESC LIMIT 1001;
MySQL использует только 6 Гб памяти.
Проблема:
Медленно (минуту и более) открываются дашбоды. Причем, что интересно - если пользователь имеет права на всё, т.е. админ,
то его дашборд открывается за приблизительно 3 секунды, если пользователь имеет ограничения по правам, то его
дашборд открывается минуту и более. Изменение параметров конфигурации MySQL в сторону увеличения параметров
ничего не дало. Перевод на гораздо более мощное железо базы данных ничего не дало.
Comment