memcached(四)--重点参数说明

对上一章列出了全部参数。其中有60%是不怎么用到的。

这一章节选取出我觉得重要的参数出来细讲。

 

常用参数

  • p 指定端口
  指定tcp监听端口。默认是11211。可是当一台机器需要跑多个memcached实例的时候,或者网维只能特定某些端口可用,这个端口是一定修改的。
  举个例子,启用memcached并且监听11212端口:
memcached -p 11212
  • d 守护进程
  守护进程。 一定使用的参数。mc启动的时候,设置为守护进程。进程后台执行。不使用-d参数会影响其他操作:
上图所示,如果没有-d参数,当前终端就不能执行其他任务。ctrl+c退出当前memcached进程。

memcached -d
  • m 内存大小

  memcached程序存储数据所分配的内存大小。默认64,单位MB。生产环境都是改为2G,4G的样子的。如果这个参数过小,memcached就变得不健康,需要LRU淘汰一些数据。

memcached -m 32
memcached -m 64

  我设置了这个参数,怎么样才能看到差别呢?可以通过memcached的stats指令查看。memcached启动后, telnet/nc对应的ip端口,然后输入stats指令。

nc localhost 11212

(nc和telnet的差别可自行baidu or google)

看到一堆memcache的信息

其中“STAT limit_maxbytes” 一项就是设置这个参数对应的内存大小了。

下图是-m 32 的情况:

memcached(四)--重点参数说明_第1张图片

  根据memcached的存储模型,chunk存放item,比如说1个4K的chunk存放一个1K的item,这3K的空间就会浪费的了。分配内存的时候需要预留一部分空间。并且定时检查memcached的监控状况。例如,生产环境估计一个memcached需要1G空间。那么我创建memcached实例的时候可能就要-m 1500 甚至-m 2048。比起预估的值更大一点。

PS1:接下来的系列讲到memcached的内存分配模型会细讲chunks,item的关系。

PS2:关于memcached的监控状况也会在后续讲到。

调优参数

  • c 连接数
  连接数,默认1024。简单的说,增加这个参数值可以提高效率,但是增加了机器的负载;降低这个参数反之。
 
  • f slab增长因子
  slab中chunk大小的增长因子。 这个参数对于memcahched内存分配极其重要的参数。默认1.25,如果这个参数越大,slab数量越少;如果这个参数越小,slabs越多。
 
  怎样理解“增长”的意思??请参照下图:
 
memcached(四)--重点参数说明_第2张图片
 
  在memcached的模型中,分为多个slab,每个slab中的chunk用于存储数据。增长关系是这样子的:在第一个slab中,的chunk是SIZE;第二个slab中的chunk是SIZE*factor;第三个slab的chunk的是第二个的大小*factor。。。
 
 
  譬如说,当启动memcached的时候, 增长因子设置为1.5。设置32m内存。输出详细日志查看。
memcached -p 11212 -f 1.5 -vvv -u root -m 32

memcached(四)--重点参数说明_第3张图片

 
  而修改为3的话,内存分配情况又不同了。
memcached -p 11212 -f 3 -vvv -u root -m 32

memcached(四)--重点参数说明_第4张图片

  当f这个参数越大,每chunk的增长就越快。

 
  • n 一个chunk最小空间
   一个chunk的最小大小。默认值48。
 
  • L 大页内存分配
  通过这个参数, 可以提高性能。不过需要系统支持。
 
  • b backlog队列的大小。
  与socket通信相关。任务过多处理不完的情况下可坑设置这个参数。不过出现这种问题,一般都是调小数据的大小,或者增加memcached实例。
 
  • B 二进制协议
  memcached一开始只支持文本协议。后来支持了二进制协议。文本协议和二进制协议的区别,就和HTTP协议和TCP/UDP协议的区别一样。二进制协议的话更快,但是不能通过telnet/nc等命令到mc中找数据 。memcached默认是既支持文本协议又支持二进制协议的。另外memcached14.1x版本使用二进制协议有bug,请见release。
  https://code.google.com/p/memcached/wiki/BinaryProtocolRevamped#Request_header 有二进制协议的具体格式说明。
 
  • I slab大小
  通过这个参数, 设置一个slab的大小。同时,最后一个slab是只有一个chunk的。也是chunk的最大值。
 
举个例子:
memcached -p 11212 -f 1.25 -vvv -u root -m 64 -I 20480

memcached(四)--重点参数说明_第5张图片

 
 
 
 

你可能感兴趣的:(memcached)