memcachedの活用と運用 実践編

第1回 memcachedの起動オプションを把握しよう

この記事を読むのに必要な時間:およそ 6 分

はじめに

株式会社ライブドア 開発部 長野です。ライブドアに入社する以前は株式会社ミクシィにてmixiの運用に携わっておりました。また,2年前の2008年には,このgihyo.jp上において,memcachedの基本的な使い方やミクシィでの活用方法について連載させて頂いていました。今回の連載では前回から2年間の間にあったmemcachedのアップデートに関することや,大規模なWebサイトでのmemcachedの運用,実践的な活用方法について解説していきます。

memcachedとは

memcachedは,高性能な分散メモリキャッシュサーバです。データベースへの問い合わせ結果を一時的にmemcachedへキャッシュすることで,データベースへのアクセス回数を減らし,動的なWebアプリケーションの高速化やスケーラビリティの向上を実現できます。memcachedを利用しているWebサイト・サービスとしてはlivedoorやmixi,はてな,Facebook,Twitterなどが挙げられ,また最近盛り上がりを見せるソーシャルアプリケーションでも,サービスの性能を向上させる重要な役割を果たしています。

memcachedは元々,LiveJournalを運営していたDanga Interactive社においてBrad Fitzpatrick氏が中心となって開発されたオープンソースソフトウェアですが,現在ではさまざまな企業からエンジニアが参加するコミュニティで開発が続けられています。

memcachedの概要や基本的な利用方法については以前の連載memcachedを知り尽くすをご覧ください。

メジャーアップデートしたmemcached

前回の連載時,2008年7月のmemcachedの最新バージョンは1.2.5でしたが,2010年8月現在のmemcahedの最新バージョンは1.4.5となり,1.2系から1.4系へのメジャーアップデートが行われています。

 主なmemcachedのバージョンとリリース時期

バージョン年月
1.2.52008年4月
1.2.62008年7月
1.3.2(開発バージョン)2009年4月
1.2.8(1.2系最終アップデート)2009年4月
1.4.02009年7月
1.4.12009年8月
1.4.42009年11月
1.4.52010年4月

1.4系で新しく追加された主な機能しては

  • バイナリプロトコルの導入
  • マルチスレッドの標準化
  • 統計の強化

などが上げられます。この1.4系の機能の詳細については前坂徹氏の連載memcached 1.4の到来が参考となります。ここではバージョン1.2.5と最新の1.4.5の起動オプションを比較しながら,新しく追加された機能や実際の運用で用いられる起動オプションについて説明します。

1.2系と1.4系の起動オプションの違い

まず,memcachedの起動オプションの一覧(ヘルプ)を確認しましょう。memcachedのヘルプを出力するには,⁠-h」オプションを使います。

$ memcached -h
memcached 1.x.x
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 0, off)
(以下省略)

ヘルプの1行目にバージョンが出力され,2行目以降がオプションとその説明です。では1.2.5と1.4.5のヘルプを表示して比較します。

1.2.5のオプション一覧

memcached 1.2.5
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 0, off)
-s >file>     unix socket path to listen on (disables network support)
-a <mask>     access mask for unix socket, in octal (default 0700)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes, default is 64 MB
-M            return error on memory exhausted (rather than removing items)
-c <num>      max simultaneous connections, default is 1024
-k            lock down all paged memory.  Note that there is a
             limit on how much memory you may lock.  Trying to
             allocate more than that would fail, so be sure you
             set the limit correctly for the user you started
             the daemon with (not for -u <username> user;
             under sh this is done with 'ulimit -S -l NUM_KB').
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print memcached and libevent license
-b            run a managed instanced (mnemonic: buckets)
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor, default 1.25
-n <bytes>    minimum space allocated for key+value+flags, default 48

1.4.5のオプション一覧

memcached 1.4.5
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 11211, 0 is off)
-s <file>     UNIX socket path to listen on (disables network support)
(中略)
-vvv          extremely verbose (also print internal state transitions)
-h            print this help and exit
-i            print memcached and libevent license
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor (default: 1.25)
-n <bytes>    minimum space allocated for key+value+flags (default: 48)
-L            Try to use large memory pages (if available). Increasing
             the memory page size could reduce the number of TLB misses
             and improve the performance. In order to get large pages
             from the OS, memcached will allocate the total item-cache
             in one large chunk.
-D <char>     Use <char> as the delimiter between key prefixes and IDs.
             This is used for per-prefix stats reporting. The default is
             ":" (colon). If this option is specified, stats collection
             is turned on automatically; if not, then it may be turned on
             by sending the "stats detail on" command to the server.
-t <num>      number of threads to use (default: 4)
-R            Maximum number of requests per event, limits the number of
             requests process for a given connection to prevent
             starvation (default: 20)
-C            Disable use of CAS
-b            Set the backlog queue limit (default: 1024)
-B            Binding protocol - one of ascii, binary, or auto (default)
-I            Override the size of each slab page. Adjusts max item size
             (default: 1mb, min: 1k, max: 128m)

memcached 1.2.5がオプションが20個あるのに対して,1.4.5では28個と1.5倍近くに増えています。追加されたオプションは1.4系でサポートされたマルチスレッドや性能に関する設定や,統計,バイナリプトココルに関するものが多くを占めています。

 追加されたオプション

オプション名内容
-vvv詳細ログモードが1段階追加
-Lメモリ確保にラージページを利用する
-Dキャッシュのキーのうちネームスペースを分ける文字列。ネームスペースごとに詳細な統計が取得できる
-tスレッド数
-R1度に行うリクエストの処理の上限値
-CCASを無効にする
-b接続のキュー数
-Bテキスト・バイナリプロトコルの判定
-I最大キャッシュオブジェクトサイズ

著者プロフィール

長野雅広(ながの まさひろ)

株式会社ライブドア 開発部 システム管理グループ所属。最近はリソース監視ツール「CloudForecast」を開発しながら,ライドドアのさまざまなサービスに導入を行い,スケーラビリティの向上を目指している。

URLhttp://blog.nomadscafe.jp/

コメント

コメントの記入