У нас есть несколько производственных систем, которые недавно были преобразованы в виртуальные машины. Существует наше приложение, которое часто обращается к базе данных MySQL, и для каждого запроса оно создает соединение, запрашивает и отключает это соединение.
Это не подходящий способ запроса (я знаю), но у нас есть ограничения, которые мы не можем обойти. В любом случае, проблема заключается в следующем: хотя машина была физическим хостом, программа работала нормально. После преобразования в виртуальную машину мы заметили периодические проблемы с подключением к базе данных. В какой-то момент было 24000+ сокетных подключений в TIME_WAIT (на физическом хосте максимум, что я видел, было 17000 - не хорошо, но не вызывало проблем).
Я хотел бы, чтобы эти соединения использовались повторно, чтобы мы не увидели проблему с подключением, и так:
Вопросов:
Можно ли установить значение tcp_tw_reuse равным 1? Каковы очевидные опасности? Есть ли причина, по которой я никогда не должен это делать?
Кроме того, есть ли другой способ заставить систему (RHEL / CentOS) предотвратить попадание такого количества соединений в TIME_WAIT или получить их для повторного использования?
Наконец, что будет делать изменение tcp_tw_recycle, и поможет ли это мне?
Заранее спасибо!