Scribble at 2022-09-13 10:35:37 Last modified: 2022-09-13 12:18:04

添付画像

或る受託案件で AWS を利用している。この話はどちらのサイトでも何度か書いているのだが、先週の末にデプロイメントを変更して ClourFront から「後ろ」にあたる Lightsail で配置していたインスタンスやデータベースや ELB をすべて破棄して、EC2 だけを CloudFront のオリジン・サーバとして付け替えたという話までをしている。それから数日が経過して、CloudWatch のダッシュボードを見ている限りでは安定した運用を続けられている。

グラフでお分かりのように昨日の14時頃に CPU 使用率などのグラフが soared しているのだが(このていどでは spike とは言わない)、これはオリジン・サーバに対してパフォーマンスを検査するために、さくらインターネットで運用しているサーバから ab (apache bench) というテスト用のプログラムを使って、わざと大量のリクエストを送信したからだ。同時に1,000リクエスト、合計で10,000リクエストを送出して、サーバがどのていどの処理能力をもつか確かめたわけである。このようなリクエストを CloudFront が対応する公の FQDN に向かって送出しても、オリジン・サーバのパフォーマンスは測れない。よって、このリクエストは AWS がオリジン・サーバに割り当てた「パブリック IPv4 DNS」という FQDN に対して投げる。具体的には、

ec2-X-X-X-X.ap-northeast-3.compute.amazonaws.com

という FQDN が EC2 のインスタンスに割り当てられており、"X-X-X-X" にはパブリック IPv4 の IP アドレスが(ピリオドではなくハイフンを区切りとして)入る。"ap-northeast-3" というのは EC2 インスタンスを作成したリージョンであり、Asia Pacific northeast 3rd regionとは「大阪リージョン」のことだ。

「CPU 使用率」のグラフでお分かりのとおり、それだけの負荷をかけても、せいぜい CPU 使用率は 1% ていどしか使われていない。おおよそウェブ・ページを1ページ表示するのに必要なリクエスト数は50ていど(HTML のソース・ファイルだけではなく、画像ファイル1個、JavaScript ファイル1個も各々で一つのリクエストとして加算するからだ)として考えると、同時に1,000ということは20ユーザが同時にサーバへアクセスしたことになる。それが10回繰り返されるので、200ユーザが一斉にアクセスしてきたと想定したらどうなるかという話になろう(もちろん実際にはこれほど単純ではない)。こういう状況を想定しても、せいぜい CPU の使用率は 1% ていどまでしか上がらないし、処理に要したのも全体で約16秒、平均して1秒で600リクエストを処理できていたから、同時に1,000リクエストを送っている状況だと、やや遅延は起きていたと思うが、それでもユーザが何秒も待たされるような結果ではない。しかも、オリジン・サーバへ直にこれだけのリクエストが届くことはなく、大多数のリクエストは CDN であるCloudFront がレスポンスを返すのだから、前回と同じていどのアクセス数であれば、現状のスペックでキャンペーンが始まっても問題はない。ちなみに、前回のキャンペーンではユーザが情報をフォームから登録した合計数が14,000ほどであった、もちろんキャンペーンを開始した最初の頃にアクセスが偏っているとは言え、初日でもせいぜい1,000ていどの投稿だったから、1時間に多くても200くらい、つまり毎分で3ユーザがアクセスするくらいの負荷に耐えられたらいいわけである。こんなていどのアクセスなら、月額数百円のレンタル・サーバでも対応できるだろう。

ということで、またどうやらキャンペーンが今年も始まるようなので、いまのところは EC2 しか配置していないから、来週の連休中にでもデータベース・サーバを追加しておく予定だ。Lightsail とは違って AWS 本体のサービスだと、色々なデータベースが選べる。もちろん開発する下請けの技術者が慣れていれば、単に投稿された情報を consecutive に積み上げていくだけの役割なのだから、relational である必要などまるでない。よって、Amazon Dynamo を SDK(API)で使ってもらってもいいが、まぁたいていの場合には MySQL 互換のデータベースを選ぶのが穏当ではある。ということで、Amazon RDS の MariaDB タイプを使うことになるだろう。さきほど見積もりを出してみると、公開用に選んだ 2 CPU + 1 GB RAM の最小構成のスペックでストレージも最小の 20 GB だと、おおよそ月額利用料金が $21 つまり3,000円くらいになる。やはり為替の影響がでかい。

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

冒頭に戻る


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

Twitter Facebook