У нас є кілька виробничих систем, які нещодавно були перетворені на віртуальні машини. Існує наша програма, яка часто звертається до бази даних MySQL, і для кожного запиту вона створює з'єднання, запитує та відключає це з'єднання.
Це не відповідний спосіб запиту (я знаю), але у нас є обмеження, які ми, здається, не можемо обійти. У всякому разі, проблема в цьому: поки машина була фізичним вузлом, програма працювала чудово. Перетворившись у віртуальну машину, ми помітили періодичні проблеми з підключенням до бази даних. Одного разу в TIME_WAIT було підключено 24000+ сокетів (на фізичному хості найбільше я бачив - 17000 - це не добре, але не створювало проблем).
Я хотів би, щоб ці з'єднання були використані повторно, щоб ми не бачили проблеми з підключенням, і так:
Запитання:
Чи нормально встановити значення tcp_tw_reuse в 1? Які очевидні небезпеки? Чи є якась причина, щоб я ніколи цього не робив?
Крім того, чи є інший спосіб отримати систему (RHEL / CentOS), щоб запобігти переходу стільки з’єднань у TIME_WAIT або змусити їх повторно використовувати?
Нарешті, що може змінити tcp_tw_recycle, і чи допоможе це мені?
Заздалегідь дякую!