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
У меня так и есть.
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 добавляем строку

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