Последнее время это не так. Все чаще вижу чрезмерное потребление сервером бд памяти, из-за чего его грохает OOM Killer. Приходится идти и тюнить mariadb по потреблению памяти, что не совсем очевидно, если ты не специализируешься на базах данных. Я стараюсь действовать максимально просто и эффективно. Беру скрипт mysqltuner и прогоняю его. Он выдает максимально возможное потребление памяти сервером бд в значениях:
Total buffers: 192.0M global + 11.4M per thread (50 max threads) Я долго пытался понять, из чего точно складываются эти цифры, пока мне это не надоело. В итоге залез в сам скрипт и подсмотрел. Рассказываю.
Global:
innodb_buffer_pool_sizeinnodb_log_file_sizekey_buffer_sizeinnodb_log_buffer_sizequery_cache_sizearia_pagecache_buffer_sizeЭти значения просто суммируются.
Thread:
max_connections # значения ниже суммируются и умножаются на max_connectionssort_buffer_sizejoin_buffer_sizeread_buffer_sizeread_rnd_buffer_sizemax_allowed_packetthread_stackВчера для небольшого сервера с 1Gb оперативной памяти нарисовал вот такой конфиг, который позволяет серверу mysql забрать не более 70% оперативной памяти:
########### global memoryinnodb_buffer_pool_size = 128Minnodb_log_file_size = 32Mkey_buffer_size = 16Minnodb_log_buffer_size = 16Mquery_cache_size = 0aria_pagecache_buffer_size = 16M########### thread memorymax_connections = 50sort_buffer_size = 1Mjoin_buffer_size = 1Mread_buffer_size = 128KBread_rnd_buffer_size = 1Mmax_allowed_packet = 8M##########Специалистом по оптимизации БД не являюсь. Если что-то напутал или у кого-то есть советы по базовой оптимизации mysql, прошу поделиться информацией.
p.s. Сохрани в закладки, наверняка понадобится, когда будешь разбираться с этой темой.
#mysql