Заметил, что количество открытых таблиц непрерывно растет. Достигая заданного максимума в 1024 Zabbix начинает накапливать cache и данные в базу попадают с очень большой задержкой, до нескольких часов.
Почему количество открытых таблиц в данный момент всегда растет и как это исправить? В самой базе Zabbix 147 таблиц.
Установленный порог:
MariaDB [zabbix]> select @@table_open_cache;
+--------------------+
| @@table_open_cache |
+--------------------+
| 1024 |
+--------------------+
1 row in set (0.00 sec)
В данный момент:
MariaDB [zabbix]> show status like 'Open_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 682 |
+---------------+-------+
1 row in set (0.00 sec)
Сейчас проблем нет (682/1024).
Собственно конфиг my.cnf:
innodb_flush_log_at_trx_commit=0
skip-name-resolve
datadir=/db/mysql
slow_query_log = 1
long_query_time = 10
log_output = FILE
connect_timeout = 60
wait_timeout = 10
max_connections = 20000
max_allowed_packet = 512M
max_connect_errors = 2000
tmp_table_size = 512M
max_heap_table_size = 256M
table_cache = 1024
default_storage_engine=InnoDB
innodb_file_per_table = 1
innodb_status_file = 1
innodb_additional_mem_pool_size = 128M
innodb_buffer_pool_instances = 20
innodb_buffer_pool_size = 20G # Значение этого параметра должно быть не более 60% от объема ОЗУ на сервере
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_flush_log_at_trx_commit = 2
innodb_support_xa = 0
innodb_log_buffer_size = 2G
innodb_write_io_threads = 16
innodb_read_io_threads = 16
innodb_lock_wait_timeout = 500
event_scheduler = 1
query_cache_type = 1
query_cache_size = 64M
join_buffer_size=16M
query_cache_limit=64M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
key_buffer = 256M
key_buffer_size=64M
open_files_limit = 100000
thread_cache_size = 100
Почему количество открытых таблиц в данный момент всегда растет и как это исправить? В самой базе Zabbix 147 таблиц.
Установленный порог:
MariaDB [zabbix]> select @@table_open_cache;
+--------------------+
| @@table_open_cache |
+--------------------+
| 1024 |
+--------------------+
1 row in set (0.00 sec)
В данный момент:
MariaDB [zabbix]> show status like 'Open_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 682 |
+---------------+-------+
1 row in set (0.00 sec)
Сейчас проблем нет (682/1024).
Собственно конфиг my.cnf:
innodb_flush_log_at_trx_commit=0
skip-name-resolve
datadir=/db/mysql
slow_query_log = 1
long_query_time = 10
log_output = FILE
connect_timeout = 60
wait_timeout = 10
max_connections = 20000
max_allowed_packet = 512M
max_connect_errors = 2000
tmp_table_size = 512M
max_heap_table_size = 256M
table_cache = 1024
default_storage_engine=InnoDB
innodb_file_per_table = 1
innodb_status_file = 1
innodb_additional_mem_pool_size = 128M
innodb_buffer_pool_instances = 20
innodb_buffer_pool_size = 20G # Значение этого параметра должно быть не более 60% от объема ОЗУ на сервере
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_flush_log_at_trx_commit = 2
innodb_support_xa = 0
innodb_log_buffer_size = 2G
innodb_write_io_threads = 16
innodb_read_io_threads = 16
innodb_lock_wait_timeout = 500
event_scheduler = 1
query_cache_type = 1
query_cache_size = 64M
join_buffer_size=16M
query_cache_limit=64M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
key_buffer = 256M
key_buffer_size=64M
open_files_limit = 100000
thread_cache_size = 100
Comment