Page 2 of 23

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:09 pm
by rez0n
max_connections=25
max_user_connections=20

Исходя из тестов - этот параметр нужно подымать как можно выше (или вообще убирать и не ограничивать), так как по его достижении - MySQL блокирует все подключения на некоторое время.
Я думаю ограничение на кол-во подключений от каждого пользователя нужно разрулить через nginx

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:15 pm
by skid
От нагрузки падает mysql или apache или весь сервер?

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:19 pm
by rez0n
Конкретно mysql.
2 варианта для примера.

1. max-connections - 20 = mysql просто заблочит подключения, через 5 секунд вернется в штатный режим.
2. max-connections - 200 = mysql падает.

Все остальное, в это время - работает отлично.

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:32 pm
by skid
Если при 200 соединениях mysql с ошибкой "cannot allocate memory for the buffer pool", значит в этот момент на сервере заканчивается свободная оперативная память.

Для того чтобы сервер не пытался съесть больше чем это физически возможно, можно ограничить кол-во запросов параметром max-connections.

На сколько я знаю ISP не изменяет настройки mysql сервера по умолочанию, возможно это в данной сиутации

Code: Select all

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

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

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:34 pm
by skid
Так, же можно вопользоваться советом по уменьшению innodb пула
[mysqld]
innodb_buffer_pool_size = 10M

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:35 pm
by rez0n
Я подозреваю что там nginx не дает погрузнуть sql серверу.

Могу выложить конфиг mysql оттуда.

UPD. Мне всего то нужно сделать так, чтобы один единственный пользователь не смог посредством случайно (или не случайно) зажатого F5 - положить SQL или вывести всем сообщение "No connection to SQL" пускай даже кратковременно.

Re: MySQL падает

Posted: Thu Aug 29, 2013 2:45 pm
by rez0n
skid wrote:Так, же можно вопользоваться советом по уменьшению innodb пула
[mysqld]
innodb_buffer_pool_size = 10M
У меня так и есть.
PS. База в MyISAM

Re: MySQL падает

Posted: Thu Aug 29, 2013 3:15 pm
by skid
В таком случае можно ограничить кол-во запросов с одного ip. Добавьте в /etc/nginx/nginx.conf секцию

Code: Select all

    # Limit connections
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn perip 4;
и перезапустите nginx

Re: MySQL падает

Posted: Thu Aug 29, 2013 3:37 pm
by rez0n
Не то.
1. 2х секундное зажатие F5 - can't connect to MySQL. Сработал max_connections
2. Закомментировал в my.cnf - max_connections = пришлось жать дольше, секунд 7-10. Упал. http://verbin.pp.ua/screen/Quaded_-_Xsh ... .36.44.png

В процессе этого действа создается уйма "воркеров" httpd. Может быть в этом дело?
UPD.
Попробовал так.

Code: Select all

KeepAlive On
MaxKeepAliveRequests 20
KeepAliveTimeout 10
Не помогло.

UPD 2.
Подсунул ему конфиг от MySQL сервера который не падает - не помогло.

Re: MySQL падает

Posted: Thu Aug 29, 2013 7:24 pm
by rez0n
Привет снова. Нашел частичное решение данного трабла.
Нужен своп! :)

Code: Select all

dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
В файл /etc/fstab добавляем строку

Code: Select all

/swapfile swap swap defaults 0 0
Image
Теперь все это дело уходит в swap и mysql не вешается. Иногда выдает 500ю шибку правда.

Но все же, может есть решения более изящные? Может есть еще у кого то мысли?
Так же есть смежный вопрос, вот пришел посетитель на сайт, зажал тот же F5 и все, пока он не отпустит - сервер будет висеть в обработке его запросов. Каким образом можно это пресечь?