Po několika pokusech jsem zjistil, že to byl problém s Load Balancerem Azure.
Po 60s nečinnosti odpojí všechna čekající TCP připojení.
Po dalším pátrání jsem našel tento příspěvek diagnostiky MongoDB FAQ a nastavil jsem tcp keepalive na 120s:
sudo sysctl -w net.ipv4.tcp_keepalive_time=<value>
a také jsem nastavil socketKeepAlive MongoClient na true:
MongoClientOptions.Builder options = MongoClientOptions.builder();
options.socketKeepAlive(true);
mongoClient = new MongoClient(mongoAddress, options.build());
Po těchto opravách se zdá, že problém zmizel!