MySQL - too many connections

П
На сайте с 13.03.2007
Offline
9
1299

Коллеги, не подскажет ли кто, как отследить откуда были конекшены к серверу при возникновении сабжа?

В логах php увидел что иногда бывают такие ошибки, max_connections = 100, нормальное число коннекций - до десятка, плюс репликация, не могу понять, то ли кто-то сервер бомбит, то ли у меня где-то ошибка.

Смотрел bin-log ничего необычного не заметил, вести лог запросов не хочется, так как боюсь сервер будет грузить, в err логе тоже ничего нет. Думаю написать скриптик, который будет делать каждую минуту mysqladmin processlist > log.txt но это может не помочь, так как проблема держится несклько секунд и возникает раз в несколько суток.

И еще, не подскажете - если порт открыт для всех (имеется ввиду средства мускула, а не фаервола) и кто-то пытается коннектится (с неправильным паролем) это ведь будет считаться как коннекция? А если порт открыт не для всех, мускул же все равно проверяет по таблице можно ли пускать, т.е. это тоже коннекция?

Zaqwr
На сайте с 08.08.2007
Offline
111
#1

Поручик, 3306 или какой там у вас откройте только для localhost, а лучше только сокет юзать, но никак не на весь мир.

Администрирование, Linux, Cisco, Juniper
santa_claus_rpm
На сайте с 27.10.2007
Offline
9
#2
Поручик:

И еще, не подскажете - если порт открыт для всех (имеется ввиду средства мускула, а не фаервола) и кто-то пытается коннектится (с неправильным паролем) это ведь будет считаться как коннекция?

В терминах tcp/ip да, однозначно, а с т.з. mysql точно не скажу, но что ресурсы сервера тратятся на это - однозначно.

Поручик:
А если порт открыт не для всех, мускул же все равно проверяет по таблице можно ли пускать,

Конечно. И чем больше ограничений, тем ниже производительность.

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

SysAdmin Online - помощь в настройке Linux серверов (http://sysadminonline.ru)
П
На сайте с 13.03.2007
Offline
9
#3
Zaqwr:
Поручик, 3306 или какой там у вас откройте только для localhost, а лучше только сокет юзать, но никак не на весь мир.

Да в том-то и дело что должны пользователи коннектится из мира :(

П
На сайте с 13.03.2007
Offline
9
#4
santa_claus_rpm:

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

Если с серверами для репликации еще более-менее ясно, то с пользователями сложнее, они не всегда на одном IP, а задавать в качестве хоста домен не хочется, боюсь тормоза могут начаться при резолве.

Все же хочется определиться кто и откуда коннектится, вполне возможно это скрипты на которые слишком возрос трафик и которые не оптимально написаны. Наверно у мускула своих средств для этого нету. Придется написать скриптик, который будет делать mysqladmin proc раз в несколько секунд и если строк больше 10 заносить в лог.

S
На сайте с 15.01.2008
Offline
34
#5

Как вариант если сервер (или вдс) Ваши то создайте (или отредактирйте) файл /etc/my.cnf и добавьте строки:


[mysql]
set-variable = connect_timeout=2
set-variable = max_connections = 500

connect_timeout - поставьтекак можно меньше ,и тогда забудите о висящих соединениях :)

Подробнее о файле конфигурации можно почитать тут:http://phpclub.ru/mysql/doc/option-files.html (для mysql 4.X) и тут http://linux-admin.net.ru/mysqloff/Replication_Options.html

Качественный хостинг Unlimits Telecom (http://www.unlimits.ru) (ООО "БизнесТелеКом"). Официальный Twitter канал (http://twitter.com/untelecom). Ознакомиться с нашими услугами можно в этом (/ru/forum/478822) топике.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий