zoukankan      html  css  js  c++  java
  • 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的存储模型,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的模型中,分为多个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

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

      当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

     
     
     
     
    转载烦请说明出处: github weibo
    新博客: hal123
  • 相关阅读:
    Codeforces Gym 100571A A. Cursed Query 离线
    codeforces Gym 100500 J. Bye Bye Russia
    codeforces Gym 100500H H. ICPC Quest 水题
    codeforces Gym 100500H A. Potion of Immortality 简单DP
    Codeforces Gym 100500F Problem F. Door Lock 二分
    codeforces Gym 100500C D.Hall of Fame 排序
    spring data jpa 创建方法名进行简单查询
    Spring集成JPA提示Not an managed type
    hibernate配置文件中的catalog属性
    SonarLint插件的安装与使用
  • 原文地址:https://www.cnblogs.com/ELMND/p/4534131.html
Copyright © 2011-2022 走看看