LoginSignup
0
0

More than 3 years have passed since last update.

php で、KVS をいろいろ比較してみた。( apc vs memcached vs file vs Oracle )

Last updated at Posted at 2020-04-27

やってみたこと

php でキャッシングをするにあたって、いろんな方式でのパフォーマンスをチェックしてみました。

エントリー

やってみたのは、次の4種類。

  1. apc
    php 内部のキャッシュ。再起動すると消えるし、複数のサーバーで共有もできないけど早い。

  2. memcached
    KVS といえば。今回はローカルサーバー上の memcached サーバーに接続しています。
    接続後の読み書き部分のみを計測しています。

  3. file
    普通のファイル。/tmp/kvs/ というフォルダと、/dev/shm/kvs/ に、キー名称でファイルを作ってみました。
    物理ディレクトリと、共有メモリのディレクトリです。
    一回の読み込み(又は書き込み)で、ファイルのオープン、読み込み(又は書き込み)、クローズまでを行いました。

  4. Oralce
    あて馬です。
    ただでさえ遅いデータベース。さらにこれ以外が全部ローカルサーバーなのに、これだけリモートという時点でさらに不利。
    値は、VARCHAR2 の列に格納しています。read は、SELECT 文で。write は、MERGE で行いました。

結果( 本番サーバー )

本番サーバーで、それぞれ 10,000 回ループして時間を計測してみました。
10,000回実行時の時間を取得しているので、実際の時間は下記の 10,000分の1 です。

方法 write(1byte) read(1byte) write(4K) read(4K)
apc 21 ms 6 ms 49 ms 8 ms
memcached 266 ms 416 ms 377 ms 412 ms
file(/dev/shm/kvs/) 93 ms 83 ms 92 ms 83 ms
file(/tmp/kvs/) 197 ms 88 ms 197 ms 87 ms
Oralce 5,040 ms 1,927 ms 7,028 ms 3,038 ms

まとめ

結果ですが、やはり apc は早い。ダントツですね。

memcached が思ったより遅い。
ネットの他の計測では、apc の 2 倍ぐらいが多かったのに。環境依存?

file アクセスは、物理ディレクトリと、メモリでけっこう違うと思っていたらあんまり変わらなかったのは意外。
特に、読み込みはキャッシュが効くのか誤差の範囲内。

データベースは遅いと思ってたけど、ここまで差があるとは。
それでも 1 回のアクセスに 1ms もかかってないんですから、早いっちゃ早いですね。

あと、1byte でも、4K バイトでも結果があんまり変わらないのも面白いですね。

追加結果( 試験サーバー )

本番サーバーだとキャッシュとかの関係なのか、ちょっと直感と反する結果になっていたので、試験用の VM 上のサーバーでも同じものを動かしてみました。
こちらは、CPU, HDD, Memory どれも本番サーバーよりしょぼいです。

方法 write(1byte) read(1byte) write(4K) read(4K)
apc 9 ms 5 ms 107 ms 7 ms
memcached 1,059 ms 1,694 ms 1,435 ms 1,820 ms
file(/tmp/kvs/) 3,816 ms 293 ms 4,608 ms 307 ms
file(/dev/shm/kvs/) 326 ms 247 ms 401 ms 272 ms
Oralce 9,399 ms 6,243 ms 12,242 ms 9,485 ms

追加結果まとめ

試験サーバーの方が、どちらかというと直感にあってる感じになりました。

最近のサーバーの write キャッシュとかってすごいんだなぁと改めて実感。
ただ、memcached はやっぱり、そんなに早くなくて、apc は早い。

当たり前ですが、サーバー環境によって結果は変わるもんですね。

0
0
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
0
0