21

これは仕方のない問題かもしれません。私はすべてを試しました。どこかの配電盤で口ひげをたくわえている男がいる気がする。

問題:

Amazon EC2 でアプリケーションを実行しています。インスタンスが 1 つしかなく、ロード バランサーがない場合は、問題なく機能します。

しかし、私の本番環境では、2 つの同一のインスタンスが 1 つのロードバランサーの背後で実行されており、特定のタスク (PDF を生成してメールに添付する機能など) を実行すると、何も起こらず、ネットワークで Google 開発者ツールを使用すると、タイムアウトになると「504 Gateway Timeout」というエラーが表示されます (30 秒に設定しています)。

私のデータベースは外部で、Amazon RDS にあります。

私は思う....クライアントがログインした最初のサーバーに強制的に接続したままにすることができれば、この問題は解決されるでしょう.instance-1が接続しようとしたときに504ゲートウェイタイムアウトが発生していることを私は理解しているからです. instance-2 がタスクを実行します。

これは、負荷分散を使用している場合にのみ発生しますが、2 台のサーバーのいずれかに直接接続している場合は発生しません。

ロード バランサの設定:

  • app.myapplication.com が myloadbalancerDNSname.elb.amazonaws.com を指すように、ロード バランサーのレジストラーに CRECORD がある
  • ロード バランサーには 2 つの正常なインスタンスがあり、それぞれが同じリージョンにありますが、それらは異なるアベイラビリティ ゾーンにあります。
  • ロード バランサーは、インスタンスと同じセキュリティ グループを使用しています (ポート 22、80、および 443 ですべての IP を許可します)。
  • ロード バランサーでクロスゾーン ロード バランシングがオンになっています。
  • CORS (Amazon S3 内) は、* から * への GET、POST、PUT、DELETE が有効になっています (これがどのようにインスタンスに関連付けられているのかわかりませんが、指示に従って実行しました)
  • ロードバランサーには、次のように構成されたリスナーがあります。
    • ロード バランサ プロトコル:HTTP ロード バランサ ポート:80 インスタンス プロトコル:HTTP インスタンス ポート:80
    • ロード バランサー プロトコル:HTTPS ロード バランサー ポート:443 インスタンス プロトコル:HTTP インスタンス ポート:80 (証明書プロバイダーごとに正しく選択された暗号、および SSL フィールドは 100% 確実に正しい)

いくつかのアイデア:

そうは言っても、私は HTTPS ではなく、通常の HTTP でテストしています。SSL が適切にセットアップされていると確信していません。私が疑わしい理由は、https ://app.myapplication.com をキー入力しようとすると、Google 開発者ツールの [ネットワーク] タブに "(failed) net::ERR_CONNECTION_CLOSED" というエラーが表示されるためです。ただし、通常の HTTP を使用しても問題が発生するため、これは適用できないはずです。SSL のトラブルシューティングは後で行うことができます。

繰り返しますが、私の問題は、一部の機能を使用するときに「504 Gateway Timeout」の問題が発生することですが、ページをロードする代わりにランダムに発生することもあります (ただし、めったにありません)。この 504 問題は、ロード バランシングを使用している場合にのみ発生しますが、2 つのインスタンスのいずれかに直接接続している場合には発生しません。

どの質問をすればよいかわかりません。すべてのドキュメントを T までたどり、Web 上のすべての提案を 2 回、3 回チェックしましたが、何もしていないからです。

4

7 に答える 7

4

Amazon ELB の背後で Amazon EC2 インスタンスを使用しており、504 GATEWAY_TIMEOUT エラーが発生していました。Ubuntu Web サーバーで Apache と PHP を使用しています。

私たちの場合、エラーはサーバーのメモリ不足が原因でした。Apache エラー ログに「メモリ不足」は見られませんでした。Apache アクセス ログに 504 行のエントリがありました。syslog ファイル ( /var/log/syslog ) を調べて「メモリ不足」を確認し、メモリの問題を修正しました。

これにより、504 エラーが解決されました。

于 2015-10-16T04:35:49.523 に答える
3

私の場合、ロードバランサーに問題はなかったことがわかりました。最終的な解決策は、謎のIPからアプリケーションのホスト名にトラフィックをルーティングするための不可解なエントリがあったUbuntuのホストファイルでした。そのため、PDF の作成プロセス中に、謎のサーバーを指すように PDF ジェネレーターによってパスが書き直されたため、ゲートウェイのタイムアウトの問題が発生しました。なぜそれが時折機能し、失敗しなかったのか、私にはわかりません。

127.0.0.1 localhost
127.0.1.1 ubuntu-server
42.139.126.191 app.myapp.com

これがそのように見えるので、その 3 番目の行を削除すると、すべてのギアが再び回転し始めました。:P

于 2015-01-05T09:33:55.037 に答える
0

私の場合: インバウンド セキュリティ グループ ルールを編集しました。

EC2-->セキュリティグループ->対応するセキュリティグループのインバウンドルールを編集し、ソースが正しく選択されていることを確認します(私にとっては、どこでも選択すると問題が解決しました)

于 2021-02-24T10:49:17.093 に答える