【爆笑必須】エンジニアのやらかしをまとめました2020年アドベントカレンダー編

「爆笑必須」のエピソードをまとめました。クスッと笑えること間違いありません。動いているのはコンピューターであったり、システムであったりしますが、コーディングするのは人の手ですから、こんなミスもあるんだなとエピソードから勉強しましょう!

目次

【惰滅のサーバ】@tosiooooooo

驚いている女性

紅蓮禍

強くなれるモジュールを知った mod_proxy_balancerを連れて進め

負荷だらけのApacheに酔う こわばる心

1台構成では捌けないものがある それだけさ

Nagiosのアラートに空睨んでも

変わっていけるのは冗長構成だけ それだけさ

強くなれるモジュールを知った mod_proxy_balancerを連れて進め

どうしたって!

消せないアラートも 止まれないサーバも

ユーザのために強くなれるなら

ありがとう Connection timeoutよ

トラフィックに打ちのめされて負ける意味を知った

紅蓮のアラートよ咲き誇らないで! 運命を照らして

ApacheBenchの雑音が耳を刺す 戸惑う心

負荷分散だけじゃ守れないものがある? わかってるけど

ステージング環境で絡まる負荷テスト 成功して見える結果に感動

逸材のF5より 挑み続け咲いたLBが美しい

乱暴に敷き詰められた クソだらけのコードも

本気の僕だけに現れるから 乗り越えてみせるよ

簡単に片付けられた 通らなかった稟議も

無償のApacheに根を生やし このモジュールに宿ってる

人知れずローンチ 散りゆく結末

無情に破れた 悲鳴の風吹く

ユーザの笑う影 PMの泣き声

誰もが幸せを願ってる

ほんばんで!

消せないアラートも 止まれないサーバも

ユーザのために強くなれるなら

ありがとう Proxy timeoutよ

トラフィックに打ちのめされて負ける意味を知った

紅蓮のアラートよ咲き誇らないで! 運命を照らして

ステージングの負荷テストはうまくいったのだからそれで十分だろう

サーバ1台でApache+Tomcatで動くJavaアプリケーションを運用していたのですが、1台ではピークトラフィックを耐えることができなかったので、サーバを1台追加し、Apachemod_proxy_balancerを入れてLBにし、2台の冗長構成にすることにしました。

構成を組んだあと、ApacheBenchで負荷テストをして、その結果が問題なかったので負荷テストも問題なしとし、本番ローンチに進むことに。

死んだApacheが蘇ることはないのだ

本番ローンチした結果、パフォーマンス改善どころかむしろ以前より悪化しており、agiosの管理画面はアラートで紅蓮に染まりました。

殆どの人間がそうしている

ApacheBenchの結果ではなぜか全てのトラフィックを正常終了としていたのですが、実際には殆ど捌き切れておらず、負荷をかけているときにブラウザでアクセスするとレスポンスが返ってこず、最後に502 Gateway timeoutになる始末でした。

冗長構成が組めて、数回ApacheBenchを実行してその結果が良かっただけで満足してしまい、ログの確認や高負荷状態のサーバのモニタリングなど何も確認していなかったのがすべての元凶です。

また、そもそもApacheBenchでは1種類のリクエストしかテストできないので、負荷テストツールとしては不十分でした。Jmeterなど、現実に近い複数リクエストのトラフィックを起こすツールを使ってでの負荷テストじゃないと意味は薄いです。

なぜお前たちはそうしない

理由は一つ

私たちが異常者・・・ではなく怠惰だからです

引用元:https://qiita.com/tosiooooooo/items/1281dc2d3c71c29ab44d

単語メモ

メモを取っている男性
  • Apache(アパッチ):世界中で使用されているWebサーバーソフトウェア(HTTPサーバー)です。20年ほど前に開発されたWebサーバーソフトで、半数でApacheが稼働しています。
  • Tomcat(トムキャット):Javaプログラムを動かす時に必要なソフトウェアです。PHPやJavaなどの言語をWeb上で実行するために必要なソフトウェアとして制作されました。使用している開発者が多いオープンソースで初期費用を抑えられる魅力があります。保守サポートの充実があり、技術者が対応してくれるメリットもあります。
  • Apache+Tomcat:Web上のJavaプログラムのJava Servletを動かす時に必要なソフトのひとつです。Apacheで、HTMLや画像などの静的コンテンツの処理をさせ、Javaで作られた動的コンテンツをTomcatに処理させることで連携させるメリットがあります。
  • トラフィック(ピークトラフィック:最大のデータ量):トラフィックは、インターネット・LANなどの通信回線において一定時間内にネットワーク上で転送されるデータ量のことです。企業へアクセスした時に、通信回線の利用者が増えることを「トラフィックが増大した」と表現します。
  • ApacheBench(アパッチベンチ/略:ab):Webサーバーの性能を計測するためのコマンドです。Webサーバーの負荷がどれだけ耐えられるかを測定できるツールで標準で備えられています。
  • mod_proxy_balancer:Apacheで、リクエストを複数のサーバーを分散させます。
  • ロードバランサー(LB):負荷分散装置で、外部からのトラフィック(通信)を複数のサーバーに分散させる仕組みを提供するものです。サーバーへのアクセスを集約し、事前に設定したルールに従って各サーバーへアクセスを振り分けます。
  • 冗長構成:システム障害に備えて、予備の装置をバックアップとして設置する構成です。
  • ローンチ:新しいシステムやWebサービスをスタートすることです。
  • Nagios(ナギオス):健全な運用のために監視するツールです。直接実行するケース、リモート監視ProgramをNRPE(Nagios Remote Plugin Executer)で実行するケース(「そのサーバにしか置いていないプログラムや設定ファイルを使うような監視」)、監視プログラムがNSCA(Nagios Service Check Acceptor)を使って、Nagiosに通知する実行パターンがあります(「ログに特定の文字列が書き出されたらその時点でアラートを上げる」)。
  • JMeter:Apacheソフトウェアのオープンソース負荷検証ツールです。パフォーマンス計測ができます。
  • 502 Gateway timeout:無効なゲートウェイサーバーエラーです。サーバーが無効なレスポンスを受信した状態となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
よかったらシェアしてね!
目次
閉じる