Анализ ГЛОБАЛЬНОГО СТАТУСА И ПЕРЕМЕННЫХ. Увы, ничто не указывает на то, почему у вас проблема с памятью.
Замечания:
- Версия: 10.1.38-MariaDB-0ubuntu0.18.10.2
- 64 ГБ ОЗУ
- Время работы = 10:28:11; некоторые значения GLOBAL STATUS могут быть еще не значимыми.
- Вы не работаете в Windows.
- Запуск 64-битной версии
- Похоже, что вы полностью (или в основном) используете InnoDB.
Более важные вопросы:
thread_cache_size
- Увеличение до 50.
long_query_time = 1
и включите медленный журнал. Дополнительные обсуждения: http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog Существует несколько признаков запросов, которые, возможно, нуждаются в улучшении - возможно, лучшая индексация, возможно, лучшая формулировка. Медленный журнал поможет нам определить, на каких из них сосредоточиться.
Является ли этот сервер частью кластера Galera? У меня могут быть дополнительные вопросы или комментарии в зависимости от ответа.
Max_used_connections
достиг 199. Это довольно высоко. Надеюсь, что решение медленных запросов приведет к этому.
Подробности и другие наблюдения:
( (key_buffer_size / 0.20 + innodb_buffer_pool_size / 0.70) / _ram ) = (32M / 0.20 + 12288M / 0.70) / 65536M = 27.0%
- Большая часть доступного оперативного памяти должна быть доступна для кэширования.
- http://mysql.rjweb.org/doc.php/memory
( table_open_cache ) = 4,000
- Количество дескрипторов таблиц для кэширования
- 700 может быть хорошо в вашем случае. (Open_tables = 535
)
( innodb_lru_scan_depth ) = 1,024
- «InnoDB: page_cleaner: 1000 мсек, на который намеченный цикл потребовалось ...» может быть исправлено понижением lru_scan_depth
( Innodb_os_log_written ) = 8,213,856,256 / 37691 = 217926 /sec
- Это показатель того, насколько занят InnoDB.
- Очень занят InnoDB.
( Innodb_rows_deleted / Innodb_rows_inserted ) = 1,085,550 / 1658210 = 0.655
- Маслобойка
- «Не ставь в очередь, просто сделай это». (Если MySQL используется в качестве очереди.)
( Innodb_row_lock_waits ) = 9,462 / 37691 = 0.25 /sec
- Как часто происходит задержка получения блокировки строки.
- Может быть вызвано сложными запросами, которые могут быть оптимизированы.
( innodb_flush_neighbors ) = 1
- Незначительная оптимизация при записи блоков на диск.
- Используйте 0 для SSD накопителей; 1 для жесткого диска.
( sync_binlog ) = 0
- Используйте 1 для дополнительной безопасности, при некоторой стоимости ввода-вывода = 1 может привести к большому количеству «конца запроса»; = 0 может привести к «binlog в невозможной позиции» и потерять транзакции в случае сбоя, но быстрее.
( innodb_thread_concurrency ) = 0
- 0 = Пусть InnoDB определит лучшее для concurrency_tickets.
- Установите 0 или 64. Это может привести к сокращению использования процессора.
( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF
- регистрировать ли все тупики.
- Если вы страдаете от тупиков, включите это. Предостережение. Если у вас много взаимоблокировок, это может привести к большой записи на диск.
( local_infile ) = local_infile = ON
- local_infile = ON - потенциальная проблема безопасности
( Created_tmp_disk_tables ) = 100,172 / 37691 = 2.7 /sec
- Частота создания диска «временных» таблиц в составе сложных команд SELECT
- увеличить tmp_table_size и max_heap_table_size.
Проверьте правила для временных таблиц, когда MEMORY используется вместо MyISAM. Возможно, незначительные изменения схемы или запроса могут избежать MyISAM.
Лучшие индексы и переформулировка запросов с большей вероятностью помогут.
( Select_full_join ) = 228,142 / 37691 = 6.1 /sec
- присоединяется без индекса
- Добавьте подходящий индекс (ы) к таблицам, используемым в JOIN.
( Select_scan ) = 451,720 / 37691 = 12 /sec
- полное сканирование таблицы
- Добавить индексы / оптимизировать запросы (если они не являются крошечными таблицами)
( Select_scan / Com_select ) = 451,720 / 4944883 = 9.1%
-% выборок, выполняющих полное сканирование таблицы. (Может быть одурачен хранимой рутиной.)
- Добавить индексы / оптимизировать запросы
( Sort_merge_passes ) = 7,711 / 37691 = 0.2 /sec
- Здоровенные сорта
- Увеличьте sort_buffer_size и / или оптимизируйте сложные запросы.
( Com_insert + Com_delete + Com_delete_multi + Com_replace + Com_update + Com_update_multi ) = (2323860 + 36898 + 0 + 0 + 2307510 + 3) / 37691 = 123 /sec
- пишет / сек
- 50 операций записи / сек + сбросы журнала, вероятно, максимально увеличат емкость записи ввода / вывода обычных дисков
( binlog_format ) = binlog_format = STATEMENT
- ЗАЯВЛЕНИЕ / РЯД / СМЕШАННОЕ. ROW является предпочтительным; это может стать значением по умолчанию.
( wsrep_on ) = wsrep_on = OFF
- Galera: включить репликацию
- Почему он выключен?
( innodb_autoinc_lock_mode ) = 1
- Галера: желания 2 - 2 = «чередование»; 1 = "последовательный" типичный; 0 = "традиционный".
( wsrep_log_conflicts ) = wsrep_log_conflicts = OFF
- Если во время COMMIT возникают тупиковые конфликты, этот флаг может быть полезен.
( slow_query_log ) = slow_query_log = OFF
- регистрировать ли медленные запросы. (5.1.12)
( long_query_time ) = 10
- Обрезание (секунды) для определения «медленного» запроса.
- Предложить 2
( Connections ) = 619,511 / 37691 = 16 /sec
- Соединения
- увеличить wait_timeout; использовать пул?
( Threads_created / Connections ) = 17,071 / 619511 = 2.8%
- Быстрота создания процесса
( thread_cache_size / max_connections ) = 8 / 512 = 1.6%
- Увеличить thread_cache_size (не для Windows)
Аномально маленький:
Acl_database_grants = 3
Acl_users = 5
Aria_pagecache_blocks_unused = 13,617
Innodb_background_log_sync = 36,995
Innodb_log_writes / Innodb_log_write_requests = 0.20%
Innodb_master_thread_idle_loops = 512
Memory_used = 179.5MB
Аномально большой:
Aria_pagecache_write_requests = 682 /sec
Aria_pagecache_writes = 270 /sec
Aria_transaction_log_syncs = 1,238
Com_show_binlogs = 12 /HR
Com_show_engine_status = 83 /HR
Com_show_plugins = 83 /HR
Feature_locale = 3.1 /HR
Handler_delete = 74 /sec
Handler_discover = 5 /HR
Handler_icp_attempts = 60233 /sec
Handler_icp_match = 59945 /sec
Handler_tmp_update = 5583 /sec
Handler_tmp_write = 11043 /sec
Innodb_buffer_pool_bytes_data = 296959 /sec
Innodb_buffer_pool_pages_dirty = 61,297
Innodb_buffer_pool_write_requests = 5262 /sec
Innodb_ibuf_merged_deletes = 0.32 /sec
Innodb_rows_updated = 358 /sec
Rows_tmp_read = 7844 /sec
Select_range = 59 /sec
Select_range / Com_select = 44.7%
Sort_rows = 9375 /sec
Tc_log_page_size = 4,096
Update_scan = 123,123
innodb_read_io_threads = 64
max_relay_log_size = 100MB
Ненормальные строки:
innodb_default_row_format = compact
innodb_fast_shutdown = 1
myisam_stats_method = NULLS_UNEQUAL
Изменения, сделанные OP
innodb_flush_neighbors 1 | innodb_flush_neighbors 0
long_query_time 10.000000 | long_query_time 1.000000
open_files_limit 8551 | open_files_limit 2565
pseudo_thread_id 16370 | pseudo_thread_id 32010
rand_seed1 357956615 | rand_seed1 386239716
rand_seed2 975103936 | rand_seed2 465882405
slow_query_log OFF | slow_query_log ON
slow_query_log_file prod4-slo | slow_query_log_file /var/
table_open_cache 4000 | table_open_cache 700
thread_cache_size 8 | thread_cache_size 50
timestamp 1561288673.757972 | timestamp 1561333380.04