PHP ウェブサイトのトップページが開けない原因についてお話します
最近、Web サイトのトップページが開けなくなり、写真のように 504 エラーが直接返されることがあります。 nginxによる。
今日の午後 16:00 頃に再度表示されました。Alibaba Cloud データベースの接続を確認しましたが、実は夕方 2:00 にも一度表示されていました。この画像は、問題が解決され、データベース接続要求の数が減少した後に取得されたものです。
データベースサーバーには同時に複数のライブラリがあるため、データベースに大きな負荷がかかっているようです。他のシステムがデータベースをダウンさせているのか、それとも現在のシステムが原因なのかを判断するものではありません。
ステートメントを使用してデータベース内のセッション数をクエリします
SQLSERVER 現在の接続数を表示します
Select * from sys.dm_exec_connections - -このコマンドは、接続されているユーザーの数を確認できます
Select * from sys.dm_exec_sessions --このコマンドは、接続に複数のセッションが存在する可能性があります
この図から、以前 504 を報告した Web サイトはデータベースへのリクエストが多いことが大まかに判断できます。
特定のアプリケーションを見つけたら、対応するサーバーに移動してさらに確認できます
最初に CPU を確認するのが通常です
再度 PHP-FPM プロセス数を確認してください
下通常の状況では、php プロセスは 10 程度しかありません。これほど多くの突然の増加は、明らかに外部からのリクエストがたくさんあることを示しています。
しかし、プロセスの終了を妨げる例外が php にあるかどうかを判断するために、すべてのプロセスを終了し、php-fpm を再起動しました。
すぐに多くのプロセスが表示されることが判明したので、次の結論を導き出すことができます: これは、nginx が 504 を報告する理由は、外部リクエストが継続的であり、データベースが大きな圧力がかかり、リクエストを受信できないため、nginx は 504 を報告します。
次に、この時点で nginx ログの最後の 500 個のデータを確認します。
#tail -n 500 /usr/local/nginx /logs/access .log >>500_20160218-1712.txt
ログから、スパイダーがBaidu と Sogou は常にクロールしているため、比較的安定しており、Web サイトのトラフィックが急激に増加することはありません。また、Baidu は Web サイトがクロールされないようにアクセス頻度を制御すると言われています。 。
以下のログを見ると、この期間に Sogou を巡回するスパイダーの数が非常に多かったことがわかりました。スパイダーはクラスターを使用して巡回しているため、IP をブロックするだけで済みます。 nginx のリクエストヘッダー。
server { listen 80; root /www/; index index.php; #禁止特定爬虫的抓取 if ($http_user_agent ~* "Sogou web spider") { return 403; }
で維持されていることがわかります。
これは、Sogou が行ったことを示しています。最も緊急なことは、Sogou に多くのユーザー グループを持たせないようにすることです。このことから、非常に重要な結論が得られます。Web サイトが安定しているからといって、キャッシュの使用をやめないでください。Web サイトはいつでもこのような突然のトラフィックに遭遇する可能性があります。。
Sogou をブロックする前:
Sogou をブロックした後:
以下は、nginx ログから分析されたさまざまなスパイダーによって分析された Web サイトのクローリング データの上位ランキングです。実際、Google やその他のあまり有用ではないスパイダーがブロックされています。
ソゴウが 1 日でかなり怖がっていることがわかります。