PerlでWeb API

アルバイトでISUCONのようなことをしていた。

課題

Web APIの負荷が高く、高速化したい。

元の構成

Apache + CGI(Perl)

データはファイルから読み出し

やったこと

Nginx + Starman + Redis
  • データをすべて事前処理してRedisへ格納、インメモリ化

  • フレームワークは使わず、Plackの基本モジュールだけで作成

  • Unix Domain Socketを使う

  • Server::Starterで無停止デプロイ

  • AutoScaling

結果

[#/min]
Old 600
New 60000

abで何度も計測しながら、高速化できるところをいろいろ試していった。
ここまで速度を追求したのは初めてだったので、楽しかった。

AWS上で構築したので、既存のものから徐々に切り替えてもらった。
最終的にはすべて切り替わって、問題なく動いているみたい。

参考にしたもの

ISUCON参加したい

isucon.net