MariaDB / Columnstore engine Память забита - PullRequest
0 голосов
/ 25 октября 2018

мы установили mariadb вместе с механизмом columnstore, и в последние несколько недель мы сталкиваемся с проблемой блокирования памяти, когда память блокируется и все наши операции DML / DDL зависают после перезапуска служб, которые исправляются.

below are the stats :

              total        used        free      shared  buff/cache   available
Mem:             15           2           7           0           5          12
Swap:             4           0           4


[mysqld]
port = 3306
socket          = /opt/evolv/mariadb/columnstore/mysql/lib/mysql/mysql.sock
datadir         = /opt/evolv/mariadb/columnstore/mysql/db
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 64M
read_buffer_size = 64M
read_rnd_buffer_size = 512M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 0
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 8
thread_stack = 512K
lower_case_table_names=1
group_concat_max_len=512
infinidb_use_import_for_batchinsert=1
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 8192M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

1 Ответ

0 голосов
/ 30 октября 2018

Вот анализ VARIABLES и (подозрительно) GLOBAL STATUS;ничего захватывающего:

Наблюдения:

  • Версия: 10.1.26-MariaDB
  • 15 ГБ ОЗУ
  • Время работы= 03:04:25;Пожалуйста, перезапустите SHOW GLOBAL STATUS через несколько часов.
  • Вы уверены, что это был SHOW GLOBAL STATUS?
  • Вы не работаете в Windows.
  • Запуск 64-разрядной версии
  • Похоже, что вы полностью (или в основном) используете InnoDB.

Более важные проблемы:

Время работы = 03:04:25;Пожалуйста, перезапустите SHOW GLOBAL STATUS через несколько часов.

Вы уверены, что это был SHOW GLOBAL STATUS?

key_buffer_size слишком велико (3G).Если вам не нужен MyISAM для чего-либо, установите его на 50M.

Проверьте infinidb_um_mem_limit, чтобы увидеть, имеет ли это смысл для вашего приложения.

Предложите понизить innodb_buffer_pool_size до 2G до"Удушье" выяснено.

Подробности и другие наблюдения: ( (key_buffer_size - 1.2 * Key_blocks_used * 1024) / _ram ) = (3072M - 1.2 * 0 * 1024) / 15360M = 20.0% - Процент памяти, потраченной впустую в key_buffer.- Уменьшить key_buffer_size.

( Key_blocks_used * 1024 / key_buffer_size ) = 0 * 1024 / 3072M = 0 - Процент используемого key_buffer.Высокая вода знак.- Уменьшите key_buffer_size, чтобы избежать ненужного использования памяти.

( innodb_buffer_pool_size / _ram ) = 6144M / 15360M = 40.0% -% ОЗУ, используемого для InnoDB buffer_pool

( Innodb_buffer_pool_pages_free * 16384 / innodb_buffer_pool_size ) = 392,768 * 16384 / 6144M = 99.9% - свободный буферный пул

( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF - Нужно ли регистрировать все тупики.- Если вы страдаете от тупиков, включите это.Внимание: Если у вас много взаимоблокировок, это может привести к записи большого количества данных на диск.

( local_infile ) = local_infile = ON - local_infile = ON - это потенциальная проблема безопасности

( expire_logs_days ) = 0 - Как скороавтоматически очищать binlog (после этого много дней) - слишком большой (или ноль) = занимает место на диске;слишком маленький = нужно быстро реагировать на сбой сети / машины.(Не актуально, если log_bin = OFF)

( long_query_time ) = 5 - Обрезание (секунды) для определения «медленного» запроса.- Предложить 2

Аномально большой:

read_buffer_size = 32MB
Acl_database_grants = 780
Acl_proxy_users = 4
Acl_users = 281

Columstore.xml

95% все memory ??

    <MemoryCheckPercent>95</MemoryCheckPercent> <!-- Max real memory to limit growth of buffers to -->
    <DataFileLog>OFF</DataFileLog>

Я полагаю, это не имеет значения, поскольку оно закомментировано ??

    <!-- enable if you want to limit how much memory may be used for hdfs read/write memory buffers.
    <hdfsRdwrBufferMaxSize>8G</hdfsRdwrBufferMaxSize>
    -->

Имейте в виду, что MySQL, кроме Columnstore, потребляетмного памяти:

    <TotalUmMemory>25%</TotalUmMemory>
    <TotalPmUmMemory>10%</TotalPmUmMemory>
...