Połączenie należy ponownie wykorzystać z następujących powodów:
- Otwieranie i zamykanie połączeń DB przy każdym żądaniu API jest powolne.
- Trudno jest skalowalny. Zakładając, że wysyłasz kilka żądań API jednocześnie na użytkownika, szybko osiągniesz ten sam limit połączeń, gdy aplikacja uzyska więcej użytkowników.
Jak zarządzać połączeniami MongoDB w aplikacji internetowej Node.js?
Domyślny MongoClient
konfiguracja ma maksymalną liczbę połączeń na pulę (poolSize
) ustaw na 5
. Nie powinieneś więc widzieć więcej niż ~5 połączeń w MongoDB Atlas, jeśli masz uruchomioną tylko jedną instancję aplikacji i sprawdzasz, czy klient jest już podłączony, tak jak Ty.
if (!client.isConnected()) {
await client.connect();
}
Zauważ, że Next.js "uruchamia się ponownie" przy każdym żądaniu w trybie deweloperskim (next dev
) i wygląda na to, że ma to wpływ na MongoClient
cache i tworzy wiele połączeń. Jednak w trybie produkcyjnym nie powinieneś doświadczać tego problemu.