Page 6 of 23

Re: MySQL падает

Posted: Tue Sep 10, 2013 11:01 am
by margent
Сменил на ваш конфиг, бд легла, пока просто закоментировал с начальным конфигом, все работает.

Re: MySQL падает

Posted: Sun Sep 15, 2013 9:46 pm
by Visioner
Победил ошибку c Mysql при зажатом F5

При частом рефреше страницы nginx все запросы передает Apache, а апач на каждый новый запрос создает новый процесс, так как работает в режиме Prefork, соответственно каждый новый процесс съедает часть памяти, но кроме того, эти процессы начинают выполняться, в результате количество запросов к Mysql превышает число max_user_connections.

Для того, чтобы запретить nginx передавать в апач множественные запросы от отдного пользователя нужно файле /etc/nginx/nginx.conf в секции http прописать

limit_req_zone $binary_remote_addr zone=dyn:10m rate=10r/s;

Эта директива ограничивает количество запросов от одного клиента до 10 запросов в секунду

И в файле /home/username/conf/web/nginx.conf
во-первых выносим обработку статики отдельно:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|css|zip|tgz|gz|rar|bz2|exe|pdf|doc|xls|ppt|txt|odt|ods|odp|odf|tar|bmp|rtf|js|mp3|avi|mpeg|flv|html|htm)$ {

root /home/UserName/web/site.com/public_html;
access_log /var/log/httpd/domains/site.com.log combined;
access_log /var/log/httpd/domains/site.com.bytes bytes;
expires max;
try_files $uri @fallback;
}

А в данных передающихся апачу дописываем вызов директивы limit_req

location / {
limit_req zone=dyn burst=10;
proxy_pass http://ip:8080;
}

это позволит ограничить до 10 одновременных запросов к апачу от одного клиента, при привышении nginx будет отдавать для этого клиента ошибку 503, работа других клиентов нарушена не будет.
При желании 503 ошибку можно завернуть так, что клиент ее не увидит.

Тестировалось у DigitalOcean на сервере с 512Mb.

Re: MySQL падает

Posted: Mon Nov 11, 2013 3:39 pm
by madgentos
Спасибо тебе мил человек. Я твое дело запихнул в тпл все сайты так прут))) Красота)

Re: MySQL падает

Posted: Sat Dec 14, 2013 9:20 am
by ifelse
Спасибо Visioner за инструкцию.
Дело реально в Vest'е, я работал с кучей VPS'ок, в первый раз решил попробовать CentOS и данную панельку- начались проблемы =/

Re: MySQL падает

Posted: Sat Dec 14, 2013 12:05 pm
by ifelse
Всё равно упал через пару часов :(

Перед падением /var/log/mysqld.log:

Code: Select all

131214 11:24:31 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(135987200 bytes) failed; errno 12
131214 11:24:31 InnoDB: Completed initialization of buffer pool
131214 11:24:31 InnoDB: Fatal error: cannot allocate memory for the buffer pool
131214 11:24:31 [ERROR] Plugin 'InnoDB' init function returned error.
131214 11:24:31 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
131214 11:24:31 [ERROR] Unknown/unsupported storage engine: InnoDB
131214 11:24:31 [ERROR] Aborting
Оперативки 1gb. Добавил swap на 500мб по этой инструкции, посмотрим что будет.

Re: MySQL падает

Posted: Mon Jan 06, 2014 8:09 am
by RoDGeR
Сервер падает каждый день и только ночью, перед падением лог:

Code: Select all

140106  9:54:30 [Note] /usr/libexec/mysqld: Normal shutdown

140106  9:54:30 [Note] Event Scheduler: Purging the queue. 0 events
140106  9:54:30  InnoDB: Starting shutdown...
140106  9:54:32  InnoDB: Shutdown completed; log sequence number 318544815
140106  9:54:32 [Note] /usr/libexec/mysqld: Shutdown complete

140106 09:54:32 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
140106 09:54:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140106  9:54:33 [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.
140106  9:54:33 [Note] Plugin 'FEDERATED' is disabled.
140106  9:54:33 InnoDB: The InnoDB memory heap is disabled
140106  9:54:33 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140106  9:54:33 InnoDB: Compressed tables use zlib 1.2.3
140106  9:54:33 InnoDB: Using Linux native AIO
140106  9:54:33 InnoDB: Initializing buffer pool, size = 128.0M
140106  9:54:33 InnoDB: Completed initialization of buffer pool
140106  9:54:33 InnoDB: highest supported file format is Barracuda.
140106  9:54:33  InnoDB: Waiting for the background threads to start
140106  9:54:34 InnoDB: 5.5.35 started; log sequence number 318544815
140106  9:54:34 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
140106  9:54:34 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
140106  9:54:34 [Note] Server socket created on IP: '0.0.0.0'.
140106  9:54:34 [Note] Event Scheduler: Loaded 0 events
140106  9:54:34 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.35'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL) by Remi
140106  9:54:40 [Warning] IP address '109.251.115.158' has been resolved to the host name '109.251.115.158.freenet.com.ua', which resembles IPv4-address itself.
От не больших ддос атак есть защита, от F5 помогает :)
http://servachoc.net/anti_ddos.7z

Re: MySQL падает

Posted: Fri Jan 10, 2014 1:50 pm
by demian
ifelse wrote:Всё равно упал через пару часов :(

Перед падением /var/log/mysqld.log:

Code: Select all

131214 11:24:31 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(135987200 bytes) failed; errno 12
131214 11:24:31 InnoDB: Completed initialization of buffer pool
131214 11:24:31 InnoDB: Fatal error: cannot allocate memory for the buffer pool
131214 11:24:31 [ERROR] Plugin 'InnoDB' init function returned error.
131214 11:24:31 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
131214 11:24:31 [ERROR] Unknown/unsupported storage engine: InnoDB
131214 11:24:31 [ERROR] Aborting
Оперативки 1gb. Добавил swap на 500мб по этой инструкции, посмотрим что будет.
131214 11:24:31 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(135987200 bytes) failed; errno 12
131214 11:24:31 InnoDB: Completed initialization of buffer pool
131214 11:24:31 InnoDB: Fatal error: cannot allocate memory for the buffer pool

так то по русски написано... в чем проблема...

если вы не используете для своих баз данных InnoDB уменьшите размер буферного пула для данного движка.
innodb_buffer_pool_size = 8M

совсем отключать движок InnoDB нельзя... т.к. Roundcube использует его для своих таблиц
RoDGeR wrote:Сервер падает каждый день и только ночью, перед падением лог:

140106 9:54:33 [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.
исправьте в конфиге key_buffer --> key_buffer_size
опция key_buffer не работает с версии 5.5.10

Re: MySQL падает

Posted: Mon Jan 20, 2014 6:37 am
by heihachi88
Visioner wrote:Победил ошибку c Mysql при зажатом F5

При частом рефреше страницы nginx все запросы передает Apache, а апач на каждый новый запрос создает новый процесс, так как работает в режиме Prefork, соответственно каждый новый процесс съедает часть памяти, но кроме того, эти процессы начинают выполняться, в результате количество запросов к Mysql превышает число max_user_connections.

Для того, чтобы запретить nginx передавать в апач множественные запросы от отдного пользователя нужно файле /etc/nginx/nginx.conf в секции http прописать

limit_req_zone $binary_remote_addr zone=dyn:10m rate=10r/s;

Эта директива ограничивает количество запросов от одного клиента до 10 запросов в секунду

И в файле /home/username/conf/web/nginx.conf
во-первых выносим обработку статики отдельно:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|css|zip|tgz|gz|rar|bz2|exe|pdf|doc|xls|ppt|txt|odt|ods|odp|odf|tar|bmp|rtf|js|mp3|avi|mpeg|flv|html|htm)$ {

root /home/UserName/web/site.com/public_html;
access_log /var/log/httpd/domains/site.com.log combined;
access_log /var/log/httpd/domains/site.com.bytes bytes;
expires max;
try_files $uri @fallback;
}

А в данных передающихся апачу дописываем вызов директивы limit_req

location / {
limit_req zone=dyn burst=10;
proxy_pass http://ip:8080;
}

это позволит ограничить до 10 одновременных запросов к апачу от одного клиента, при привышении nginx будет отдавать для этого клиента ошибку 503, работа других клиентов нарушена не будет.
При желании 503 ошибку можно завернуть так, что клиент ее не увидит.

Тестировалось у DigitalOcean на сервере с 512Mb.
Вам это помогло?

Re: MySQL падает

Posted: Wed Jan 22, 2014 7:19 am
by gorodsb
А в данных передающихся апачу дописываем вызов директивы limit_req
- простите за тупой вопрос - а это где?

Re: MySQL падает

Posted: Sat Jan 25, 2014 9:05 pm
by Aleksey
gorodsb wrote:
А в данных передающихся апачу дописываем вызов директивы limit_req
- простите за тупой вопрос - а это где?
Присоединяюсь к вопросу:)