8

Heroku に Node.js アプリケーションがあります。最近、長いクエリを SSE (EventSource) を使用するように切り替えました。私のマシンでは素晴らしく高速に動作しますError H15 (Idle connection)が、GET リクエストを受け取り続けます。H15 の説明によると、1 回のトランザクションで許可される時間が 55 秒を超えました。しかし、私のクエリ全体は 4 ~ 5 秒もかかりません。

さらに、説明を読んだ後、重い作業を開始する前に、クエリにヒットするとすぐに最初のバイト (数値のみ) を返しますが、それでも機能しません。

私の質問は次のとおりです。

  1. このことを続けるために何をする必要がありますか?HTTP ヘッダー パラメーター?クライアントJS側に何か?H15 を回避するにはどうすればよいですか?
  2. Heroku でサポートされていないことをしようとしていますか? EventSource を正常に使用する Heroku の別のアプリがあるので、そうは思いません ( express-eventsource.herokuapp.com、github のソース: https://github.com/TravelingTechGuy/express-eventsource ) 。

いつもありがとうございます。

4

3 に答える 3

13

すべてを試し、コードを変更して書き直し、ネットワークのプロファイリングなどを行った後、最終的に私の友人 (ノードの知識はまったくありません) が私を正しい軌道に乗せるアイデアを思いつきました:

これはドメインの問題のようです。コードの問題ではありません。
ANAME マッピングを設定したところ、Heroku は 5 つの異なる IP を使用しているため、そのうちの 1 つだけにマッピングすると、SSE 呼び出しが失敗する可能性があることがわかりました。基本的に、mydomain.com は mydomain.herokuapp.com とは異なる IP を示しました。つまり、サーバーは呼び出しを開始した IP とは異なる IP に応答を返そうとしたため、タイムアウトしました。

私は CNAME を優先して ANAME を捨てました (基本的に、www.mydomain.com を優先して裸の mydomain.com をあきらめました)、今では機能しているようです。

結論:

  1. すべてがコードの問題というわけではありません - ある環境ではうまく動作し、別の環境ではうまく動作しない場合、それは構成の問題です
  2. あまりにも長い間何かに苦しんでいる場合は、新しい目をもたらすのに役立ちます. 対象分野の専門知識がなくても、試すことができる新鮮なアプローチへの素晴らしいアイデアを得ることができます
  3. 1and1 の DNS 制御は面倒です。そこから移動
于 2012-10-29T02:53:20.913 に答える