session の保存方法(session_store)の違いによるパフォーマンス(処理速度)テスト
cookie (default), ActiveRecord (:active_record_store), memcached (:mem_cache_store) を比較した。
なお、セッション新規作成時(record insert)と、既にあるセッションでアクセスする時も比較した。
環境
findテストと同じですが、
- App Server
- Amazon EC2: Large Instance
- Apache: デフォルト設定
- Ruby: 1.8.7
- Passenger
- RailsEnv: production
- RailsMaxPoolSize: 30
- RailsPoolIdleTime: 1200
- Rails: 2.3.8
- Request 兼 DB Server
# セッション新規作成 $ ab -c 100 -t 5 http://ec2-***.amazonaws.com/session_check # 既にあるセッションでアクセス $ ab -c 100 -t 5 -C '_session_id=****' http://ec2-***.amazonaws.com/session_check
結果
off | cookie (ins) | cookie (slct) | activerecord (ins) | activerecord (slct) | memcache (ins) | memcache (slct) | |
---|---|---|---|---|---|---|---|
Complete requests | 2128.7 | 2026.6 | 1981.2 | 1025.6 | 1128.2 | 1600.7 | 1457.8 |
Requests per second | 425.463 | 404.809 | 395.485 | 204.838 | 225.427 | 319.79 | 291.229 |
- off: セッション無し
- (ins): セッション新規作成時
- (slct): 既にあるセッションでアクセス時
cookie > memcache > activerecord の順番は予想通りだけど、
思った以上に activerecord 遅い。。