Оптимизация настроек MySQL - mysqld не хватает памяти

Я немного озадачен тем, какие настройки нужно изменить в моем файле my.conf, чтобы оптимизировать его для моего сервера (сервер mysql продолжает падать из-за нашего большого трафика).

Вот файл my.cnf:

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer              = 16M
max_allowed_packet      = 16M
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

И спецификации сервера:

CPU Cores   2 cores
RAM (Memory)    1GB
SSD (Disk Space)    20GB

Запуск Ubuntu 12.04 LTS

Вот мой разделы:

NAME   FSTYPE   SIZE MOUNTPOINT LABEL
vda              20G            
├─vda1 ext4     476M /boot      
├─vda2 swap     477M [SWAP]     
└─vda3 ext4    19.1G / 

Любая помощь будет высоко ценится.

Глядя на журналы ошибок, я вижу, что mysqld не хватает памяти:

Feb 17 11:02:06 111488 kernel: [8276839.559141] Out of memory: Kill process 20719 (mysqld) score 75 or sacrifice child
Feb 17 11:02:06 111488 kernel: [8276839.559209] Killed process 20719 (mysqld) total-vm:1347424kB, anon-rss:30524kB, file-rss:0kB
15
задан 17 February 2014 в 15:31

3 ответа

Общий ответ из серверной вики :

MySQL Tuner Install mysqltuner

MySQL Tuner - это полезный инструмент, который подключается к работающему экземпляру MySQL и предлагает рекомендации по его оптимальной настройке для вашей рабочей нагрузки. Чем дольше работает сервер, тем лучше может дать совет mysqltuner. В производственной среде подождите не менее 24 часов, прежде чем запускать инструмент. Вы можете установить mysqltuner из репозиториев Ubuntu:

sudo apt-get install mysqltuner

Затем, после его установки, запустите его:

 mysqltuner

и дождитесь его окончательного отчета. В верхнем разделе представлена ​​общая информация о сервере базы данных, а в нижнем разделе приведены рекомендации по настройке для изменения в вашем my.cnf. Большинство из них могут быть изменены в режиме реального времени на сервере без перезапуска. Просмотрите официальную документацию MySQL (ссылка в разделе «Ресурсы»), чтобы найти соответствующие переменные, которые необходимо изменить в рабочей среде. Следующее является частью примера отчета из производственной базы данных, который показывает, что увеличение объема кэша запросов может принести некоторую пользу:

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
    key_buffer_size (> 1.4G)
    query_cache_size (> 32M)
    table_cache (> 64)
    innodb_buffer_pool_size (>= 22G)

Последний комментарий по настройке баз данных: мы можем широко сказать, что определенные настройки являются лучшими, производительность может варьироваться от приложения к приложению. Например, то, что работает лучше всего для Wordpress, может быть не лучшим для Drupal, Joomla или проприетарных приложений. Производительность зависит от типов запросов, использования индексов, эффективности проектирования базы данных и так далее. Может оказаться полезным потратить некоторое время на поиск советов по настройке базы данных в зависимости от того, для каких приложений вы ее используете. Как только вы достигнете определенного уровня, любые внесенные вами изменения приведут лишь к незначительным улучшениям, и вам будет лучше либо улучшить приложение, либо рассмотреть вопрос о масштабировании среды базы данных с помощью более мощного оборудования или добавления подчиненных серверов.


  • Просмотрите раздел показателей производительности отчета mysqltuner. Держите максимально возможную память под 50%.
  • tmp_table_size, max_heap_table_size variable: держите их равными и высокими.
  • join_buffer_size, увеличение в небольших количествах; оно будет умножено на max_connections.
  • innodb_buffer_pool_size. Сделай это высоко.
0
ответ дан 17 February 2014 в 15:31

Другое возможное исправление - использовать следующее в разделе [mysqld] вашей конфигурации /etc/mysql/my.cnf.

performance_schema = off

Источник: https://serverfault.com/questions/564748/mysql-mariadb-crashes-frequently

0
ответ дан 17 February 2014 в 15:31

Разрешение для docker compose

mysql:
    volumes:
        - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

Содержимое конфигурации ./config/mysql/my.cnf

[mysqld]
performance_schema = off
0
ответ дан 17 February 2014 в 15:31

Другие вопросы по тегам:

Похожие вопросы: