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

MySQL: активность невысока, но тысячи сетевых подключений остаются в TIME_WAIT "

Мы используем MySQL 5.1.33 на FreeBSD 7.2-RELEASE.

Это сервер базы данных разработки, подключенный к веб-серверу разработки, на котором запущен Серебряная полоса и PHP 5.3.

Сегодня утром веб-сервер разработки жаловался, что не может подключиться к серверу базы данных. Ошибка PHP: «Не удается подключиться к серверу MySQL на 'host.example.gov'».

Мы обнаружили, что на сервере базы данных есть тысячи открытых файлов, что также необычно, учитывая, что этот сервер в основном простаивает.

# lsof |grep /var/db/mysql/DATABASE  |wc -l
5135

Есть также тысячи подключений в состоянии TIME_WAIT, что необычно. Я ожидаю, что эти соединения TIME_WAIT истекут по тайм-ауту, но они не завершились за последние 20 минут.

# netstat -an | grep 3306 | grep -c TIME_WAIT 
2650

На сервере базы данных не происходит большой активности:

# mysql -e "show full processlist;"
+------+------+-----------+------+---------+------+-------+-----------------------+
| Id   | User | Host      | db   | Command | Time | State | Info                  |
+------+------+-----------+------+---------+------+-------+-----------------------+
| 2489 | root | localhost | NULL | Query   |    0 | NULL  | show full processlist | 
+------+------+-----------+------+---------+------+-------+-----------------------+

Мой вопрос: как я могу узнать из MySQL, что хранится в этих файлах? Может быть, открытые файлы - отвлекающий маневр.

Оказывается, эта проблема была вызвана неисправным брандмауэром localhost. Клиенты mysql могли подключиться изначально (или установить некоторые подключения), но последующие пакеты игнорировались.

Я все еще пытаюсь разобраться с открытыми файлами, но эта проблема исчезла.