手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

MogileFS 设置 Memcached

[日期:2012-03-17] 来源:php-oa.com  作者:php-oa [字体: ]

在 MogileFS 中是不是要使用 Memcached 一直有不同的看法.在 MogileFS 中其实是实现在了对Memcached 的操作,当有被经常请求的路径时,在 tracker 中支持 memcached 来加速 get_paths 的请求,并减少读取数据库.

在 MogileFS 中有个 doc 文件,以下就是这个作者的认为:

虽然多年以来一直认为在 MogileFS 内部来实现支持是比较不好的做法,但还是实现了这个操作.但我仍然认为如果可以的话,给这个当低层应用,然后在你自己的应用中来做会更加好.

真的,你应该在你的应用程序中来缓存 get_paths 的请求,来避免额外连接 tracker 的开销/

也就是说,你应该做的:

1)   app <-> memcache

使用应用连接 memcache ,而不是

2)   app <-> tracker <-> memcache

应用先连接 tracker ,然后 tracker 在连接 memcache .

3)   app <-> tracker <-> db.
当然,如果 1) 的方案实在有不能实现,就才有必要使用 2) 的方案.当然这会比起方案 3) 好点

现在教你怎么样来设置 MogileFS 来支持 memcached:

要使 MogileFS 支持 memcached ,有几种方法,比如直接 telnet 来告诉你的 tracker,也可以直接使用 mogadm settings 来设置,还可以写配置文件.

 
1
2
set_server_setting key=memcache_servers&value=127.0.0.1:11211
    

(如果你有多个,可以给其的值使用逗号分成列表)

有个更加方便的设置方法,不需要 telnet ,直接使用 mogadm 来设置.

 
1
mogadm settings set memcache_servers 127.0.0.1:11211

使用 Memcached

以后使用 get_paths 之类来连接 MogileFS 时,需要加 noverify=1 的参数(即要使用这个,需要 memcached 可以工作的,并可以不查询数据)这时将使用 Memcache.

另外,如果上面设置 Memcached 的支持,你使用 memcached 来查看并没有生效的话,可能是因为你没有安装 Cache::Memcached 这个模块(这个功能害我直接读源码才发现之所以我原来不能生效的原因是因为这个模块)

 
1
cpanm Cache::Memcached

如果是由于这个模块没有安装不能生效.你安装后,还需要重起 track 才行.因为这时才会重新加载 MogileFS::Config 这个来加载这个模块和配置.
现在你可以 telnet 到 memcached 的端口使用 stats 来查看结果了.象下面这样,当 cmd_get  和 cmd_set 开始显示变化就支持了. get_hits 是显示从 memcache 中命中的内容.

 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
stats
STAT pid 12624
STAT uptime 2536
STAT time 1331322477
STAT version 1.4.5
STAT pointer_size 64
STAT rusage_user 12.428110
STAT rusage_system 25.463129
STAT curr_connections 30
STAT total_connections 33
STAT connection_structures 31
STAT cmd_get 909649
STAT cmd_set 355118
STAT cmd_flush 0
STAT get_hits 243718
STAT get_misses 665931
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 55760964
STAT bytes_written 21107808
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 38064274
STAT curr_items 355046
STAT total_items 355089
STAT evictions 0
STAT reclaimed 0
END

注:要在 MogileFS 中使用 Memcached 的功能,建议使用 2.58 以上的版本.在这之前的版本有个 BUG.就是同一个 key ,重复上传会上传到不同的硬盘.这时因为 memcached 中的 mogdevids 这时没有更新,所以会出现  404 的现象,但实际文件是存在的.所以记得一定要到 2.58 以上.

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款