LoginSignup
4
3

More than 5 years have passed since last update.

Kemalで100,000 rps の世界に近づく

Last updated at Posted at 2016-02-03

Kemal はCrystal-langで書かれた Sinatra likeな高速Webアプリケーションフレームワークです。
Githubに掲載されているベンチマーク結果を見ると、100,238 rps 出るとか。速いです。あまりにも高速なので、きちんとした計測ツールを使わないと正しい計測ができません。MacOS環境のabとかでは計測ツール側のオーバーヘッドが大きくて1000rps程度で測定限界に達してしまいます。

作者のsdogruyol氏に聞いたところ、「wrkを使え」ということだったので、brew install wrk で導入します。

計測用のserver.cr。Sinatraっぽい。

require "kemal"
logging false

get "/" do
  "ok"
end

ログは切ります。
kemalはshardsで導入します。以下 shard.yml

dependencies:
  kemal:
    github: sdogruyol/kemal

shards install で ok
releaseビルドしてproduction環境で起動。

% crystal build --release server.cr
% ./server -e production

top -o cpu でCPU使用率が高いプロセスがあれば停止しておきます。あとは wrk で測定です。

% wrk -c 128 -d 10 http://127.0.0.1:3000
Running 10s test @ http://127.0.0.1:3000
  2 threads and 128 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.55ms  371.64us  10.96ms   81.07%
    Req/Sec    41.33k     1.85k   45.73k    82.00%
  822074 requests in 10.00s, 69.78MB read
Requests/sec:  82181.62
Transfer/sec:      6.98MB

82181.62 rps。なかなかいい値が出ました :)
検証環境は Macbook Pro 13 (CPU 3.1 GHz Intel Core i7, RAM 16 GB 1867 MHz DDR3) です。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3