首页 > 代码库 > memcached 实验篇

memcached 实验篇

      虽然在这个年代谈memcached 可能有点晚,大多数cached 应用都在redis 上面,下面将谈谈自已的一些看法,

本文档不做memcached 理论说明,只写实验数据及结果。


基本参数:可以参考下(其中带 # # 为应该掌握的参数)

-U  #  #<num> 监听的UDP端口(默认: 11211, 0表示不监听)
-s     #<file> 用于监听的UNIX套接字路径(禁用网络支持)
-a     #<mask> UNIX套接字访问掩码,八进制数字(默认:0700)
-l  #  #<ip_addr> 监听的IP地址。(默认:INADDR_ANY,所有地址)
-d  #  #作为守护进程来运行。
-r  #  #最大核心文件限制。
-u  #  #<username> 设定进程所属用户。(只有root用户可以使用这个参数)
-m  #  #<num> 单个数据项的最大可用内存,以MB为单位。(默认:64MB)
-M     #内存用光时报错。(不会删除数据)
-c  #  #<num> 最大并发连接数。(默认:1024)
-k     #锁定所有内存页。注意你可以锁定的内存上限。
       ##试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。
       ##(不是前面的 -u <username> 参数;在sh下,使用命令"ulimit -S -l NUM_KB"来设置。)
-v     #提示信息(在事件循环中打印错误/警告信息。)
-vv    #详细信息(还打印客户端命令/响应)
-vvv   #超详细信息(还打印内部状态的变化)
-h     #打印这个帮助信息并退出。
-i     #打印memcached和libevent的许可。
-P  #  #<file> 保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义。
-f     #<factor> 块大小增长因子。(默认:1.25)
-n     #<bytes> 分配给key+value+flags的最小空间(默认:48)
-L     #尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率。
       #为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块。
-D     #<char> 使用 <char> 作为前缀和ID的分隔符。
       #这个用于按前缀获得状态报告。默认是":"(冒号)。
       #如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启。
-t  #  #<num> 使用的线程数(默认:4)
-R  #  #每个连接可处理的最大请求数。
-x  #  #repcached 用来指定Master IP 的配置 : -x <IP>
-X  #  #repcached 用来指定Master PORT 的配置:-X <PORT>

实现结果:

实现采用两台机器做 主-主、主-从、三台机器、抓包分析获得:

######配置
#主1  memcached -d -v -m 100 -u root -l 192.168.1.253 -p 12000 -c 1024 -x 192.168.1.254 -X 11212 -P /tmp/memcached.pid
#从2  memcached -d -v -m 100 -u root -l 192.168.1.254 -p 12001 -c 1024 -P /tmp/memcached.pid -x 192.168.1.253 -X 11212

##结论1
# repcache-memcached 双主从中步时,两台可同时进行 get , set 等操作

##结论2
# 当一台主意外停掉memcached 时(实验中采用 kill 掉) ,再次启动memcached 时会在另一台内存中copy 一份实时数据到自已内存中 -- 重要

##结论3
# 如果不指定 -x -X 参数的memcached 停掉时,再次启动时 [不会] 在其它memcached 中复制数据到内存中

##结论4
#                 192.168.1.253(12000)[-x 192.168.1.254 -X 11212] <--------> 192.168.1.254(12001)[-x 192.168.1.253 -X 11212]
#						|                      											|
#                       |                                                               |
#                       |                                                               |
#                     192.168.1.243(12002)[ -x 192.168.1.253 -X 11212 或者 -x 192.168.1.254 -X 11212] 都不成都
#
# 实验结论: repcached 只能做两台复制 只能 主-主模式 或者 主-从模式
#            repcached 不能单主-双从模式, 不能双主多重模式

##结论5
# repcached-memcached 数据同步底层使用TCP长链接发送数据,数据处于明文状态

##结论6
# repcached-memcached 从在启动时, 从首先利用配置中的 -x -X 指定的IP,端口与主建立TCP持久连接,
# 链接建立完成后 主开始发送 内存数据给从,一条发送一条内存数据,
# 主最后一条发送完成标志给从,告诉从数据已经发送完成,从初始化内存数据并开始对处提供服务.

##结论7
# 利用iptables 模拟断网过程
# 当断网到恢复状态时,双主环境可以重新同步内存数据
# 当断网到恢复状态时,双从环境下,只有从同步主中内存数据而主并不会同步从中内存数据(完全靠 -x -X 来指定连立新的TCP连接来同步)
# 同步后恢复正常状态使用



memcached 实验篇