サーバーの目から見たHabraeffect、または静的な配布を行わない理由

記事では、パーソナルサーバーで観察されたhabraeffectの印象を説明します。







長い間Webに携わってきた人、特にDDOSに対する保護の問題を決定した管理者にとっては、新しいものではありません。

habraeffectをどのように見たかについてのちょっとしたメモ。





かなり長い間、さまざまなWebプロジェクト専用のサーバーがあり、もちろん、どこでも利用できるファイルクリーナーとして使用していました。 2000年代の初めには、それはただの普通のデスクトップマシンでしたが、徐々にタスクが成長し、マシンは即興または廃止されたコンポーネントから評価されました。 アップグレードが最後に2006年に行われたとき、そして今まで、その中の鉄は変わっていません。

鉄の場合:2xPentium 3 866mhz / 512 MB / 5x9Gb uw-scsi raid5(ソフト)



正直なところ、サーバーに深刻な負荷がかかったことは一度もないため、ソフトウェアのチューニングの問題は浮かび上がりません。 ホストされているいくつかのホームサイト、2、3のギャラリー、いくつかのフォーラム、およびテスト用に作成された2つのCMSがあります。



そして、昨日、私は最初の2つの投稿をハブに投稿しました 私はまだhabraeffectに慣れていないので、投稿ではホスティングへの直接リンクである画像を使用しました。



まず、ブログに投稿が投稿されたため、トラフィックはあまりありませんでした。 しかし、その後、彼らは、特定の数のポイントを獲得し、両方がメインポイントに到達しました。 そして、ホストが過負荷になっていることを監視するメッセージを受信し、ほぼ即座に-メモリが不足しているというメッセージを受け取りました。



チャートでは、次のようになりました。



最初のグラフはloadavgで、両方のプロセッサの100%の通常の負荷は2であり、通常は0.5〜1の範囲内にあります。 2番目はメモリ、3番目はスワップです。

23:30頃に物理メモリが終了し、スワップが終了し始めたことがわかります。 午後11時38分頃、スワップは同じように終了し、負荷が上向きにクロールされました。 サーバーは既に応答を停止しており、それが何であるかを消化しようとしていました。



この時点で、Apache tkを再起動する必要がありました。 150部で発売され、すべてのメモリを飲み込んだのは彼でした。 300メガバイトの物理メモリと約120のスワップが解放されました。 しばらくの間、これは助けになりましたが、わずかな期間の後、すべてが繰り返されました。



ヒットに関する統計を整理しました。このような素晴らしいグラフィックが2つありました。



最初のチャートは1分あたりのヒット数です。

このサーバーは完全にアンロードされているため、0〜10ヒットが通常見ています。 ここでは、午後11時20分からヒット数が1分あたり600〜800に跳ね上がり、これがApacheのリソースの終わりであることがわかります。 それとは別に、Habrのメインページからのヒットを数えました。記事の見出しに2つのジープがあり、それらは青色で表示されています。

2番目のグラフはトラフィックです。 ピーク時には、毎分30メガバイトまで表示されます。 メインページから1分あたり定期的に3〜5メガバイト。



Apache設定はデフォルトでした:

MinSpareServers 5

MaxSpareServers 10

MaxClients 150

MaxRequestsPerChild 10000








20〜30を超えるloadavg負荷モーメントでは、マシンは非常に思慮深くなります。

Topは3〜4分ごとに画面を描画し、コンソールコマンドは1分遅れて機能します。

これは、最後のピーク時に約1:50に上から取られたスクリーンショットです。





ログは次のようになりました。

pastebin.comのリンク



Apacheは増殖を開始し、メモリが不足し、oom-killerはメモリで最も太っているもの(mysql)を監視し、それを釘付けにします。 その後、彼は他のアパッチを釘付けにしようとしますが、彼らは十分に速く繁殖します。

夜中に、oom-killerは37回、mysqlを介して5回(実行中に)、残りはApacheで働きました。



最初の投稿には762 kb、2番目の投稿には361 kbの画像が含まれていました。 これは、カットの下、外側にあります-各1枚の画像は27 kbです。



22:00から04:00の間に、126,939ヒットがログに記録され、4.14ギガバイトのトラフィックが記録されました。

全体の負荷はもっぱら静的な戻り値であり、CGI / PHPはサイトから読み込まれず、画像のみが返されました。 この間、サイトの他の部分や他のサイトへのリクエストは12を超えなかったため、統計に影響はありませんでした。

この間、Apacheログ自体は約60メガバイト増加しました。



キャプテンからの結論は明らかです。Apacheは高負荷時に静的な値を与えません。

nginxなどのリバースプロキシの実装が必要です。



注意:実際のホスティング事業者はパイプで測定しないようにお願いします。高負荷のソフトウェアを特別に設定し、そのようなトラフィックを毎分配布することはすべて明らかです。 私の記事はそれについてではありません。



ご清聴ありがとうございました。 興味深いヒントを聞く準備ができています。



All Articles