memcached(1)

1.memcached参数解读

 

"p:"  /* TCP port number to listen on */

    这是监听套接字所绑定的端口号,对应的变量是settings.port;

 

"U:"  /* UDP port number to listen on */

   UDP套接口所绑定的端口号,对应的变量是settings.udpport;

 

  进程会创建两种类型的套接字用于服务。其实还有UNIX域SOCKET,本文忽略之。

 

"m:"  /* max memory to use for items in megabytes */

    进程缓存了用户请求的数据项(K-V对),因此需要占用内存,这里指定所能占用内存的最大值,

    当数据项增多而达到内存限制值,将会淘汰一些旧的数据项;

   默认值是64MB

 

"M"   /* return error on memory exhausted */

    指定一种行为,当请求数据项而发生内存分配失败(不是malloc失败,是达到了内存限制峰值),采取两种策略之一:

   返回错误;或者,淘汰旧的数据项而满足请求。

 

"c:"  /* max simultaneous connections */

   默认值1024,最大并发连接数

 

"f:"  /* factor? */

   默认值1.25. 这是SLAB所分配内存单元大小的系数,比如第一个SLAB分配32字节固定大小的数据项,则第二个SLAB分配32 * 1.25字节的数据项

 

"t:"  /* threads */

    工作者线程数目

 

"D:"  /* prefix delimiter? */

   分隔符,默认使用冒号来分隔KEY PREFIX + ID

 

 

"R:"  /* max requests per event */

   每条连接每次所能处理的最大请求个数,这是为了避免“饿死”其它连接

 

"b:"  /* backlog queue limit */

        这是listen的第二个参数

 

"B:"  /* Binding protocol */

所使用的协议:ASCII,二进制,或者是自定义(AUTO)默认。

 

I:"  /* Max item size */

       数据项的最大尺寸,默认为1MB,最小1KB,最大128MB

 

2.MEMCACHE启动流程

 

首先,创建reactor,亦即epoll描述符之类的东西

 

性能数据统计相关初始化;

哈希表初始化;

连接对象池初始化;

SLAB缓存初始化;

 

启动工作者线程

每个工作者线程拥有自己的独立EPOLL描述符,或者说,拥有独立的reactor。

 

启动哈希表迁移线程

 

创建主服务监听套接字,非阻塞

 

之后主线程进入监听循环,不断ACCEPT,将新连接按照ROUND_ROBIN算法分配给工作者线程

 

先到这里,下回继续。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值