LINUX.ORG.RU

mariadb падает с завидной регулярностью

 , ,


0

1

Здравствуйте! Может кто-нибудь поможет с проблемой? На сервере с CentOS 7 работает вордпресс. Стандартно LAMP. При проверке нагрузки на сайт, например, через сервис loaddy, mariadb падает после 10 одновременных подключений. Рестарт проходит нормально. Сервер, конечно, слабенький, 1 ядро и 512 оперативной памяти, но он должен держать явно больше 10 пользователей одновременно. При чем именно 10 крайнее число. По запросу к бд show variables like ‘max_connections’ говорит 151. В log_error не был создан сокет для бд, сокет создал, права назначил, теперь вообще непонятно, почему падает бд, в log_error наступила тишина. Вернее, бд еще пару раз ругнулась и тишина. Ругалась на error: Found option without preceding group in config file: /etc/my.cnf at line: 1, хотя my.cnf не изменялся, в первой строке [mysqld], как и положено. Пробовал кодировку my.cnf на ansi менять - безрезультатно. Пробовал макс коннекшн в конфиге прописывать - никакого эффекта. Может кто-то подскажет, что это за ерунда? Может быть есть какое-то ограничение в самой ОС? Я считаю, что даже на таком сервере вп должен держать явно больше 10 юзеров одновременно. Буду крайне благодарен за советы.


Что значит падает? Сервис перезапускается? Что в логе? Вангую неправильную настройку на объем памяти, больший, чем есть, а потом OOM killer.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Исправляюсь: Конфиг my.cnf в состоянии по умолчанию, единственное было добавлено

query_cache_type = 1

query_cache_limit = 2M

query_cache_size = 20M

Падает - это по команде service mariadb status пишет inactive. При попытке mysql -uroot -p пишет ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111).

По команде systemctl restart mariadb сервис перезапускается нормально. В логах /var/lib/mysql/host.err тишина.

В логах var/log/mariadb/mariadb.log после падения (почему-то в предпросмотре разметка ни кат, ни >>> не сработала. Оставлю так)

200114 05:18:35 mysqld_safe Number of processes running now: 0

200114 05:18:35 mysqld_safe mysqld restarted

200114 5:18:36 [Note] /usr/libexec/mysqld (mysqld 5.5.64-MariaDB) starting as process 27229 …

200114 5:18:36 InnoDB: The InnoDB memory heap is disabled

200114 5:18:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins

200114 5:18:36 InnoDB: Compressed tables use zlib 1.2.7

200114 5:18:36 InnoDB: Using Linux native AIO

200114 5:18:36 InnoDB: Initializing buffer pool, size = 128.0M

200114 5:18:36 InnoDB: Completed initialization of buffer pool

200114 5:18:36 InnoDB: highest supported file format is Barracuda.

200114 5:18:36 InnoDB: Starting crash recovery from checkpoint LSN=422206582

InnoDB: Restoring possible half-written data pages from the doublewrite buffer…

200114 5:18:36 InnoDB: Starting final batch to recover 1 pages from redo log

200114 5:18:36 InnoDB: Waiting for the background threads to start

200114 5:18:37 Percona XtraDB (http://www.percona.com) 5.5.61-MariaDB-38.13 started; log sequence number 422207838

200114 5:18:37 [Note] Plugin ‘FEEDBACK’ is disabled.

200114 5:18:37 [Note] Server socket created on IP: ‘0.0.0.0’.

200114 5:18:37 [Note] Event Scheduler: Loaded 0 events

200114 5:18:37 [Note] /usr/libexec/mysqld: ready for connections.

Version: ‘5.5.64-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server

200114 05:18:38 mysqld_safe Number of processes running now: 0

200114 05:18:39 mysqld_safe mysqld restarted

200114 5:18:39 [Note] /usr/libexec/mysqld (mysqld 5.5.64-MariaDB) starting as process 27285 …

200114 5:18:39 InnoDB: The InnoDB memory heap is disabled

200114 5:18:39 InnoDB: Mutexes and rw_locks use GCC atomic builtins

200114 5:18:39 InnoDB: Compressed tables use zlib 1.2.7

200114 5:18:39 InnoDB: Using Linux native AIO

200114 5:18:39 InnoDB: Initializing buffer pool, size = 128.0M

200114 5:18:39 InnoDB: Completed initialization of buffer pool

200114 5:18:39 InnoDB: highest supported file format is Barracuda.

200114 5:18:39 InnoDB: Starting crash recovery from checkpoint LSN=422207838

InnoDB: Restoring possible half-written data pages from the doublewrite buffer…

200114 5:18:39 InnoDB: Starting final batch to recover 1 pages from redo log

200114 5:18:39 InnoDB: Waiting for the background threads to start

200114 5:18:40 Percona XtraDB (http://www.percona.com) 5.5.61-MariaDB-38.13 started; log sequence number 422208065

200114 5:18:40 [Note] Plugin ‘FEEDBACK’ is disabled.

200114 5:18:40 [Note] Server socket created on IP: ‘0.0.0.0’.

200114 5:18:40 [Note] Event Scheduler: Loaded 0 events

200114 5:18:40 [Note] /usr/libexec/mysqld: ready for connections.

Version: ‘5.5.64-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server

200114 05:18:44 mysqld_safe Number of processes running now: 0

200114 05:18:44 mysqld_safe mysqld restarted

200114 5:18:44 [Note] /usr/libexec/mysqld (mysqld 5.5.64-MariaDB) starting as process 27341 …

200114 5:18:44 InnoDB: The InnoDB memory heap is disabled

200114 5:18:44 InnoDB: Mutexes and rw_locks use GCC atomic builtins

200114 5:18:44 InnoDB: Compressed tables use zlib 1.2.7

200114 5:18:44 InnoDB: Using Linux native AIO

200114 5:18:44 InnoDB: Initializing buffer pool, size = 128.0M

200114 5:18:44 InnoDB: Completed initialization of buffer pool

200114 5:18:44 InnoDB: highest supported file format is Barracuda.

200114 5:18:44 InnoDB: Starting crash recovery from checkpoint LSN=422208065

InnoDB: Restoring possible half-written data pages from the doublewrite buffer…

200114 5:18:45 InnoDB: Starting final batch to recover 1 pages from redo log

200114 5:18:45 InnoDB: Waiting for the background threads to start

200114 5:18:46 Percona XtraDB (http://www.percona.com) 5.5.61-MariaDB-38.13 started; log sequence number 422208482

200114 5:18:46 [Note] Plugin ‘FEEDBACK’ is disabled.

200114 5:18:46 [Note] Server socket created on IP: ‘0.0.0.0’.

200114 5:18:46 [Note] Event Scheduler: Loaded 0 events

200114 5:18:46 [Note] /usr/libexec/mysqld: ready for connections.

Version: ‘5.5.64-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server

200114 05:18:46 mysqld_safe Number of processes running now: 0 200114 05:18:46 mysqld_safe mysqld restarted

200114 5:18:46 [Note] /usr/libexec/mysqld (mysqld 5.5.64-MariaDB) starting as process 27394 …

200114 5:18:46 InnoDB: The InnoDB memory heap is disabled

200114 5:18:46 InnoDB: Mutexes and rw_locks use GCC atomic builtins

200114 5:18:46 InnoDB: Compressed tables use zlib 1.2.7 200114 5:18:46 InnoDB: Using Linux native AIO

200114 5:18:46 InnoDB: Initializing buffer pool, size = 128.0M

200114 5:18:46 InnoDB: Completed initialization of buffer pool

200114 5:18:46 InnoDB: highest supported file format is Barracuda.

InnoDB: The log sequence number in ibdata files does not match

InnoDB: the log sequence number in the ib_logfiles!

InnoDB: Restoring possible half-written data pages from the doublewrite buffer…

200114 5:18:46 InnoDB: Waiting for the background threads to start

200114 5:18:47 Percona XtraDB (http://www.percona.com) 5.5.61-MariaDB-38.13 started; log sequence number 422208482

200114 5:18:47 [Note] Plugin ‘FEEDBACK’ is disabled.

200114 5:18:47 [Note] Server socket created on IP: ‘0.0.0.0’.

200114 5:18:47 [Note] Event Scheduler: Loaded 0 events

200114 5:18:47 [Note] /usr/libexec/mysqld: ready for connections.

try20
() автор топика
Ответ на: комментарий от try20

почему-то в предпросмотре разметка ни кат, ни >>> не сработала. Оставлю так

Если ты документацию по своей системе читал также внимательно, как две строчки под формой поста, то удивительного в том, что у тебя что-то не работает - крайне мало.

anonymous
()
Ответ на: комментарий от anonymous

читал также внимательно, как две строчки под формой поста

Ну я видел, что игнорируется, но весь текст пихать было неудобно и я так отмазался

try20
() автор топика
Ответ на: комментарий от try20

Конфиг my.cnf в состоянии по умолчанию, единственное было добавлено
query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 20M

Я еще в my.cnf пробовал

max_connections = 64

Но эффекта никакого. Больше my cnf не редактировался.

В принципе, вот весь конфиг:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
security risks
symbolic-links=0

query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 20M
max_connections = 64

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 1)
Ответ на: комментарий от try20

Пробовал вот так в my.cnf, то же самое, но сейчас в дефолтном состоянии, за исключением описанного выше:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

max_connections = 64
key_buffer_size = 16M
innodb_buffer_pool_size = 32M
innodb_buffer_pool_instances = 2
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
thread_cache_size = 8
query_cache_size = 20M
query_cache_limit = 2M
max_heap_table_size = 8M
tmp_table_size = 8M

init_connect=‘SET collation_connection = utf8_unicode_ci’ character-set-server = utf8
collation-server = utf8_unicode_ci

sql_mode = «ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES»

[client] default-character-set = utf8

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 1)

У тебя ведь даже на форуме оформить текст не получается нормально, не удивительно что и база падает.
mysqld ругается на my.cnf, обычно, когда он кривой.
Если падает mysqld - процесс убивает кто-то другой, и логично что сам mysqld ничего не напишет. Смотри логи в /var/log/messages или journalctl -r

redwagon
()
Ответ на: комментарий от try20

dmesg попробуй посмотреть. Но в целом все и так ясно - приходит OOM.

Deleted
()

У тебя падает по нехватке памяти. По поводу должен держать или нет 10 юзеров - там смотреть надо на сам вордпресс и характер коннектов от пользователей. Плюс надо, чтобы коннекшоны не персистент были. Ну и по памяти как оптимизнуть тоже читай. А вообще, если логов нет, значит, что-то не то настроено. Тебе нужно усиленно читать /var/log/messages или что там, в общем, общий системный лог.

ПС: А вообще, centos не рекомендую. Кто-то, может, порекомендует, но я нет.

turtle_bazon ★★★★★
()

Если это OOM, то сообщение, как уже сказали, ищи в journalctl во время, когда упала база. Затем смотреть, что кушает память. Чтобы апач кушал поменьше, нужно ограничить количество его воркеров. Ну и mariadb можно настроить на меньший объем памяти. Повозится придется, но это должно быть сделано.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

@goingUp

в journalctl -r последняя запись - это systemd[1]: Started MariaDB database server.

Когда БД падает, здесь ничего не отображается.

в dmesg вообще пусто.

В /var/log/mariadb/mariadb.log последние записи ниже. последняя запись - shutdown complete. Откуда можно узнать, кто шатдаун БД делает?

200114 11:14:26 Percona XtraDB (http://www.percona.com) 5.5.61-MariaDB-38.13 started; log sequence number 422333049
200114 11:14:26 [Note] Plugin ‘FEEDBACK’ is disabled.
200114 11:14:26 [Note] Server socket created on IP: ‘0.0.0.0’.
200114 11:14:26 [Note] Event Scheduler: Loaded 0 events
200114 11:14:26 [Note] /usr/libexec/mysqld: ready for connections.
Version: ‘5.5.64-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server
200114 11:14:26 mysqld_safe Number of processes running now: 0
200114 11:14:26 mysqld_safe mysqld restarted
200114 11:14:26 [Note] /usr/libexec/mysqld (mysqld 5.5.64-MariaDB) starting as process 2249 …
200114 11:14:26 InnoDB: The InnoDB memory heap is disabled
200114 11:14:26 InnoDB: Mutexes and rw_locks use GCC atomic builtins
200114 11:14:26 InnoDB: Compressed tables use zlib 1.2.7
200114 11:14:26 InnoDB: Using Linux native AIO
200114 11:14:26 InnoDB: Initializing buffer pool, size = 128.0M
200114 11:14:27 InnoDB: Completed initialization of buffer pool
200114 11:14:27 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
InnoDB: Restoring possible half-written data pages from the doublewrite buffer…
200114 11:14:27 InnoDB: Waiting for the background threads to start
200114 11:14:28 Percona XtraDB (http://www.percona.com) 5.5.61-MariaDB-38.13 started; log sequence number 422333049
200114 11:14:28 [Note] Plugin ‘FEEDBACK’ is disabled.
200114 11:14:28 [Note] Server socket created on IP: ‘0.0.0.0’.
200114 11:14:28 [Note] Event Scheduler: Loaded 0 events
200114 11:14:28 [Note] /usr/libexec/mysqld: ready for connections.
Version: ‘5.5.64-MariaDB’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server 200114 11:45:44 [Note] /usr/libexec/mysqld: Normal shutdown
200114 11:45:44 [Note] Event Scheduler: Purging the queue. 0 events
200114 11:45:44 InnoDB: Starting shutdown…
200114 11:45:47 InnoDB: Shutdown completed; log sequence number 422337435
200114 11:45:47 [Note] /usr/libexec/mysqld: Shutdown complete

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 2)
Ответ на: комментарий от turtle_bazon

ПС: А вообще, centos не рекомендую. Кто-то, может, порекомендует, но я нет.

Ты разумный человек, и что ты рекомендуешь?

anonymous
()

Сделайте своп пару гиг, если дело в памяти это поможет

ism ★★★
()
Последнее исправление: ism (всего исправлений: 2)
Ответ на: комментарий от try20

Ну, если в логе пусто, можно еще посмотреть в момент падения, сколько памяти свободной. В top, если нету мониторинга.

goingUp ★★★★★
()
Ответ на: комментарий от try20

https://www.percona.com/blog/2015/10/09/mysqld-kills-mysqld/

Проделай эти процедуры и увидишь, кто тебе гасит mysqld.

Но вообще стоит ещё посмотреть задания cron и system таймеры, нет ли там чего-нибудь забавного.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Это что такое?

Это не туда попало, когда я сюда конфиг копировал.

в момент падения, сколько памяти свободной

Да, я уже посмотрел, действительно, проблема в нехватке оперативной памяти. Мне просто интересно, где это можно было определить в логах и почему шатдаун нормал.

Сделайте своп пару гиг

OpenVZ. Я по поводу свопа буду мигрировать на XEN или KVM. KVM у нас просто облачный, не доверяю почему-то.

Всем большое спасибо за помощь! Очень помогли.

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 2)
Ответ на: комментарий от Deleted

Может кто-то из хорошо понимающих, что он делает, опишет что-то вроде рекомендационного конфига my.cnf под одно ядро и 512 оперативной памяти? Я думаю, не только мне это пригодится в последующем.

try20
() автор топика
Ответ на: комментарий от try20

Популярные опции для контроля памяти

key_buffer_size  
innodb_buffer_pool_size                                    

ism ★★★
()
Ответ на: комментарий от anonymous

Ты разумный человек, и что ты рекомендуешь?

Я хз какой по разумности, но из моего опыта мне меньше всего проблем доставлял дебиан.

turtle_bazon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.