Web + Life Hack

〜True But Useless〜

【サーバー】 memchachedについて調べました。

memcashedとは

 ・memcachedとはソフトウェア
 ・memcachedとはmixiはてなFacebook,Vox,LiveJournalで使われている。
 ・memcachedとは非常に高速に動作する分散キャッシュサーバ。

memcashedの特徴
 ・memcachedとはシンプルなプロトコル
  シンプルな行ベースのプロトコル
 ・memcachedとはlibeventによるイベントハンドリング
 ・memcachedとは内蔵のオンメモリストレージ
  保存したデータは、memcached内蔵のメモリストレージに貯められる。
  メモリが指定された容量に達すると,LRUに基づいて利用されないキャッシュから自動的に削除。
 ・memcachedとはmemcached同士での通信は行わない分散方式
  全てクライアント側のライブラリ内の分散アルゴリズムが振り分ける。
  
memcashedのインストール
 ・コマンド
  $ sudo yum install libevent libevent-devel
  $ wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
  $ tar zxf memcached-1.2.5.tar.gz
  $ cd memcached-1.2.5
  $ ./configure
  $ make
  $ sudo make install

memcashedの起動
 ・通常起動
  $ /usr/local/bin/memcached -p 11211 -m 64m -vv
 ・バックグラウンドでの起動
  $ /usr/local/bin/memcached -h
  *「/usr/local/bin/」は環境に合わせる。

 

memcashedに関する詳細情報
 参考サイト(http://gihyo.jp/dev/feature/01/memcached

 参考サイト(http://gihyo.jp/dev/feature/01/memcached_advanced

 参考サイト(http://nippondanji.blogspot.jp/2008/05/memcached_28.html

 参考サイト(http://taka512.hatenablog.com/entry/20100324/1269428213

 参考サイト(http://www.publickey1.jp/blog/10/miximemcached.html

    参考サイト(http://www.slideshare.net/cyberxengineer/memcached-8028900

 

memcachedはデフォルトでSlab Allocatorというメカニズムを使ってる

(メモリの確保・管理が容易)

メリット

・固定長の固まりに分けて,フラグメンテーション問題を完全に克服する。

・一度確保したメモリは解放せず,常にchunkを再利用します(「確保したメモリは再利用する」)

 

Slab Allocationの仕組み

①確保したメモリをさまざまなサイズの固まり(chunk)に分ける。

②同じサイズの固まりをクラス(chunkの集合,またはchunkのサイズを定めるクラス)に整理する。

 

Slab Allocatorの主な用語

①Page

デフォルトで1MB確保され,Slabに割り当てられるメモリ領域。

Slabに割り当てられた後に,slabのサイズに応じたchunkに切り分けられる。

②Chunk

レコードをキャッシュするためのメモリ領域。

③Slab Class

特定のサイズのchunkをまとめるクラス。

 

Slab Allocatorの弱点

・固定長なメモリ確保のアプローチにより,確保したメモリを有効活用できないということです。
  →必要領域が固定長のメモリよりも少ない場合、無駄が発生する。

Slab Allocatorの弱点の対策

・クライアントが送ってくるデータの共通サイズがあらかじめ解っている,もしくは同じサイズのデータしかキャッシュしないユースケースであれば,そのサイズに適したクラスのリストを使い,無駄を抑えることが可能ということです。
 →将来の課題中
 →Growth Factorという因子を指定して(-f オプション),slab間のサイズをある程度制御することが現実的。
 
問題
DBマスターの方でmemcached-toolコマンドが使えない、yumコマンドが使えないといった問題が発生している。
yumはそもそもlinuxサーバーで有効であって、ubuntuサーバーでは使えない。
 memcached-toolはgithubに公開されていたため、
 git clone https://github.com/memcached/memcached.gitで取得したが、
 もともとはperlスクリプトライブラリのために別途、設定が必要なため、
 memcachedのstatsコマンドで良い。
memcached-toolはmemcachedのstatsコマンドを見やすくしただけ。)
 
memcached以外の高速化方法
DeNAの場合
 
memcachedの問題解決方法
 
memcachedに必要な設定など
 

告知

現在、私はmoreiという団体を設立し「Sweet Swift」という女性限定iOSプログラミング講座を開催しております。

 

アプリが作りたいと考えている方やプログラミング始めたいという方が

おりましたらぜひお誘いの上、ご参加ください!

(女性の方限定となります。ご了承ください。)

 

直近の開催日時などは以下のとおりです。

10/1(木) 20:00〜22:30@Viibar様(目黒駅近く)

morei.doorkeeper.jp

10/17(土) 14:00〜16:30@Lib様(渋谷駅近く)

morei.doorkeeper.jp

11/06(金) 18:45〜21:00@ファンコミュニケーションズ様(渋谷駅近く)

morei.doorkeeper.jp

11/18(水) 20:00〜22:30@メンバーズキャリア様(月島駅近く)

morei.doorkeeper.jp

12/3(木) 20:00〜22:30@ナイル株式会社様(五反田駅近く)

morei.doorkeeper.jp

 

アプリを学びつつ、Web系会社の雰囲気も感じられる機会になるかと思いますので

ご参加お待ちしております!