これがkoaに関連しているか、他のnpmモジュールなどの問題であるかどうかわかりません。私はここから始めるつもりです。これが間違っている場合は、適切な場所に移動します。私はちょうどそれをどこかに書く必要があります、それは私を夢中にしています。奇妙なECONNRESETエラー
だから問題です。私はkoa v1で書かれたREST APIを持っています。 Dockerイメージでノードサーバーを実行しています。私たちが持っているエンドポイントの1つは、インポートを開始し、メッセージ: "import started"でステータス200を返し、インポートが完了すると、スラックメッセージを送信して私たちに通知します。
最初にローカルマシンでサーバーをテストしましたが、すべてが動作します(エンドポイントはエラーをスローしません)。それから私はドッカーのイメージを構築しました。私はコンテナlocalyを実行し、すべてが動作します(エンドポイントは何のエラーもスローしません)。私はMesos環境に自分のイメージを展開します。コンテナが実行され、すべてのエンドポイントがインポートエンドポイントの横にあります。数秒(5〜10秒)後に呼び出すとECONNRESET
エラーが発生し、実行中のコンテナが強制終了され、新しい実行インスタンスが開始されます。インポートが終了します。
ドッカーコンテナに128 MBのRAMを割り当てましたが、これで十分です。インポートエラーが発生した後、おそらくOOMがプロセスを終了させたと考えました。そこで、dmesgをチェックすることにしました.OOMや実行中のコンテナのプロセスに関連するログエントリが見つかりませんでした。次に、localyのコンテナ(htop)のRAM使用状況を確認し、aproxを使用していることを確認しました。 250 + MB、私たちはマラソンの設定(512 MB)でさらにラムを追加することにしました。しかし、それは助けにはならなかった、同じエラーが発生しました。
エラーが十分に明示されていないため、longjohn
モジュールをインストールしたので、より詳細なエラーメッセージが表示される可能性があります。それは私たちにちょっとだけ多くの情報を与えましたが、私たちが思ったほど多くはありませんでした。
Error: read ECONNRESET
at exports._errnoException (util.js:1026:11)
at TCP.onread (net.js:569:26)
---------------------------------------------
at Application.app.callback (/src/node_modules/koa/lib/application.js:130:45)
at Application.app.listen (/src/node_modules/koa/lib/application.js:73:39)
at Promise.then.result (/src/server.js:97:13)
Error: read ECONNRESET
at exports._errnoException (util.js:1026:11)
at TCP.onread (net.js:569:26)
server.jsのライン97は、次のとおりです。インポートエンドポイントの
96:if(!module.parent) {
97: app.listen(port, (err) => {
98: if (err) {
99: console.error('Server error', err);
100: }
101: console.log('Listening on the port', port);
102: });
103:}
ラフロジック: だから何が正確にエンドポイント・ロジックで起こります。私たちはpostgres npmモジュールpg
を使用しています。文脈にpg.Pool
を渡しているので、後で我々のモデルでそれを使うことができます。私たちは、配列内の約束とプッシュ約束にカプセル化された挿入クエリを実行しています。およそ2700以上のレコードがあります。後で我々はPromise.all
を約束し、then
と一緒にメッセージをSlackに送る。
ご覧のとおり、エラーがkoa
またはpg
または他のものに関連するかどうかはわかりません。もっと興味深いのは、localyのすべてが動作することです(ノードサーバーとドッカーのコンテナ)が、mesosではそうではありません。私は、何が間違っているかを見つけるためのヒントやヒントに感謝します。
- KOA NPMモジュールのバージョン:PGのNPMモジュールの1.2.0
- バージョン:Postgresの9.5
- の6.1.0
- バージョンMesosのバージョン:1.0.1
編集:
他の開発者のおかげで、私たちはERRORの原因。インポート実行中にプール内のすべての接続を使用しました。マラソンがインポート時にサービスステータスを要求していたときに、サービスはデータベースに接続しようとして接続をテストし、その時点でデータベースへの接続が終了しました。サービスが不健全になり、マラソンがサービスを再開しました。私たちは輸入コードを改訂しました。プール接続の数を制限しています。
よろしくお願いいたします。
私はほぼ同じ問題を抱えています。 postgresとpgを使う。 – Yesha
これはまだ修正しましたか? – Yesha
その後、私は時間がなかったし、何かを確認したり証明したりすることができなかった。 – daniyel