Mamy kilka systemów produkcyjnych, które zostały niedawno przekształcone w maszyny wirtualne. Istnieje nasza aplikacja, która często uzyskuje dostęp do bazy danych MySQL, i dla każdego zapytania tworzy połączenie, zapytania i rozłącza to połączenie.
To nie jest odpowiedni sposób na zapytanie (wiem), ale mamy ograniczenia, których nie możemy obejść. W każdym razie problem jest taki: gdy maszyna była hostem fizycznym, program działał dobrze. Po konwersji na maszynę wirtualną zauważyliśmy sporadyczne problemy z połączeniem z bazą danych. W pewnym momencie było ponad 24000 połączeń gniazd w TIME_WAIT (na hoście fizycznym najwięcej widziałem 17000 - nie jest dobrze, ale nie powoduje problemów).
Chciałbym, aby te połączenia były ponownie używane, abyśmy nie widzieli tego problemu z połączeniem, a więc:
Pytania:
Czy można ustawić wartość tcp_tw_reuse na 1? Jakie są oczywiste niebezpieczeństwa? Czy jest jakiś powód, dla którego nigdy nie powinienem tego robić?
Ponadto, czy jest jakiś inny sposób, aby uzyskać system (RHEL / CentOS), aby uniemożliwić tak wielu połączeniom przejście do TIME_WAIT lub sprawienie, aby były ponownie wykorzystywane?
Co wreszcie zrobi zmiana tcp_tw_recycle i czy to mi pomoże?
Z góry dzięki!