Оптимізація параметрів MySQL - у mysqld не вистачає пам'яті


15

Я трохи розгублений, які параметри потрібно змінити у файлі 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

Відповіді:


10

Загальна відповідь з wiki-сервера :

MySQL тюнер Встановити mysqltuner

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

sudo apt-get install mysqltuner

Після того, як його встановлено, запустіть його:

 mysqltuner

і чекати його остаточного звіту. Верхній розділ містить загальну інформацію про сервер бази даних, а нижній розділ пропонує налаштування пропозицій щодо зміни у вашому my.cnf. Більшість із них можна змінити в прямому ефірі на сервері без перезавантаження, перегляньте офіційну документацію MySQL (посилання в розділі Ресурси), щоб відповідні змінні змінилися у виробництві. Далі є частиною прикладу звіту з виробничої бази даних, який показує, що може бути певна користь від збільшення кількості кешу запитів:

-------- Рекомендації ----------------------------------------- ------------
Загальні рекомендації:
    Запустіть OPTIMIZE TABLE для дефрагментації таблиць для кращої продуктивності
    Поступово збільшуйте table_cache, щоб уникнути обмежень дескриптора файлів
Змінні для налаштування:
    key_buffer_size (> 1.4G)
    query_cache_size (> 32М)
    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

Дозвіл для докерних композицій

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

Налаштування вмісту ./config/mysql/my.cnf

[mysqld]
performance_schema = off
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.