Co się dzieje, gdy połączenia z MongoDB nie są zamknięte?
Mam następujący skrypt PHP, który w zasadzie łączy się z MongoDB, zapisuje dokument, a następnie zamyka połączenie 19000 razy:
<code><?php for($i=0; $i < 19000; $i++) { $con = new Mongo("mongodb://localhost:27017"); $db = $con->selectDB('test'); $col = $db->selectCollection('close_wait_test'); $col->insert(array('Test' => 'Value1')); $con->close(); } ?> </code>
Uruchomienie tego skryptu działa dobrze, ale jeśli uruchomię skrypt kilka sekund później, otrzymam wyjątek „Nie można przypisać żądanego adresu”, co jest zrozumiałe, ponieważ w systemie serwera prawdopodobnie zabrakło portów.
Jeśli jednak usunę $ con> close (); Mogę uruchamiać ten skrypt w kółko bez zauważalnego obciążenia bazy danych. Zakładam, że jest tak, ponieważ połączenie z bazą danych jest trwałe i ponownie wykorzystuje to samo połączenie początkowe w skrypcie.
Chciałbym wiedzieć, czy 20k + różni użytkownicy uruchomili 1 pętlę tego skryptu w tym samym czasie, co stałoby się z bazą danych? na przykład czy dostępne połączenia po prostu się wyczerpią, ponieważ każda potrzeba użytkownika tworzy jedno połączenie z bazą danych? lub czy wszyscy ci użytkownicy będą korzystać z tego samego początkowego połączenia utworzonego przez pierwszego użytkownika?