IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

有关 MogileFS 怎么设置 memcached

扶凯 2012-03-11 22:17:29 累计浏览 1,617 次
本机暂存

在 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 以上.

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 分布式缓存系统 Memcached 入门 (累计阅读 16,243)
  2. 30分钟3300%性能提升――python+memcached网页优化小记 (累计阅读 13,742)
  3. 关于memcache分布式一致性hash (累计阅读 11,820)
  4. Facebook的实时Hadoop系统 (累计阅读 11,491)
  5. GFS, HDFS, Blob File System架构对比 (累计阅读 10,504)
  6. 奇怪的 Nginx 的 upstream timed out 引起响应 502 (累计阅读 9,965)
  7. Cacti 添加 Memcached 监控 (累计阅读 9,365)
  8. Redis和Memcached的区别 (累计阅读 8,071)
  9. php缓存与加速分析与汇总 (累计阅读 7,889)
  10. Using MySQL as a NoSQL (累计阅读 7,109)