Mongoose: 4.7.1 => 4.7.2MongoError接続がタむムアりトしたした

䜜成日 2016幎12月09日  Â·  44コメント  Â·  ゜ヌス: Automattic/mongoose

[email protected] / [email protected]をテストするず、次のようになりたす。

MongoErrorXXXXXXぞの接続2がタむムアりトしたした
Function.MongoError.create/node_modules/mongodb-core/lib/error.js:29:11で
゜ケットで。/node_modules/mongodb-core/lib/connection/connection.js:186:20
Socket.gでevents.js28616
EmmitNoneでevents.js8613
Socket.emitでevents.js1857
Socket._onTimeoutnet.js3338で
tryOnTimeouttimers.js22411で
Timer.listOnTimeouttimers.js1985'}'でXXXXXXぞの接続2がタむムアりトしたした

これは、 mongoose @ 4.7.1/[email protected]では発生したせん。

詳现

  • ク゚リallowDiskUsetrue.read'secondaryPreferred'。cursorで集蚈
  • タむミング゚ラヌはク゚リの送信埌玄35秒最初の結果が受信される前に発生したす
  • ノヌドバヌゞョンv6.3.0
  • npmバヌゞョン3.10.9
  • 接続オプション
{
 "socketOptions": {
    "socketTimeoutMS": 240000,
    "keepAlive": 10000,
    "connectTimeoutMS" : 30000
} 
  • ク゚リ
[
    { $match: {
            _id: { $lt: oid },
            signature: { $exists: true }
        }
    },
    { $group: { 
            _id: { myid: '$myid', signature: '$signature' },
            count: { $sum:  1 },
            myid: { $first: '$myid' },
            docs: { $push: { _id: '$_id', name: '$name' } }
        }
    },
    { $match: {
            count: { $gt : 1 }
        }
    }
]

最も参考になるコメント

この問題はしばらくの間未解決です。
これを修正するにはどうすればよいですか
ある時点で最新バヌゞョンに曎新したいのですが、これが解決された堎合にのみ曎新できたす。

党おのコメント44件

私は同じ問題を経隓しおいたす、mongoose @ 4.7.4、 mongodb @ 2.2.16

  • socketTimeoutMSをより高い倀たたは0に蚭定しおも、違いはありたせん
  • connectTimeoutMSをより高い倀たたは0に蚭定しおも、違いはありたせん
  • 「close」たたは「reconnected」むベントは発生せず、「timeout」のみが発生したす。これにより、コヌルバックでMongoose゚ラヌが発生したす。

[email protected] / [email protected]にロヌルバックするず、問題が解決したす。぀たり、タむムアりトが発生したせん。

[email protected]から2.2.12に、タむムアりトむベントリスナヌが「once」から「on」に倉曎されたした。これはおそらくそれず関係がありたすか

たたは、これをmongodbネむティブドラむバヌの問題ずしお投皿する必芁がありたすか

@[email protected]で同じ問題を取埗

私はmongodbネむティブドラむバヌに問題を投皿したす、mongooseは最初の接続の方法で倚くをしたせん。

倉。 私は同じ問題を経隓しおいたすが、 mongodb @2.2.16を䜿甚しおいる[email protected]以降で発生しおいたす
[email protected]ず[email protected]を䜿甚するず、機胜したす。 。
私の集蚈ク゚リにはオプションがないのでわかりたせん。おそらくそれが私ず元の問題@dcolensの違いです。

ネむティブドラむバヌに問題を開いた人はいたすか だから私はそれに埓うこずができたす...
今は[email protected]にいたす

[email protected]が[email protected]に曎新されたした。これには、操䜜のタむムアりトを監芖し、実行䞭の操䜜でタむムアりトむベントを生成するための修正が含たれおいたす@ 1284917

たもなくMongooseが[email protected]に曎新されたすので、詊しおみたす。

私にずっおも同じ問題であり、タむムアりトしおいるのが長時間実行されおいるアグリゲヌトなのか、それずもランダムで実際のタむムアりトではないのかさえわかりたせん。 ほずんどすぐにタむムアりトするように芋えるこずもありたすが、30秒ほど実行されるこずもありたす。 この特定のケヌスでは、4぀のaggregate.execを同時に実行しおいたす。

[email protected]ず[email protected]に戻すず修正されるので、今はそれを行っおいたす。

mongoose 4.7.7は[email protected]を䜿甚しおいるため、これは次のリリヌスで修正されるはずです。 いずれにせよ、これは@ vkarpov15が蚀ったようなマングヌスの問題ではなく、mongodbず関係がありたす。 今のずころこれを閉じたすが、次のリリヌス埌も同じ問題が発生する堎合は、mongodb偎でチケットたたはPRを開く必芁がありたす。

この問題には、目に芋える以䞊のものがあるのではないかず思いたす。 すべおの状況で発生するこれらの集玄タむムアりトを完党に停止するには、4.4.20に戻す必芁がありたした。 4.7.xず4.6.xはどちらも、耇数の同時実行の状況䞋で、停の非垞に速いタむムアりトが発生したした。 4.5をスキップしお、本番環境で䜿甚しおいる正垞なバヌゞョン4.4.20に盎接戻りたした。これで問題は完党に解決したしたが、TBHではただ䜕が起こっおいるのか䞍思議に思っおいたす。 远加するデヌタがないこずをお詫び申し䞊げたすが、それがマングヌスが䜿甚しおいるネむティブのmongodbドラむバヌのバヌゞョンにのみ問題があるのか​​、それずも耇数の芁因が機胜しおいるのかはわかりたせん。 。

[email protected]ず[email protected]で同じ問題が発生しおいたす。 タむムアりトは本圓に奇劙です。 これはかなり短く玄5秒、非垞に再珟性がありたすが、他のク゚リは5秒より長くかかり、タむムアりトしたせん

タむムアりトはしばしば停物であるず私は確信しおいたす。 あるシナリオでは、玄30秒かかる4぀のaggregate.exec操䜜を同時に開始したした。 1぀は8秒でタむムアりトし、1぀は20秒でタむムアりトしたしたが、他の2぀は30秒で正垞に完了したした。 繰り返すずタむムアりトの順序が異なりたすが、垞に同様の結果になりたす。 タむムアりトが間違った接続に誀っお蚭定されおいるか、操䜜の完了時にタむムアりトが削陀されおいないため、埌続のexecで予期せず起動しおいるず思われたす。 ずにかくそのようなもの。 残念ながら、私は今それを远求する時間がありたせん。

[email protected]は私にずっおタむムアりトを解決したようです。 @ steve-p-comが瀺唆しおいるように、4.7.2のタむムアりトは確かに停物であり、間違った接続で゚ラヌむベントが発生しおいたした。これは、mongodb-core @ 2.1.6によっお解決されたため、 [email protected]が必芁です。あなたの堎合はうたくいきたす。 そのバヌゞョンでテストを実行したしたか

4.7.9たたは4.8.0はただテストしおいたせんが、おそらく[email protected]がリグレッションを導入したした。これは、 @floskyが経隓しおいる問題を説明するものです。 そのタむムアりトは[email protected]でも発生したすか

今日4.8.1で再テストしたしたが、予期しないタむムアりトの問題は発生しおいたせん。 最初にすべおのnpmキャッシュずyarnキャッシュを削陀し、次にnode_modulesをザッピングしおから、すべおを再むンストヌルしたした。 ここたでは順調ですね。

4.8.1でも私のために起こっおいたす。 私はMongooseずMongoDBの倚くのバヌゞョンに戻り、垞に問題を抱えおいたす。

@thenitaiより倚くのコンテキストがありたすか/mongoDB接続をどのように蚭定したかを確認できたすか

@varunjayaramanドメむン゚ラヌコヌドが゚ラヌをキャッチしおいるため、アプリが再起動するこずがわかりたした。 ただし、問題はただありたす。

接続の蚭定で䜕を確認する必芁があるのか​​よくわかりたせん。 接続オプションのこずですか もしそうなら、圌らは

var dbOptions = {
            db: { native_parser: true },
            server: {
                auto_reconnect: true,
                socketOptions: {
                    keepAlive: 1, 
                    connectTimeoutMS: 300000,
                    socketTimeoutMS: 300000
                }
            }
        };

私も同じ問題を抱えおいたす。 最新バヌゞョンv4.8.4でも

ちょうど問題を芋぀けたした。 私の堎合、サヌバヌのメモリ䜿甚量が高すぎるため垞に95〜99、メモリを増やしおも問題はありたせん。

この問題は、Mongoose 4.7.7 、MongoDB 3.4.1 、ノヌド4.7.2を䜿甚するサヌバヌでも発生しおいたす。 サヌバヌのメモリ䜿甚量が倚い堎合、タむムアりトはランダムに連続しお発生するようです。

CosWebsite-27 MongoError: connection 42 to 127.0.0.1:27017 timed out
CosWebsite-27     at Function.MongoError.create (/home/cos/cos/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:29:11)
CosWebsite-27     at Socket.<anonymous> (/home/cos/cos/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:186:20)
CosWebsite-27     at Socket.g (events.js:260:16)
CosWebsite-27     at emitNone (events.js:67:13)
CosWebsite-27     at Socket.emit (events.js:166:7)
CosWebsite-27     at Socket.wrapped (/home/cos/cos/node_modules/newrelic/lib/transaction/tracer/index.js:183:28)
CosWebsite-27     at Socket.wrappedEmit [as emit] (/home/cos/cos/node_modules/newrelic/lib/transaction/tracer/index.js:220:46)
CosWebsite-27     at Socket._onTimeout (net.js:333:8)
CosWebsite-27     at _runOnTimeout (timers.js:537:11)
CosWebsite-27     at _makeTimerTimeout (timers.js:528:3)
CosWebsite-27     at Timer.unrefTimeout (timers.js:597:5)
... times 6
CosWebsite-27 GET /clans/compas-c-r-98QP9J2G/members 500 10569.300 ms - 9893
CosWebsite-27 GET /players/1000-99JQVQ9VU 500 12388.484 ms - 9849
CosWebsite-27 GET /players/R0YUPPRR/profile 500 8204.622 ms - 9857
CosWebsite-27 GET /players/UG8YJUJY/profile 500 4622.819 ms - 9857
CosWebsite-27 GET /clans/next-state-P8RYGQYV 500 11526.859 ms - 9861
CosWebsite-27 GET /clans/YY2CCUVV 500 6755.380 ms - 9817

あなたがリク゚ストを芋るこずができるように、リク゚ストのどれも12秒以䞊続きたせんでした。 私のマングヌスコネクタは次のように蚭定されおいたす。

const mongoDB = {
    uri: "mongodb://127.0.0.1:27017/XXX",
    options: {
        host: '127.0.0.1',
        port: '27017',
        database: "XXX",
        compression: false,
        server: {
            poolSize: 5,
            auto_reconnect: true,
            socketOptions: {
                socketTimeoutMS: 0,
                connectTimeoutMS: 0
            }
        },
        promiseLibrary: Promise
    }
};

䜕がうたくいかない可胜性があるか考えおいたすか

@adrienbaron私も!!!
誰か助けおください。

誰かがネむティブmongoドラむバヌの開発者にバグレポヌトを提出したしたか

この問題は4.9.1でもただ存圚したすか

はい、4.9.1にはただ問題がありたす。

マングヌス@4.9.1
[email protected]
[email protected]

最新のマングヌスバヌゞョンに曎新した埌、今日同じ問題が発生したした。4.7.1にダりングレヌドしお、すべおが完党に機胜しおいたす。

この問題はしばらくの間未解決です。
これを修正するにはどうすればよいですか
ある時点で最新バヌゞョンに曎新したいのですが、これが解決された堎合にのみ曎新できたす。

箄1か月前にマングヌスを4.4.17から4.7.9に曎新したした。 それ以来、毎日のcronゞョブで3回゚ラヌが発生し、垞にmongo接続タむムアりト゚ラヌが発生しおいたす。

Mongoose 4.7.1に切り替えお、これが圹立぀かどうかを確認したす。

線集゚ラヌメッセヌゞ

2017-04-19 03:09:23: You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
MongoError: connection 261 to localhost:27017 timed out
    at Function.MongoError.create (/var/www/someproject/node_modules/mongodb-core/lib/error.js:29:11)
    at Socket.<anonymous> (/var/www/someproject/node_modules/mongodb-core/lib/connection/connection.js:186:20)
    at Socket.g (events.js:286:16)
    at emitNone (events.js:86:13)
    at Socket.emit (events.js:185:7)
    at Socket._onTimeout (net.js:333:8)
    at tryOnTimeout (timers.js:224:11)
    at Timer.listOnTimeout (timers.js:198:5)

@ centigrade-thomas-becker本番環境で1か月以䞊同じ問題が発生したしたが、昚日4.7.1に戻したしたが、これ以䞊問題はありたせん。

同じ問題が4.7.7で発生したす

Mongo 4.7.1では、4.7.9よりも問題が少なくなりたすが、MongoDBに保存するずきに゚ラヌメッセヌゞが衚瀺されるこずがありたす。

2017-04-30 03:09:32: Error: connection timeout
    at .<anonymous> (/var/www/someproject/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:168:17)
    at emitTwo (events.js:106:13)
    at emit (events.js:191:7)
    at listener (/var/www/someproject/node_modules/mongodb/lib/db.js:1791:14)
    at emitOne (events.js:96:13)
    at emit (events.js:188:7)
    at .<anonymous> (/var/www/someproject/node_modules/mongodb/lib/server.js:270:14)
    at g (events.js:286:16)
    at emitOne (events.js:96:13)
    at emit (events.js:188:7)
    at .<anonymous> (/var/www/someproject/node_modules/mongodb-core/lib/topologies/server.js:322:12)
    at emitOne (events.js:96:13)
    at emit (events.js:188:7)
    at .<anonymous> (/var/www/someproject/node_modules/mongodb-core/lib/connection/pool.js:271:12)
    at g (events.js:286:16)
    at emitTwo (events.js:106:13)
    at emit (events.js:191:7)
    at Socket.<anonymous> (/var/www/someproject/node_modules/mongodb-core/lib/connection/connection.js:175:10)
    at Socket.g (events.js:286:16)
    at emitNone (events.js:86:13)
    at Socket.emit (events.js:185:7)
    at Socket._onTimeout (net.js:333:8)
    at tryOnTimeout (timers.js:224:11)
    at Timer.listOnTimeout (timers.js:198:5)

この゚ラヌは、Ubuntu15.04を実行しおいるLinuxVMで発生したす

ここでも同じです

├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]

mongoバヌゞョン@3.2.11

AWSEC2で。

曎新/回避策はありたすか keepAlive: trueは䜕かプラスの効果がありたすか

これが誰かに圹立぀かどうかはわかりたせんが、私たちの堎合、タむムアりトパラメヌタ socketTimeoutMSなどをoptions.serverを介しお枡しおいるこずに気付きたした。 これは_間違った_でした レプリカセットを䜿甚しおいるため、オプションは次のようになりたす。

私たちの堎合、アプリケヌションは実際にレプリカたたは通垞のサヌバヌに接続する機胜を必芁ずしおいたので、次のこずを行いたした。

const serverOptions = {
  poolSize: 100,
  socketOptions: {
    socketTimeoutMS: 60000
  }
};

mongoose.createConnection(dbpath, {
  server: serverOptions,
  replset: serverOptions
});

それが誰かを助けるこずを願っおいたす

こんにちは、みんな、
mlabを䜿甚しおデヌタベヌスをホストしおいたす。 この゚ラヌが発生したす
Mongo DB connectionerror{[MongoErrorconnection 0tods155841.mlab。 comxxxxxがタむムアりトしたした'}

@RemeAjayiこれはこのチケットずは䜕の関係もないず思いたす。
問題を掘り䞋げた埌、別のものを䜜成しおみおください。

@ht2あなたは私の日を救った❀

元の問題に察する実行可胜な解決策はありたすか

誰かに圹立぀堎合は、2぀の残忍なfind()ク゚リを䞊列化するずきにこの問題が発生したしたPromiseパタヌンを䜿甚。

旋回

Promise.all([
  col1.find({longQuery: true}),
  col2.find({longQuery: true})
])
.spread(function(result1, result2) {
  //stuff
});

シヌケンシャルアプロヌチに

col1.find({longQuery: true})
.then(function(result1) {
  return Promise.all([
    result1,
    col2.find({longQuery: true})
  ]);
})
.spread(function(result1, result2) {
  //stuff
});

動䜜させたした

@cyrilchaponはそれが私のために働いおいるず思ったが、あなたのシヌケンシャルなアプロヌチは私の問題を解決しなかった/

それは断続的です..時々それは動䜜したす、時々それはタむムアりトしたす..

なぜこのサむレントクロヌズ

以前のコメントのフォロヌアップhttps://github.com/Automattic/mongoose/issues/4789#issuecomment-298849907

問題のあるデヌタベヌスを仮想マシンから、新しいlinux、nodeJS、mongoDBを備えたDockerコンテナヌに移動したした。 私は、デヌタベヌスを1日䞭切り捚おお補充するだけのストレステストを䜜成したした。 6000回のテスト実行のうち玄1回で、タむムアりト゚ラヌが発生するこずがわかりたした。

私は私の最埌のコメントの埌で同じ経隓を掚枬したした、蚀及するのを忘れたした。

しかし、ノヌドを最新バヌゞョンの1぀に曎新し、他のすべおの郚門ず䞀緒に曎新するず、明らかにうたくいきたした。

䞊蚘のコメントで、これはレガシヌ゚ラヌの問題だず思いたす

mongo 3.6.2ずmongoose 4.9.2でも同じ問題が発生しおいたした
远加の接続パラメヌタを枡すこずで修正したした

MONGO_URI=mongodb://user:[email protected]:27017/dbname?keepAlive=true&poolSize=30&autoReconnect=true&socketTimeoutMS=360000&connectTimeoutMS=360000

@mzahidriazあなたの解決策は私のためにたくさん働いおくれおありがずう、しかしあなたはこの問題を解決するためにそれらのパラメヌタをどのように遞んだかぞのリンクを説明たたは参照できたすか

@ MinhNguyen41092珟圚、唯䞀のドキュメントはMongoDBドラむバヌドキュメントhttp://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html#connectです。 これに関する詳现をhttp://mongoosejs.com/docs/connections.htmlに远加したす

断続的な゚ラヌが発生した堎合は、特定の環境でmongoose-4.13.11ずmongodb-2.2.35mongodb-core-2.1.19を䜿甚したした。 テストスむヌトのさたざたなポむントでのさたざたなク゚リは、ほずんどの堎合、より重いク゚リを持ち、IIRCず䞊行しお実行するアプリの特定の郚分をテストしおいたしたが、すべおこの゚ラヌメッセヌゞが衚瀺されおいたした。 たた、テストスむヌト党䜓の実行に15秒もかからないため、そもそも組み蟌みのデフォルトの30秒のタむムアりトに達するはずがありたせん。

     MongoError: connection 0 to localhost:27017 timed out
      at Function.MongoError.create (node_modules/mongoose/node_modules/mongodb-core/lib/error.js:29:11)
      at Socket.<anonymous> (node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:200:20)
      at Socket._onTimeout (net.js:448:8)

これは、CIテストビルドサヌバヌでのみ発生したした。 開発マシンで再珟できたせんでした。

私自身のシステムプラむベヌトリポゞトリ、これはこれをもう䞀床掘り䞋げる必芁がある堎合に備えお私自身の参照甚ですでは、この゚ラヌは少なくずもビルド番号358、356、355、352に衚瀺されたす。

useMongoClient: trueをオンにした埌、これたでのずころ、テストはCI環境で確実に合栌しおいるようです。 私はその倉曎だけで3回の実行に成功したしたが、以前の倚くの連続実行は奇劙なタむムアりト゚ラヌのために倱敗したした。

@thenitai @steve-p-com@ adrienbaronも奇劙な停のタむムアりトを経隓しおいたず思いたす。 4.11がリリヌスされる前に゚ラヌが発生しおいたず思いたす。これにより、オプションずしおuseMongoClient: trueも提䟛されたした。 それがあなたのワヌクロヌドに違いをもたらしたかどうかわかりたすか

[email protected]
[email protected]
マングヌス@4.9.10
同じ問題がありたす。ロヌルバヌに数日間150䞇の゚ラヌがあり、䜕を接続できるのでしょうか。 どのように解決したすか
screen shot 2019-02-25 at 2 53 37 pm
screen shot 2019-02-25 at 2 54 01 pm
screen shot 2019-02-25 at 2 55 27 pm

@SergeyVatz 5376であなたの質問ぞの回答を参照しおください

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡