Pracuję na aplikacji wielowątkowej (serwer), w której kiedyś obsługiwałem 2000 klientów i uruchamiam osobne połączenie bazy danych MySQL w każdym wątku. Dlatego włączyłem funkcję łączenia połączeń. Przeszukałem wiele bloków, które po użyciu połączeń powinniśmy je zamknąć, a następnie powrócą do puli i będą używane przez inny wątek. z drugiej strony wiemy, że tworzenie połączenia jest procesem czasochłonnym. Moje pytanie brzmi: dlaczego powinniśmy zamknąć połączenie w puli połączeń. a co jest lepsze, czy połączenie powinno otwierać je lub zamykać?C# powinienem pozostawić otwarte połączenie w łączeniu puli
Odpowiedz
wiemy, że zrobienie połączenie jest czasochłonny proces
Poprawnie - to dlaczego mamy pula połączeń. Utrzymują połączenia, więc nie tworzysz nowych.
dlaczego powinniśmy zamknąć połączenie w związku łączenie
Więc są one zwrócone do puli być używany w innych wątkach.
Połączenia są drogimi zasobami, więc chcesz je otworzyć, używać i zamykać tak szybko, jak to możliwe, aby powróciły do puli i były dostępne dla innych wątków.
Po "Zamknięciu" połączenia, które jest połączone, Mówisz, że skończyłeś połączenie i pula może go użyć ponownie.
Dzwonienie Zamknij nie powoduje fizycznego zerwania połączenia. Pula ma swoją własną logikę, aby określić, kiedy połączenia są fizycznie zamknięte.
Dzięki Richardowi myślałem, że połączenie jest fizycznie zamknięte po ich zamknięciu. ale to nie tak. Teraz mam jasność co do łączenia połączeń :) –
- 1. MongoDB problem otwarte połączenie
- 2. programowo sprawdzające otwarte połączenie w JDBC
- 3. Czy powinienem zamknąć połączenie pochodzące ze źródła danych?
- 4. Kiedy połączenie jest zwracane do puli połączeń w aplikacji JPA?
- 5. Jak pozostawić zewnętrzny Dołącz dwa DataTables w języku C#?
- 6. jaka jest najlepsza praktyka przy łączeniu Hive Połączenia JDBC
- 7. Co powinienem najpierw zamknąć, PreparedStatement lub połączenie?
- 8. C# niższy priorytet wątku w puli wątków
- 9. Puli wątków "Naprawiono"/"Równoważenie obciążenia" C#?
- 10. libcurl - Zachowaj połączenie "otwarte", aby przesłać wiele plików (FTP)
- 11. Czy xmlhttprequest utrzymuje połączenie otwarte po przetworzeniu żądania?
- 12. CPU MySQL wzrasta, gdy mam połączenie Sleeping, które pozostaje otwarte
- 13. Połączenie pooling w slick?
- 14. spróbuj zrozumieć pojęcia mysql: session v.s. połączenie
- 15. Słabe połączenie funkcji C
- 16. Usuń połączenie lub Zamknij połączenie
- 17. Jak zamknąć połączenie z bazą danych otwarte przez implementację IBackingMap w ramach topologii Storm Trident?
- 18. C otrzymuję wszystkie otwarte deskryptory plików
- 19. Połączenie połączeń a połączenie trwałe mysqli
- 20. Dziwne zachowanie przy łączeniu z wieloma warunkami
- 21. Math - Divide i pozostawić reszta
- 22. Zakleszczenie w klasie puli obiektów
- 23. Pozostawić tylko dodatnie liczby dziesiętne
- 24. . Pliki .pl otwarte w Notatniku
- 25. C# Rejestrowanie. Co powinienem użyć?
- 26. Jak powinienem zadeklarować ciągi w strukturach C?
- 27. Najlepsza praktyka: Pozostaw połączenie TCP/IP otwarte lub zamknij po każdym przesłaniu?
- 28. Jak wyłączyć/włączyć połączenie sieciowe w C#
- 29. Nawiąż połączenie P2P w języku C#
- 30. Połączenie szeregowe (RS-232) w C++
Dzięki za odpowiedź Oded. –