sql >> Databasteknik >  >> NoSQL >> MongoDB

Timeout för anslutning till MongoDb på Azure VM

Efter lite letande här mina funderingar:

  • Det är vanligtvis en god praxis att implementera någon form av försökslogik på varje resurs som du kommer åt på Azure (databas, virtuell dator, ...). För MongoDb finns det en partiell implementering så du bör potentiellt skriva din egen. Se även det här numret och detta .
  • Om möjligt bör alla resurser på Azure vara i samma virtuella Azure-nätverk (på detta sätt görs alla anslutningar med Azure Private Ip istället för Public IP. Detta är också användbart av säkerhetsskäl eftersom du inte behöver öppna slutpunkten till allmänheten.
  • När du distribuerar MongoDb på Azure, försök att följa de officiella MongoDb-riktlinjerna .
  • I det här specifika fallet bör du ställa in net.ipv4.tcp_keepalive_time till ett värde lägre än tcp keep alive av Azure, som som standard är 240 sekunder. På detta sätt stängs anslutningen och MongoDb-drivrutinen kan avlyssna detta tillstånd och öppna en ny anslutning. Om anslutningen stängs av Azure kan inte drivrutinen fånga upp den. Om du vill ändra den här inställningen på Azure (rekommenderas inte) kan du hitta den i den offentliga IP-konfigurationen.

I min utvecklingsmiljö har jag ställt in net.ipv4.tcp_keepalive_time till 120 och nu verkar allt fungera bra. Tänk på att om du är värd för MondoDb i en Docker-behållare bör du ställa in den här inställningen på Docker-värden.

Här några andra användbara länkar:



  1. Bygga en maskininlärningsapplikation med Cloudera Data Science Workbench och operativ databas, del 1:Konfigurationen och grunderna

  2. Byt värdena i en MongoDB-array

  3. Hur listar man alla MongoDB-databaser i Node.js?

  4. Mongo-aggregation vs Java för loop och prestanda