Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Сервер баз данных
  • Search

MySQL падает

Вопросы по работе Сервера баз данных
MySQL, PostgreSQL, MariaDB, Percona Server, phpMyAdmin, phpPgAdmin
Post Reply
  • Print view
Advanced search
229 posts
  • Page 1 of 23
    • Jump to page:
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 23
  • Next
Avanege
Posts: 6
Joined: Wed Aug 21, 2013 4:54 am

MySQL падает
  • Quote

Post by Avanege » Mon Aug 26, 2013 7:30 am

Привет ребята, подскажите в чем проблема.
У меня стоит 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
Top

skid
VestaCP Team
Posts: 1476
Joined: Wed Apr 06, 2011 11:12 pm

Re: MySQL падает
  • Quote

Post by skid » Mon Aug 26, 2013 8:29 am

Причина падений видна в строке
Fatal error: cannot allocate memory for the buffer pool
Серверу нехватает оперативной памяти для работы. Попробуйте уменишить до 20 ол-во max_connections в конфигурационном файле /etc/my.cnf
Top

Avanege
Posts: 6
Joined: Wed Aug 21, 2013 4:54 am

Re: MySQL падает
  • Quote

Post by Avanege » Mon Aug 26, 2013 2:04 pm

skid wrote:Причина падений видна в строке
Fatal error: cannot allocate memory for the buffer pool
Серверу нехватает оперативной памяти для работы. Попробуйте уменишить до 20 ол-во max_connections в конфигурационном файле /etc/my.cnf
Очень странно, сервер поставил на чистый CentOs с 512 оперативки - DigitalOcean
Top

rez0n
Posts: 149
Joined: Fri Jan 25, 2013 8:04 am
Contact:
Contact rez0n
Website

Re: MySQL падает
  • Quote

Post by rez0n » Wed Aug 28, 2013 6:11 pm

У меня сейчас похожая ситуация. Тоже DigitalOcean 512.
Зажимаю на 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
Что есть собственно ничего... Не вижу конкретной проблемы.
Top

rez0n
Posts: 149
Joined: Fri Jan 25, 2013 8:04 am
Contact:
Contact rez0n
Website

Re: MySQL падает
  • Quote

Post by rez0n » Wed Aug 28, 2013 7:36 pm

После переключения домена с phpcgi - сайт стал работать в 8 раз шустрее, но SQL падает практически моментально.
(Кстати не понятно, почему генерация страницы через 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
Top

rez0n
Posts: 149
Joined: Fri Jan 25, 2013 8:04 am
Contact:
Contact rez0n
Website

Re: MySQL падает
  • Quote

Post by rez0n » Wed Aug 28, 2013 7:44 pm

Размер этого buffer pool
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
На странице появилось сообщение "Can't connect to MySQL ...", через 10 сек сам поднялся. Пригрузил чутку сильнее (10 секунд ддоса по F5) - упал безвозвратно.

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
387 чего? Байт чтоли.. skid, надеюсь на твою помощь.

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
mysql> SHOW ENGINE INNODB STATUS\G;
отдает следующее.

Code: Select all

Buffer pool size   639
Free buffers       251
Database pages     387
По сути никаких изменений. Mysql так же падает и сайт по туже стал работать.
Top

rez0n
Posts: 149
Joined: Fri Jan 25, 2013 8:04 am
Contact:
Contact rez0n
Website

Re: MySQL падает
  • Quote

Post by rez0n » Thu Aug 29, 2013 10:28 am

Есть подозрение что проблема в настройке 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.", что уже есть неприятность, так как выводится это всем пользователям (это я проверял).
Last edited by rez0n on Thu Aug 29, 2013 1:05 pm, edited 1 time in total.
Top

vitroot
Posts: 22
Joined: Tue Aug 06, 2013 8:57 am
Contact:
Contact vitroot
Website

Re: MySQL падает
  • Quote

Post by vitroot » Thu Aug 29, 2013 11:53 am

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

skid
VestaCP Team
Posts: 1476
Joined: Wed Apr 06, 2011 11:12 pm

Re: MySQL падает
  • Quote

Post by skid » Thu Aug 29, 2013 1:25 pm

По скриншоту видно, что сервер серьезно нагружен. Показатель LA равен 8.89. Это много.

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>
Переведите сайт на default шаблон и перезапустите апач или даже весь сервер.

После перезапуска внимательно следите за запросами к апачу, открыв в браузере http://xxx.xxx.xxx.xxx/server-status
Проверьте количество запросов в секунду и посмотрите на сами запросы.

То же самое для MySQL

Code: Select all

mysqladmin status
mysqladmin processlist
В системе есть swap раздел? Он используется?

Code: Select all

free -m
Какая нагрузка

Code: Select all

top -b |head -n5
Top

rez0n
Posts: 149
Joined: Fri Jan 25, 2013 8:04 am
Contact:
Contact rez0n
Website

Re: MySQL падает
  • Quote

Post by rez0n » Thu Aug 29, 2013 2:05 pm

Нагрузка это да, так как запросов очень много.

Вот конкретно по этому серверу.

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 ~]# 
Я проверил на других серверах с vesta (2G RAM и выше) - тоже падает, F5 держать нужно долго, но в итоге падает.
С ISPManager конфигурацией - даже на дохленьком сервере, еле еле, очень медленно - но вывозит и не падает.
Top


Post Reply
  • Print view

229 posts
  • Page 1 of 23
    • Jump to page:
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 23
  • Next

Return to “Сервер баз данных”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password