We are happy to announce that Vesta is back under active development as of 25 February 2024. We are working on v1 candidate and expect to engage more with the community over the coming months. We are committed to open source, and we encourage contributors to help us build the future of Vesta.
MySQL падает
MySQL падает
Привет ребята, подскажите в чем проблема.
У меня стоит Drupal CMS, в некоторые момент на совершенно не нагруженном сайте (1-3 посетителя) падает MySQL.
Вот часть лог файла перед падением. (После падения, MySQL сервер не запускается)
У меня стоит Drupal CMS, в некоторые момент на совершенно не нагруженном сайте (1-3 посетителя) падает MySQL.
Вот часть лог файла перед падением. (После падения, MySQL сервер не запускается)
Version: '5.5.33' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) by Remi
130826 02:09:25 mysqld_safe Number of processes running now: 0
130826 02:09:25 mysqld_safe mysqld restarted
130826 2:09:25 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
130826 2:09:25 [Note] Plugin 'FEDERATED' is disabled.
130826 2:09:25 InnoDB: The InnoDB memory heap is disabled
130826 2:09:25 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130826 2:09:25 InnoDB: Compressed tables use zlib 1.2.3
130826 2:09:25 InnoDB: Using Linux native AIO
130826 2:09:25 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
130826 2:09:25 InnoDB: Completed initialization of buffer pool
130826 2:09:25 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130826 2:09:25 [ERROR] Plugin 'InnoDB' init function returned error.
130826 2:09:25 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130826 2:09:25 [ERROR] Unknown/unsupported storage engine: InnoDB
130826 2:09:25 [ERROR] Aborting
130826 2:09:25 [Note] /usr/libexec/mysqld: Shutdown complete
130826 02:09:25 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Re: MySQL падает
Причина падений видна в строке
Серверу нехватает оперативной памяти для работы. Попробуйте уменишить до 20 ол-во max_connections в конфигурационном файле /etc/my.cnfFatal error: cannot allocate memory for the buffer pool
Re: MySQL падает
Очень странно, сервер поставил на чистый CentOs с 512 оперативки - DigitalOceanskid wrote:Причина падений видна в строкеСерверу нехватает оперативной памяти для работы. Попробуйте уменишить до 20 ол-во max_connections в конфигурационном файле /etc/my.cnfFatal error: cannot allocate memory for the buffer pool
Re: MySQL падает
У меня сейчас похожая ситуация. Тоже DigitalOcean 512.
Зажимаю на 5 секунд F5 и получаю
В логе
Что есть собственно ничего... Не вижу конкретной проблемы.
Зажимаю на 5 секунд F5 и получаю
Code: Select all
[root@quaded ~]# service mysqld status
mysqld dead but subsys locked
Code: Select all
130828 20:48:28 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130828 20:48:28 [Note] Plugin 'FEDERATED' is disabled.
130828 20:48:28 InnoDB: The InnoDB memory heap is disabled
130828 20:48:28 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130828 20:48:28 InnoDB: Compressed tables use zlib 1.2.3
130828 20:48:28 InnoDB: Using Linux native AIO
130828 20:48:28 InnoDB: Initializing buffer pool, size = 128.0M
130828 20:48:29 InnoDB: Completed initialization of buffer pool
130828 20:48:29 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!
130828 20:48:29 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
130828 20:48:29 InnoDB: Waiting for the background threads to start
130828 20:48:30 InnoDB: 5.5.31 started; log sequence number 7085934
130828 20:48:30 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130828 20:48:30 [Note] - '0.0.0.0' resolves to '0.0.0.0';
130828 20:48:30 [Note] Server socket created on IP: '0.0.0.0'.
130828 20:48:30 [Note] Event Scheduler: Loaded 0 events
130828 20:48:30 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.31' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) by Remi
130828 20:49:47 mysqld_safe Number of processes running now: 0
130828 20:49:48 mysqld_safe mysqld restarted
130828 20:49:51 [Note] Plugin 'FEDERATED' is disabled.
130828 20:49:51 InnoDB: The InnoDB memory heap is disabled
130828 20:49:51 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130828 20:49:51 InnoDB: Compressed tables use zlib 1.2.3
130828 20:49:51 InnoDB: Using Linux native AIO
130828 20:50:10 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Re: MySQL падает
После переключения домена с phpcgi - сайт стал работать в 8 раз шустрее, но SQL падает практически моментально.
(Кстати не понятно, почему генерация страницы через phpcgi занимала 8 сек, а через hosting пресет 1.5)
(Кстати не понятно, почему генерация страницы через phpcgi занимала 8 сек, а через hosting пресет 1.5)
Code: Select all
130828 22:29:55 mysqld_safe Number of processes running now: 0
130828 22:29:55 mysqld_safe mysqld restarted
130828 22:29:57 [Note] Plugin 'FEDERATED' is disabled.
130828 22:29:57 InnoDB: The InnoDB memory heap is disabled
130828 22:29:57 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130828 22:29:57 InnoDB: Compressed tables use zlib 1.2.3
130828 22:29:57 InnoDB: Using Linux native AIO
130828 22:29:57 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
130828 22:29:57 InnoDB: Completed initialization of buffer pool
130828 22:29:57 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130828 22:29:57 [ERROR] Plugin 'InnoDB' init function returned error.
130828 22:29:57 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130828 22:29:57 [ERROR] Unknown/unsupported storage engine: InnoDB
130828 22:29:57 [ERROR] Aborting
130828 22:29:57 [Note] /usr/libexec/mysqld: Shutdown complete
130828 22:29:57 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Re: MySQL падает
Размер этого buffer pool
key_buffer x (max_connections x max_user_connections) = buffer pool size
Так получается?
UPD 1.
Попробовал сделать так.
Упал.
UPD 2.
Попробовал сделать так.
Упал.
UPD 3.
Попробовал сделать так.
На странице появилось сообщение "Can't connect to MySQL ...", через 10 сек сам поднялся. Пригрузил чутку сильнее (10 секунд ддоса по F5) - упал безвозвратно.
UPD 4.
По мотивам http://habrahabr.ru/qa/22541
Судя по всему нужно задать innodb_buffer_pool_size в размер страниц х2.
Но вопрос в том, что вообще есть эти страницы и как их считать.
У меня вот так.
387 чего? Байт чтоли.. skid, надеюсь на твою помощь.
UPD 5.
Сейчас сделал так.
mysql> SHOW ENGINE INNODB STATUS\G;
отдает следующее.
По сути никаких изменений. Mysql так же падает и сайт по туже стал работать.
key_buffer x (max_connections x max_user_connections) = buffer pool size
Так получается?
UPD 1.
Попробовал сделать так.
Code: Select all
max_connections=70
max_user_connections=30
...
key_buffer = 1M
myisam_sort_buffer_size = 3M
UPD 2.
Попробовал сделать так.
Code: Select all
max_connections=20
max_user_connections=30
...
key_buffer = 16M
myisam_sort_buffer_size = 32M
UPD 3.
Попробовал сделать так.
Code: Select all
max_connections=20
max_user_connections=30
...
key_buffer = 1M
myisam_sort_buffer_size = 3M
UPD 4.
По мотивам http://habrahabr.ru/qa/22541
Судя по всему нужно задать innodb_buffer_pool_size в размер страниц х2.
Но вопрос в том, что вообще есть эти страницы и как их считать.
У меня вот так.
Code: Select all
Buffer pool size 8192
Free buffers 7804
Database pages 387
UPD 5.
Сейчас сделал так.
Code: Select all
max_connections=70
max_user_connections=30
...
key_buffer = 16M
myisam_sort_buffer_size = 32M
...
innodb_buffer_pool_size=10M
отдает следующее.
Code: Select all
Buffer pool size 639
Free buffers 251
Database pages 387
Re: MySQL падает
Есть подозрение что проблема в настройке Httpd/nginx... Возможно создает очень много запросов?
У меня на аналогичной конфигурации, только с ISP manager - sql не вешается. Очень долго думает после такого стресс теста, но не вешается.
UPD 2.
Поднял тариф до 1GB Ram. При "зажатии" F5 - через секунд 7-10 получаю "Database connection error (2): Could not connect to MySQL." При этом, вот что в htop происходит - http://verbin.pp.ua/screen/Quaded_-_Xsh ... .01.09.png
Собственно отпускаю F5, жду 2 сек и жму снова - сайт есть, sql падать перестал. Это меня видимо рубит по max_user_connections... Так?
UPD 3.
Попробовал поднять max_connections и max_user_connections в 10 раз. Держится дольше, но в итоге умирает и не подымается до service restart.
Скорее всего нужно смотреть в сторону httpd/nginx на кол-во запросов от юзера, дабы не доводить до лимита подключений. Даже если лимит подключений будет 20, mysql - не упадет, но все равно будет сообщение о "Database connection error (2): Could not connect to MySQL.", что уже есть неприятность, так как выводится это всем пользователям (это я проверял).
У меня на аналогичной конфигурации, только с ISP manager - sql не вешается. Очень долго думает после такого стресс теста, но не вешается.
UPD 2.
Поднял тариф до 1GB Ram. При "зажатии" F5 - через секунд 7-10 получаю "Database connection error (2): Could not connect to MySQL." При этом, вот что в htop происходит - http://verbin.pp.ua/screen/Quaded_-_Xsh ... .01.09.png
Собственно отпускаю F5, жду 2 сек и жму снова - сайт есть, sql падать перестал. Это меня видимо рубит по max_user_connections... Так?
UPD 3.
Попробовал поднять max_connections и max_user_connections в 10 раз. Держится дольше, но в итоге умирает и не подымается до service restart.
Скорее всего нужно смотреть в сторону httpd/nginx на кол-во запросов от юзера, дабы не доводить до лимита подключений. Даже если лимит подключений будет 20, mysql - не упадет, но все равно будет сообщение о "Database connection error (2): Could not connect to MySQL.", что уже есть неприятность, так как выводится это всем пользователям (это я проверял).
Last edited by rez0n on Thu Aug 29, 2013 1:05 pm, edited 1 time in total.
Re: MySQL падает
могу бесплатно помочь без проблем, но без доступа к серверу я бы гадать не стал, в лимит какого конкретно буфера он упирается.
Re: MySQL падает
По скриншоту видно, что сервер серьезно нагружен. Показатель LA равен 8.89. Это много.
LoadAverage это комплексное из нескольких показателей. Для подсчета используется количество выполняющихся процессов, количество процессов ожидающих процессороного времени и количество спящих процессов, тех которые ждух ответа системы ввода ввывода. Чаще всего узким горлышком становится система ввода вывода, то есть диск.
В этой ситуации видно, что загружен процессор. В тоже самое время, общее количество процессов небольшое и можно сделать вывод, что 1 конкретный запрос кладет всю систему на лопатки. Почему так происходит сказать сложно. Нужно собрать больше информации. Много вопросов вызывает сайт, точнее его код. Возможно при данных условиях возникает бесконечный цикл?
Попробуйте вернуться к изначальным настройкам MySQL.
Приведите файл /etc/httpd/conf.d/status.conf к следующему виду
Переведите сайт на default шаблон и перезапустите апач или даже весь сервер.
После перезапуска внимательно следите за запросами к апачу, открыв в браузере http://xxx.xxx.xxx.xxx/server-status
Проверьте количество запросов в секунду и посмотрите на сами запросы.
То же самое для MySQL
В системе есть swap раздел? Он используется?
Какая нагрузка
LoadAverage это комплексное из нескольких показателей. Для подсчета используется количество выполняющихся процессов, количество процессов ожидающих процессороного времени и количество спящих процессов, тех которые ждух ответа системы ввода ввывода. Чаще всего узким горлышком становится система ввода вывода, то есть диск.
В этой ситуации видно, что загружен процессор. В тоже самое время, общее количество процессов небольшое и можно сделать вывод, что 1 конкретный запрос кладет всю систему на лопатки. Почему так происходит сказать сложно. Нужно собрать больше информации. Много вопросов вызывает сайт, точнее его код. Возможно при данных условиях возникает бесконечный цикл?
Попробуйте вернуться к изначальным настройкам MySQL.
Прооптимизируйте базы на сервере[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_connections=25
max_user_connections=20
wait_timeout=10
interactive_timeout=50
long_query_time=5
#log-queries-not-using-indexes
#log-slow-queries=/var/log/mysql/log-slow-queries.log
key_buffer = 16M
myisam_sort_buffer_size = 32M
join_buffer_size=1M
read_buffer_size=1M
sort_buffer_size=2M
table_cache=1024
thread_cache_size=286
interactive_timeout=25
connect_timeout=5
max_allowed_packet=1M
max_connect_errors=1000
query_cache_limit=1M
query_cache_size=8M
query_cache_type=1
tmp_table_size=16M
#innodb_use_native_aio = 0
innodb_file_per_table
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Code: Select all
mysqlcheck -Ao
Приведите файл /etc/httpd/conf.d/status.conf к следующему виду
Code: Select all
Listen 127.0.0.1:8081
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from all
</Location>
После перезапуска внимательно следите за запросами к апачу, открыв в браузере http://xxx.xxx.xxx.xxx/server-status
Проверьте количество запросов в секунду и посмотрите на сами запросы.
То же самое для MySQL
Code: Select all
mysqladmin status
mysqladmin processlist
Code: Select all
free -m
Code: Select all
top -b |head -n5
Re: MySQL падает
Нагрузка это да, так как запросов очень много.
Вот конкретно по этому серверу.
Я проверил на других серверах с vesta (2G RAM и выше) - тоже падает, F5 держать нужно долго, но в итоге падает.
С ISPManager конфигурацией - даже на дохленьком сервере, еле еле, очень медленно - но вывозит и не падает.
Вот конкретно по этому серверу.
Code: Select all
[root@quaded ~]# free -m
total used free shared buffers cached
Mem: 996 517 479 0 17 202
-/+ buffers/cache: 298 698
Swap: 0 0 0
[root@quaded ~]# top -b |head -n5
top - 17:03:23 up 3:12, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.8%us, 1.8%sy, 0.0%ni, 91.5%id, 0.3%wa, 0.3%hi, 0.2%si, 0.0%st
Mem: 1020592k total, 530360k used, 490232k free, 17796k buffers
Swap: 0k total, 0k used, 0k free, 207160k cached
[root@quaded ~]#
С ISPManager конфигурацией - даже на дохленьком сервере, еле еле, очень медленно - но вывозит и не падает.