PHP Manual

サーバーに負荷がかかっている場合の緊急修復

11. 02. 2023

外部の監視ツールから、監視対象の5つのURLの平均応答時間が過去30分間で2倍になったことが報告されます。このプロジェクトは、あなたの管理下にない、データセンターのどこかで稼働している1台の物理サーバーで実行されています。SSHで接続してhtopを起動すると、CPU負荷は95%、メモリはとっくにオーバーフローしていることがわかります。

gitによると、1週間ほど前に新しいテーブル構造へのデータベース移行を行ったのですが、同僚がチャットに、列とインデックスの再計算に5時間ほどかかり、その間ほぼ全てのデータベースがロックされ、INSERTもSELECTも効かなかったので、移行を夜間に実行しなければならなかったと書いているんですね。

つまり、パフォーマンスの問題は、不適切に設計されたインデックス、SQLクエリの再設計の不備、または大規模なコネクションプーリングが原因であると考えられます。Google Analyticsによると、サイトには7千人のユーザーがおり、5時間の停止はクライアントの風評リスクを意味し、その間に数万から数十万クラウンの損失(見積もるのは難しい、投影機が十分に作り上げる)が発生するのです。テスト環境での機能テストだけでは不十分で、負荷テストも実施する必要があることに気づかれたのですね。

最大手のクライアントの重要なeコマースストアであり、状況が悪化することも予想されるため、30秒で決断する必要があるのです。

どのように進めるのですか?

1.あなたは何もしない。サイトが遅くなるけど、サーバーが対応できれば問題ないかな...。 2.DBの構造を元に戻すプランを用意し、早速実行してみる。 3.より強力なサーバーにサイトを移行する(しかし、これはクライアントに迅速に価格を上げることを意味し、数百GBのデータベーステーブルがあるため、移行が完了するまでに6時間程度待つことになる)。 4.どのSQLクエリやどのページが一番時間がかかっているかを調べ、それを無効にするだけでいいのです。 5.Cloudflareを起動し、静的にチェックインできるものはさせます。 6.他のマジックも(あまり思いつかないけど)・・・。

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
6.
Status:
All systems normal.
2024