株式会社ミクシィの長野です。memcachedの連載も今回が最終回になります。前回までmemcachedに直接関連する話題を中心に書いてきましたが,
mixiでの事例
mixiではサービスの初期の頃からmemcachedを利用していました。memcachedはサイトへのアクセスの増加が,
サーバ構成と台数
mixiではデータベースやアプリケーションサーバ,
- CPU:Intel Pentium 4 2.
8GHz - Memory:4GB
- HDD:146GB SCSI
- OS:Linux
(x86_ 64)
このサーバは以前データベースサーバなどに利用されていたマシンでした。CPUの性能が上がりメモリの値段も下がっていくなかで,
memcachedのプロセス
1台のmemcachedサーバには,
/usr/bin/memcached -p 11211 -u nobody -m 3000 -c 30720
OSをx86_
また,
mixiではmemcachedに保存するデータは比較的小さいものが多いので,
memcachedの利用方法とクライアント
mixiのサービスでは200台規模のmemcachedのサーバを1つのpoolとして扱っています。1サーバあたり3GBの容量があるので,
アプリケーションレイヤーでのmemcachedの活用方法は,
Cache::Memcached::Fastでconnectionを維持する
Cache::Memcachedではmemcachedとの接続
ただし,
package Gihyo::Memcached;
use strict;
use warnings;
use Cache::Memcached::Fast;
my @server_list = qw/192.168.1.1:11211 192.168.1.1:11211/;
my $fast; ##オブジェクトの保持用
sub new {
my $self = bless {}, shift;
if ( !$fast ) {
$fast = Cache::Memcached::Fast->new({ servers => \@server_list });
}
$self->{_fast} = $fast;
return $self;
}
sub get {
my $self = shift;
$self->{_fast}->get(@_);
}
上記の例では,
共通データの扱いとrehash
mixiのhomeページにあるニュースのような全ユーザに共通するキャッシュデータや,
連載の第4回で少し触れましたが,
my $fast = Cache::Memcached::Fast->new({
max_failures => 3,
failure_timeout => 1
});
failure_
このほか,