2016-08-17 5 views
0

最終的にこの問題の原因を突き止め、オンラインで直接的な回答が見つからなかったので、私は答えを投稿したいと思っていました。とにかく、ここに問題があります:ノードのhttp.get関数を使用してECONNRESET応答を取得する

私は単純なノードアプリケーションをポート3000で実行しています。私はいくつかのデータベース接続プーリングを試していましたが、予想通りに動作していることをテストするためにロードしたかったのです。私は包囲をインストールしてみました:

$ siege -c 10 -r 10 -b http://localhost:3000

私はConnection reset by peerエラーを得ました。だから私は、接続の数を減らしてみました:

$ siege -c 1 -r 1 -b http://localhost:3000

同じ問題。私はおそらく包囲攻撃の問題だと思ったので、nperfを試してみてECONNRESETというエラーが出ました。砲兵と同じ。

私はカール、テルネット、ウェブブラウザを使って接続でき、有効な応答を得たということです。

私はエクスプレスアプリでロギングエラーを試みましたが、リクエストを受け取ったことはありませんでした。私はnettopを使ってネットワークトラフィックを監視しようとしましたが、包囲攻撃やnperf(それはカールを使っていましたが)を使って接続を示したことはありません。

nperfが使用するのと同じ方法(ノードのhttp.get関数)を使用して接続するクライアントアプリケーションを作成し、同じECONNRESET応答を得ました。

私はポート3001で実行されている簡単なエクスプレスアプリを書いて、うまくいきました!私は私のポート3000アプリのラインのほとんどをコメントアウトしようとしたので、それは私の3001アプリと基本的に同じでしたが、それでも動作しませんでした。私はwebpackが何か変わったことをしているのではないかと疑い始め、ついに実現し始めました...下記の答えを見てください。

答えて

2

多分ポート3000に別のプログラムがあります。

だから、私は走った:

$ sudo lsof -i -P | grep -i "listen"

と私が露出ポート3000(別のプロジェクトを)持っていた私は停止し忘れて、古いVMを見つけました。私はそれをシャットダウンし、すべてがうまくいった!

私はポートが使用されていると警告しましたが、なんらかの理由でこのポートに気付かなかったと思いました。

とにかく、同様のエラーが発生した場合は、ポートスキャンを実行してください。

関連する問題