四、memcached启动参数详细介绍

【转载自】http://blog.csdn.net/luotuo44/article/details/42672913

一、常用命令行参数详解:

-p <num>      /*监听的TCP端口(默认: 11211),该选项的参数赋值给settings.port。*/
-U <num>      /*监听的UDP端口(默认: 11211, 0表示不监听),该选项的参数赋值给settings.udpport。*/
-s <file>     /*用于监听的UNIX套接字路径(默认不使用unix socket),该选项的参数赋值给settings.socketpath。*/
-a <mask>     /*UNIX套接字访问掩码,八进制数字(默认:0700),该选项的参数赋值给settings.access。*/
-l <ip_addr>  /*监听的IP地址。(默认:INADDR_ANY,所有地址),如果想指定多个IP地址,那么该选项的参数可以由多个ip组成,ip之间用逗号分隔,
                也可以多次使用这个选项,此时端口应该尾随ip而不是单独用-p选项指定。
			    例如-l 127.0.0.1:8888,192.168.1.112:9999 或者 -l 127.0.0.1:8888 -l 192.168.1.112:9999
				该选项参数将赋值给settings.inter*/
-d            /*作为守护进程来运行。*/
-r            /*最大核心文件限制(将core文件大小设置为不受限制)。*/
-u <username> /*设定进程所属用户。(只有root用户可以使用这个参数)。*/
-m <num>      /*所有slab class可用内存的上限,以MB为单位。(默认:64MB),该参数赋值给settings.maxbytes。
              	译者注:也就是分配给该memcached实例的内存大小。*/
-M            /*内存用光时报错。(不会删除数据),如果使用本选项那么将关闭LRU功能。当然关闭LRU不代表不能存储新数据。
                如果memcached里面存有过期失效的item,那么就可以存储新数据。否则将无法存储。该选项将settings.evict_to_free赋值为0。*/
-c <num>      /*最大并发连接数。(默认:1024),该选项参数赋值给settings.maxconns。*/
-k            /*锁定所有内存页。注意你可以锁定的内存上限。
                试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。
                (不是前面的 -u <username> 参数;在sh下,使用命令"ulimit -S -l NUM_KB"来设置。)*/
-v            /*提示信息(在事件循环中打印错误/警告信息.该选项会增加settings.verbose的值*/
-vv           /*详细信息(还打印客户端命令/响应),该选项会增加settings.verbose的值*/
-vvv          /*超详细信息(还打印内部状态的变化),该选项会增加settings.verbose的值*/
-h            /*打印这个帮助信息并退出。*/
-i            /*打印memcached和libevent的许可。*/
-P <file>     /*保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义。*/
-f <factor>   /*不同slab class里面的chunk大小的增长倍率。(默认:1.25),该选项的参数值可以是小数但必须大于1.0。
                该选项参数将赋值给settings.factor
                译者注:每个slab class里面有相同数量个slab page,每个slab page里面有chunk,且在当前slab class内的chunk大小固定。
                        而不同slab class里的chunk大小不一致,具体差异就是根据这个参数的倍率在增长,直到分配的内存用尽.*/
-n <bytes>    /*chunk的最小空间(默认:48),该选项参数赋值给settings.chunk_size
                译者注:chunk数据结构本身需要消耗48个字节,所以一个chunk实际消耗的内存是n+48。*/
-L            /*尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率。
                为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块。*/
-D <char>     /*参数字符作为前缀和ID的分隔符。使用了该选项才会自动收集状态信息。也可以在启动memcached后
				客户端使用stats detail on命令开启,此时默认的分隔符为冒号":"。
				该选项参数会赋值为settings.prefix_delimiter,并将settings.detail_enabled赋值为1。*/
-t <num>      /*使用的线程数(默认:4),该选项的参数用于指定worker线程的个数,不建议超过64个。如果不设置该选项默认有4个线程。
                该参数会赋值给settings.num_threads。*/
-R            /*每个连接可处理的最大请求数。该选项的参数赋值给settings.reqs_per_event。*/
-C            /*禁用CAS。memcached默认是使用CAS的,本选项是禁用CAS。本选项会将settings.use_cas赋值为false。*/
-b            /*设置后台日志队列的长度(默认:1024)。*/
-B            /*绑定协议 - 可能值:ascii,binary,auto(默认)。*/
-I            /*重写每个数据页尺寸。调整数据项最大尺寸。*/


二、关键配置的默认值:

static void settings_init(void) {  
    //开启CAS业务,如果开启了那么在item里面就会多一个用于CAS的字段。可以在启动memcached的时候通过-C选项禁用  
    settings.use_cas = true;  
      
    settings.access = 0700; //unix socket的权限位信息  
    settings.port = 11211;//memcached监听的tcp端口  
    settings.udpport = 11211;//memcached监听的udp端口  
    //memcached绑定的ip地址。如果该值为NULL,那么就是INADDR_ANY。否则该值指向一个ip字符串  
    settings.inter = NULL;  
      
    settings.maxbytes = 64 * 1024 * 1024; //memcached能够使用的最大内存  
    settings.maxconns = 1024; //最多允许多少个客户端同时在线。不同于settings.backlog  
     
    settings.verbose = 0;//运行信息的输出级别.该值越大输出的信息就越详细  
    settings.oldest_live = 0; //flush_all命令的时间界限。插入时间小于这个时间的item删除。  
    settings.evict_to_free = 1;  //标记memcached是否允许LRU淘汰机制。默认是可以的。可以通过-M选项禁止    
    settings.socketpath = NULL;//unix socket监听的socket路径.默认不使用unix socket   
    settings.factor = 1.25; //item的扩容因子  
    settings.chunk_size = 48; //最小的一个item能存储多少字节的数据(set、add命令中的数据)  
    settings.num_threads = 4; //worker线程的个数  
     //多少个worker线程为一个udp socket服务 number of worker threads serving each udp socket  
    settings.num_threads_per_udp = 0;  
      
    settings.prefix_delimiter = ':'; //分隔符  
    settings.detail_enabled = 0;//是否自动收集状态信息  
  
    //worker线程连续为某个客户端执行命令的最大命令数。这主要是为了防止一个客户端霸占整个worker线程  
    //,而该worker线程的其他客户端的命令无法得到处理  
    settings.reqs_per_event = 20;  
      
    settings.backlog = 1024;//listen函数的第二个参数,不同于settings.maxconns  
    //用户命令的协议,有文件和二进制两种。negotiating_prot是协商,自动根据命令内容判断  
    settings.binding_protocol = negotiating_prot;  
    settings.item_size_max = 1024 * 1024;//slab内存页的大小。单位是字节  
    settings.maxconns_fast = false;//如果连接数超过了最大同时在线数(由-c选项指定),是否立即关闭新连接上的客户端。  
  
    //用于指明memcached是否启动了LRU爬虫线程。默认值为false,不启动LRU爬虫线程。  
    //可以在启动memcached时通过-o lru_crawler将变量的值赋值为true,启动LRU爬虫线程  
    settings.lru_crawler = false;  
    settings.lru_crawler_sleep = 100;//LRU爬虫线程工作时的休眠间隔。单位为微秒   
    settings.lru_crawler_tocrawl = 0; //LRU爬虫检查每条LRU队列中的多少个item,如果想让LRU爬虫工作必须修改这个值  
  
    //哈希表的长度是2^n。这个值就是n的初始值。可以在启动memcached的时候通过-o hashpower_init  
    //设置。设置的值要在[12, 64]之间。如果不设置,该值为0。哈希表的幂将取默认值16  
    settings.hashpower_init = 0;  /* Starting hash power level */  
  
    settings.slab_reassign = false;//是否开启调节不同类型item所占的内存数。可以通过 -o slab_reassign选项开启  
    settings.slab_automove = 0;//自动检测是否需要进行不同类型item的内存调整,依赖于settings.slab_reassign的开启  
  
    settings.shutdown_command = false;//是否支持客户端的关闭命令,该命令会关闭memcached进程  
  
    //用于修复item的引用数。如果一个worker线程引用了某个item,还没来得及解除引用这个线程就挂了  
    //那么这个item就永远被这个已死的线程所引用而不能释放。memcached用这个值来检测是否出现这种  
    //情况。因为这种情况很少发生,所以该变量的默认值为0(即不进行检测)。  
    //在启动memcached时,通过-o tail_repair_time xxx设置。设置的值要大于10(单位为秒)  
    //TAIL_REPAIR_TIME_DEFAULT 等于 0。  
    settings.tail_repair_time = TAIL_REPAIR_TIME_DEFAULT;   
    settings.flush_enabled = true;//是否运行客户端使用flush_all命令  
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值