nginx接続タイムアウトとクライアントが接続を閉じた問題


21

このnginxサーバーをAWSで実行していますが、最近10人のユーザーがWebサイトへのアクセスを10回試行するまでウェブサイトが開かないという不満を訴え始めました。

私の側から問題を再現することはできませんでした。GoogleのDNS、つまり8.8.8.8を使用しています。ユーザーの1人に対して同じものを変更したとき、サイトは正常に機能していました。これが理由になる場合もあれば、単なる偶然の場合もあります。

エラーログでこれを見つけました-

2014/05/29 13:46:15 [info] 6940#0: *150649 client timed out (110: Connection timed out) while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150670 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150653 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150652 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80

そして、これさえいくつかの場所-

2014/05/29 13:46:53 [info] 6940#0: *150665 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:53 [info] 6940#0: *150660 client xx.xxx.xxx.xx closed keepalive connection

注-クライアントIPにはxx.xxx.xxx.xxを配置しました

ここにnginxの設定があります-

server {
    listen       80;
    server_name  somedomain.com  www.somedomain.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    root        /var/www/somedomain/current/app/webroot;
    index       index.php index.html index.htm;

    ... couple of location rules ...
}

私は本当に助けていただければ幸いです。

ありがとう


1
これは、サーバーではなくサーバーへの開発者の接続に問題がある可能性があります。問題を再現できず、サーバー自体がクライアント接続タイムアウトを登録しているため、開発者がファイアウォールの背後にいて、これを引き起こす内部ネットワークの問題があると疑う必要があります。
アンドリューS

この問題のテストとして、キープアライブを無効にしてみてください。トラフィックがWebサーバーに到達するかどうかはわかりませんが、Keep-Aliveが原因で、nginx構成の同時実行制限に到達する可能性があります。詳細はこちら:nginx.com/blog/http-keepalives-and-web-performance
Alfonso

1
@NitishDharこの問題を解決できましたか?私も同じ問題に直面していますが、無知です。ソリューションを共有できれば嬉しいです。
イーサンコリンズ

2
質問:サーバーはロードバランサーまたはファイアウォールの背後にありますか?NATは関係していますか?サーバーとインターネットの間に何らかのトンネルがありますか?私が尋ねる理由は、これがパスのどこかにトンネルがあり、誰かがパスMTUディスカバリーを壊すすべてのICMPをブロックしたときに起こるようなことのように聞こえるからです。
GeorgeB

また、cat / proc / sys / net / ipv4 / tcp_mtu_probing
GeorgeB

回答:


6

Nginxから提供されたログに基づいて、サーバーとユーザー間の接続が不安定または遅いようです。tracerouteサーバーからクライアントIPアドレスまたはそのゲートウェイを試してください。また、pingクライアントのIPアドレスを長時間使用して、パケット損失率と応答時間を確認します。MTUがこの問題の別の原因である可能性があります。MTU = 1500でクライアントに到達できるかどうかをテストします(Mac:)ping -D -s 1472 xx.xx.xx.xx

ところで、サーバーまたはクライアントが中国にある場合、この問題は通常あなたのせいではありません。GFWは、国際接続の品質を意図的に悪化させるために、境界間のパケットをランダムに破棄することが知られています。


fyi、GFW =中国のグレートファイアウォール。
ロシャン

0

そのコメントで推測されているように、それはおそらくユーザーエラーであり、(意図的かどうかに関係なく)接続を閉じています。問題を確実に再現するようにしてください。他の場所で起こっていることを排除し、それがその場所だけである場合、彼らは彼らの側でトラブルシューティングする必要があります。さまざまなブラウザー/コンピューターで試してから、ネットワークの信頼性をテストします。


0

これらのログエントリは、OpenVASなどのツールを使用してサーバーをスキャンするときに表示されるエントリに似ています。これらのツールは、接続不良、低速化、または動作不良を引き起こします。nginxは、一部の接続がうまく機能していないことを報告しているだけです。すべてのトラフィックが同じソースからのものであり、高速で、アクセスログに一致する他の正当な要求がない場合、ボットスキャナーのようなものである可能性があります。

これらのスキャナーは、アプリケーションに負荷をかけている可能性があり、他の正当なトラフィックの速度を低下させる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.