Назад | Перейти на главную страницу

Очень большое количество открытых подключений из Интернета к серверу БД

Я запускаю 2 сервера, 1 веб (nginx / php), 1 базу данных (mysql).

Nginx имеет около 1500 активных процессов в секунду, а статус mysql показывает в среднем около 15 текущих подключений опций.

Сегодня я начал бегать: netstat -npt | awk '{print $5}' | grep -v "ffff\|127\.0\.0\.1" | awk -F ':' '{print $1}' | sort -n | uniq -c | sort -n

Это показало, что было более 7000 активных подключений с моего веб-сервера к IP-адресу моего сервера базы данных. Это кажется какой-то крайностью. Я не использую постоянные соединения в PHP для подключения к Mysql.

Есть идеи, почему так много открытых подключений?

Хотя это становится немного stackoverflow'y, вот что:

Вероятно, потому что вы не закрываете свои соединения в коде. Если да, я бы порекомендовал вам перейти на mysql_pconnect(), или просто добавьте mysql_close() до конца всех запрошенных php-страниц

Если все подключения к серверу mysql находятся в состоянии: TIME_WAIT, попробуйте понизить wait_timeout в вашей конфигурации mysqld. Проверьте Документация MySQL для получения дополнительной информации

ОБНОВИТЬ: Как указал ChristopherEvans, вы можете подключиться напрямую к сокету mysql вместо использования конечных точек IP, чтобы избежать исчерпания неиспользуемых портов на локальном интерфейсе.

Рассмотрение пула соединений - таким образом, каждое соединение не будет нуждаться в собственном процессе.

http://php.net/manual/en/mysqlnd-ms.pooling.php

Не уверен, что это сработает, поскольку вы не используете постоянные соединения.