kavo’s diary

備忘録

ISUCON8予選問題をクラウドサービス上で動かしてみる

概要

Alibaba Cloud上でISUCON8予選問題を動かした。やり方のメモ。

Ansibleでプロビジョニング

公式のをカスタムしてあって練習に使いやすそうなリポジトリを見つけた。ありがたく使わせて頂く。

構成1:Ansible実行サーバもまとめて1サーバでやってみる(失敗)

CentOS VMインスタンスを1つ立て、自身にプロビジョニングさせたら全部1VMで済むのでは?と思いやってみた。(Windowsなので自機にansible実行環境を作るのも面倒だった)--connection=localを使う。接続も考えなくてよくて楽かも。

しかし、フォルダ同期をする箇所でrsyncが Permission denied (13)を吐いてしまい、色々試したがこれが解消できなかったため諦めた。

構成2:Ansible実行サーバと、プロビジョニング対象1サーバでやってみる(成功)

これはAnsibleがエラーを吐くことなく終了した。

手順

今回書いたdevelopmentは下記の通り(VM-BのプライベートIPを書いた。例にはroot@があったが、なくてもいけるようである。)

[portal_web]
172.24.xx.xx

[bench]
172.24.xx.xx

[webapp1]
172.24.xx.xx

ちゃんとプロビジョニングできたかの確認

まずVM-Bにisuconユーザでログインする。(isucon/isuconでログインできるかと思ったができなかったので、鍵認証で。)

Webアプリ

Webアプリ「Torb」のサービスステータスを確認する。

$ systemctl | grep torb
torb.go.service  loaded    active running   isucon8 qualifier webapp in go

ブラウザからBのパブリックIPアドレスにアクセスしたが、接続できない。 curl localhostするとページが取れるので、アクセス制御の問題のようだ。 ECSのセキュリティグループ>ルール設定>ルールのクリック設定から、自端末のIPの接続を許可する。 f:id:kavohtn:20190625170021p:plain

これでブラウザからWebアプリにアクセスできた。 f:id:kavohtn:20190625170430p:plain

ベンチマーク

provisioning/README.mdの手順で、1発で動いた。スコアは932。

Webアプリサーバスペック

  • Alibaba Cloud ECS
  • CentOS 7.5 64 ビット
  • ecs.t5-lc1m2.large 2 vCPU 4 GiB 基準パフォーマンス10 % Intel Xeon CPU 2.5 GHz
  • イントラネット帯域 0.4 Gbps
  • パケット転送速度 100,000 PPS

ベンチ実行時のモニタリングはこんな感じ。 f:id:kavohtn:20190625172904p:plain

このあと

動かせる環境が手に入ったので、改善を色々試してみたい。

余談:SSHクライアントツール

今までTeraTermを使っていたが、RLoginというツールがあることを知った。使いやすくて良い。