Scribble at 2022-10-19 16:36:48 Last modified: 2022-10-20 07:11:45

添付画像

或るキャンペーンのサイトで使う EC2 のインスタンスについては、そろそろキャンペーンが始まろうとしているので、開始から暫くのサーバ負荷を考慮して幾つかの変更を実施した。

まず従来のインスタンスは、t3.medium であった。これでも仮想 CPU が2個と 4 GB のメモリがあるため、スペックとして低いわけでもない。しかも、このインスタンスはオリジン・サーバであって、大半のリクエストは CloudFront でキャッシュされた静的コンテンツのレスポンスで対応できるから、オリジンの EC2 インスタンスに膨大な数のリクエストが集中するという予測はしていない。昨年度の年末に実施した同じキャンペーンでも、1時間あたりに約15万件というリクエストを受けたが、その大半は CloudFront が捌いたので、その当時のオリジン・サーバは Lightsail のインスタンスだったのだが、メトリクスのグラフでは値の変化が読み取れないほどの影響しかなかった。しかし、Lightsail で利用したインスタンスは月額料金が固定の $$$80 ドルもかかる、それなりにハイ・スペックな計算資源(仮想 CPU が4個と 16 GB のメモリ)を利用していたため、それに比べたら現行のサーバはスペックがそれなりに劣る。オリジン・サーバへのアクセスはフォームの JavaScript から Ajax で POST 送信されたデータを Amazon RDS の MariaDB インスタンスへ投げる PHP の実行プロセスと確認メールの送信だけだが、それでも数が多くなれば負荷が上がるのは自明だ。

というわけで、さきほどインスタンスをいったん停止して、インスタンスタイプを m5.4xlarge へと変更した。上記のグラフでは中段の EC2 に関するメトリクスで左端の CPU 使用率のグラフからわかるとおり、14:40 くらいに実施したプランの変更で CPU 使用率が減っていることが分かるだろう。なお、m5.4xlarge というプランは Lightsail の月額 $80 のインスタンスよりもさらに強力なスペック(仮想 CPU が16個で 64 GB のメモリがある)で、1時間あたりのコストは $0.992 だ。つまり、1日で $23.808 だから、これを4日ほど使うと $95.232 となり、為替レートを高めに $1 = 150円として想定すれば4日で15,000円弱という計算になる。元のスペックのインスタンスにかかるコストと比較すれば、1ヵ月分の利用料金と同額を4日で使うこととなる。あまりホイホイと使うと、先に見積もりとして出してあるサーバの予算を超えてしまってはいけないので、慎重にやらないといけない。もっとも、クライアントにしてみれば、追加でこちらがサーバの費用を請求するほうがサイトが落ちるよりはいいだろう。

あらためてクラウド・サービスの使い勝手には感心させられる。インスタンスのプランを変更すると IP アドレスは変わってしまうのだが、AWS では Elastic IP という自由にアタッチできるグローバル IP アドレスが使えるため、インスタンスの IP アドレスが変わっても Elastic IP をアタッチしておけば、同じグローバル IP アドレスでアクセスし続けられる。

※ それはそうと、地の文でドルマークを使うと KaTeX が数式と解釈してしまうようだ。$$$ のようにエスケープするか(ドルマークを三つ並べると真ん中のドルマークだけが KaTeX で扱われる記号として表示されるだけなので、これは正確にはエスケープとは言えない)、上記のように全角文字のドルマークを使うしかない。

それから追記として、Amazon RDS for MariaDB はキャンペーン開始にあたってインスタンスタイプをスケール・アップしておかなくてもいいのかという点は、ひとまずスケール・アップしないことにしている。理由として、昨年と同じ程度のアクセスであれば t3.micro(仮想 CPU 1個とメモリ 1 GB)でも十分にクエリを処理できることが分かっているからだ。実際、Lightsail のデータベースも(高可用性タイプという違いはあったが)t3.micro と殆ど同じスペックで運用していたけれど、このように貧弱なスペックのデータベースですら、全くバーストもせずに稼働していたのである。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook