socketTimeoutMS не работает в очень простой среде

Я разрабатываю приложение. Сервер MongoDB размещен на удаленном хосте. Итак, я действительно заинтересован в использовании socketTimeoutMS: 30000, чтобы убедиться, что выдается ошибка, и я могу зарегистрировать проблему в своем приложении.

Я попытался с URL-адресом, установив MONGO_URL как mongodb://localhost/ddd18?socketTimeoutMS=4000'.

Или используя опции:

require('mongodb').MongoClient.connect( process.env.MONGO_URL, { server: { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } } , function( err, db ){

Or:

require('mongodb').MongoClient.connect( process.env.MONGO_URL, { mongos: { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } } , function( err, db ){

Или другие комбинации в опциях (например, прямая { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } или даже { socketTimeoutMS: 6500, connectTimeoutMS: 6500 }).

Если я сделаю следующее:

  • Запустите мое приложение (которое отлично подключается к MongoDB)
  • Убить MongoDB вообще
  • Попробуйте выполнить операцию

Попытка зависнет навсегда. На самом деле, он там зависнет, а затем, когда я наконец перезапущу MongoDB, операция действительно запустится и завершится.

У меня проблема в том, что у моего клиента есть 30-секундный тайм-аут. Если сервер этого не делает и по какой-то причине замолкает на пару минут, все те операции, которые клиент сообщил как «неудачные», действительно произойдут — и это было бы глупо.

Я делаю что-то явно не так?

Соответствующая документация: http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html


person Merc    schedule 05.10.2014    source источник


Ответы (2)


Ответ был прост: время ожидания сокета НЕ БЫЛО. auto_reconnect было установлено в true, и сервер продолжал пытаться переподключиться - и не выдавал ошибку

person Merc    schedule 05.10.2014

попробуйте serverSelectionTimeout (serverSelectionTimeoutMS)

ссылка: https://www.mongodb.com/blog/post/server-selection-next-generation-mongodb-drivers

для официального драйвера C# в предварительном выпуске сейчас (20.09.15): https://www.nuget.org/packages/mongocsharpdriver/2.1.0-rc0

person razon    schedule 20.09.2015