zpjx 发表于 2018-12-25 10:22:24

centos7安装配置memcached

  1.memcached的安装
  yum install memcached
  memcached -h
  vim /etc/sysconfig/memcached
  PORT=”11211″
  USER=”memcached”
  MAXCONN=”1024″
  CACHESIZE=”64″
  OPTIONS=”"
  systemctl restart memcached
  systemctl start memcached
  systemctl enable memcached
  systemctl status memcached
  systemctl stop memcached
  memcached-tool 127.0.0.1:11211 stats
  memcached-tool 127.0.0.1:11211
  #Item_SizeMax_age   Pages   Count   Full?Evicted Evict_Time OOM
  2   120B    727s   1   7   yes      0      0   0
  4   192B    7243s    1   3   yes      0      0   0
  5   240B    72693s   1   14   yes      0      0   0
  9   600B   0s   1   0   yes       0      0   0
  10    752B   79s   1   1   yes      0      0   0
  #       slab class编号
  Item_Sizechunk大小
  Max_age   LUR内最旧的记录生存时间
  Pages    分配给slab的页数
  Count    slab内的记录数
  Full?    slab内是否含有空闲chunk
  

  2./etc/php.d/memcache.ini详解
  ; ----- Enable memcache extension module
  extension=memcache.so
  ; ----- Options for the memcache module
  ; see http://www.php.net/manual/en/memcache.ini.php
  ;Whether to transparently failover to other servers on errors
  ;memcache.allow_failover=1    (连接出错时Memcache扩展是否故障转移到其他服务器上默认为1)
  ;Data will be transferred in chunks of this size
  ;memcache.chunk_size=32768         (控制数据传输的大小)
  ;Autocompress large data
  ;memcache.compress_threshold=20000
  ;The default TCP port number to use when connecting to the memcached server
  ;memcache.default_port=11211       (设置连接Memcache所使用的TCP端口)
  ;Hash function {crc32, fnv}
  ;memcache.hash_function=crc32
  ;Hash strategy {standard, consistent}
  ;memcache.hash_strategy=consistent   (哈希策略)
  ;Defines how many servers to try when setting and getting data.
  ;memcache.max_failover_attempts=20   (限制连接到持久性数据或检索数据的服务器数目)
  ;The protocol {ascii, binary} : You need a memcached >= 1.3.0 to use the binary protocol
  ;The binary protocol results in less traffic and is more efficient
  ;memcache.protocol=ascii
  ;Redundancy : When enabled the client sends requests to N servers in parallel
  ;memcache.redundancy=1
  ;memcache.session_redundancy=2
  ;Lock Timeout
  ;memcache.lock_timeout = 15
  ; ----- Options to use the memcache session handler
  ; RPM note : save_handler and save_path are defined
  ; for mod_php, in /etc/httpd/conf.d/php.conf
  ; for php-fpm, in /etc/php-fpm.d/*conf
  ;Use memcache as a session handler
  ;session.save_handler=memcache
  ;Defines a comma separated of server urls to use for session storage;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
  

  2.php操作memcache的使用测试
  2.1创建KEY值数据
  vi test1.php
  
  2.2替换KEY值数据
  vi test2.php
  
  2.3删除KEY值数据
  vi test3.php
  
  php -f test1.php(执行php -h看帮助)
  命令帮助:
  Memcache::add // 添加一个值,如果已经存在,则返回false
  Memcache::addServer // 添加Memcache地址
  Memcache::close // 关闭一个Memcache的连接
  Memcache::connect // 打开一个到Memcache的连接
  Memcache::decrement // 对保存的某个key中的值进行减法操作
  Memcache::delete // 删除一个Memcache上的key值
  Memcache::flush // 刷新所有Memcache上保存的项目(类似于删除所有的保存的项目)
  Memcache::get // 从Memcache上获取一个key值
  Memcache::getExtendedStats // 获取进程池中所有进程的运行系统统计
  Memcache::getServerStatus // 获取运行服务器的参数
  Memcache::getStats //获取当前Memcache服务器运行的状态
  Memcache::getVersion // 返回运行的Memcache的版本信息
  Memcache::increment // 对保存的某个key中的值进行加法操作
  Memcache::pconnect // 打开一个到Memcache的长连接
  Memcache::replace // 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
  Memcache::set // 向Memcache添加一个值,如果已经存在,则覆写
  Memcache::setCompressThreshold // 对大于某一大小的数据进行压缩
  Memcache::setServerParams // 在运行时修改服务器的参数
  

  2.查看memcached性能状态
  2.1查看服务器性能信息
  # telnet localhost 11211
  stats(此处输入stats命令)
  STAT pid 1277            (进程ID)
  STAT uptime 176145         (服务器运行秒数,秒)
  STAT time 1448592684       (服务器当前unix时间戳)
  STAT version 1.4.15      (服务器版本)
  STAT libevent 2.0.21-stable
  STAT pointer_size 64       (操作系统字大小 32/64位)
  STAT rusage_user 3.869494    (进程累计用户时间,秒)
  STAT rusage_system 4.636292   (进程累计系统时间,秒)
  STAT curr_connections 11   (当前打开连接数)
  STAT total_connections 21    (曾打开的连接总数)
  STAT connection_structures 12(服务器分配的连接结构数)
  STAT reserved_fds 20
  STAT cmd_get 483          (执行get命令总数)
  STAT cmd_set 144          (执行set命令总数)
  STAT cmd_flush 0          (指向flush_all命令总数)
  STAT cmd_touch 0
  STAT get_hits 369         (get未命中次数)
  STAT get_misses 114      (get未命中次数)
  STAT delete_misses 0       (delete未命中次数)
  STAT delete_hits 0      (delete命中次数)
  STAT incr_misses 0      (incr未命中次数)
  STAT incr_hits 0         (incr命中次数)
  STAT decr_misses 0      (decr未命中次数)
  STAT decr_hits 0         (decr命中次数)
  STAT cas_misses 0         (cas未命中次数)
  STAT cas_hits 0          (cas命中次数)
  STAT cas_badval 0         (使用擦拭次数)
  STAT touch_hits 0
  STAT touch_misses 0
  STAT auth_cmds 0
  STAT auth_errors 0
  STAT bytes_read 82819      (读取字节总数)
  STAT bytes_written 104266    (写入字节总数)
  STAT limit_maxbytes 67108864(分配的内存数(字节))
  STAT accepting_conns 1      (目前接受的连接数)
  STAT listen_disabled_num 0
  STAT threads 4         (线程数)
  STAT conn_yields 0
  STAT hash_power_level 16
  STAT hash_bytes 524288
  STAT hash_is_expanding 0
  STAT bytes 4789         (存储item字节数)
  STAT curr_items 20         (item个数)
  STAT total_items 144       (item总数)
  STAT expired_unfetched 15
  STAT evicted_unfetched 0
  STAT evictions 0          (获取空间删除item的总数)
  STAT reclaimed 36
  END
  quit(此处输入quit退出memcached状态查看)
  2.2查看每个slab中存储items的详细信息
# telnet localhost 11211
stats items(此处输入stats命令)
  STAT items:4:number 3
  STAT items:4:age 2140(当前数据中缓存最久的时间,一般小于evicted_time(不为0)时间)
  STAT items:4:evicted 0(如果evicted不是0,说明slab开始提前剔除数据,需要注意)
  STAT items:4:evicted_nonzero 0
  STAT items:4:evicted_time 0(最后被剔除数据的缓存时间,不是发生LRU就memcached负载过量)
  STAT items:4:outofmemory 0
  STAT items:4:tailrepairs 0
  STAT items:4:reclaimed 6
  STAT items:4:expired_unfetched 1
  STAT items:4:evicted_unfetched 0
  STAT items:5:number 15
  STAT items:5:age 67590
  STAT items:5:evicted 0
  STAT items:5:evicted_nonzero 0
  STAT items:5:evicted_time 0
  STAT items:5:outofmemory 0
  STAT items:5:tailrepairs 0
  STAT items:5:reclaimed 22
  STAT items:5:expired_unfetched 10
  STAT items:5:evicted_unfetched 0
  STAT items:10:number 1
  STAT items:10:age 283
  STAT items:10:evicted 0
  STAT items:10:evicted_nonzero 0
  STAT items:10:evicted_time 0
  STAT items:10:outofmemory 0
  STAT items:10:tailrepairs 0
  STAT items:10:reclaimed 13
  STAT items:10:expired_unfetched 7
  STAT items:10:evicted_unfetched 0
  END
  2.3查看slab内存分配信息
# telnet localhost 11211
stats slabs(此处输入stats命令)
  STAT 4:chunk_size 192    (当前slab每个chunk的大小,固定值)
  STAT 4:chunks_per_page 5461(每个page能够存放的chunk数,固定值)
  STAT 4:total_pages 1   (分配给当前slab的page总数,单位M。slab剔除严重,该值会太少)
  STAT 4:total_chunks 5461(当前slab最多能够存放的chunk数,=chunks_per_page*total_pages)
  STAT 4:used_chunks 3   (已经被占用的chunks总数)
  STAT 4:free_chunks 5458   (过期数据空出的chunk里还没有被使用的chunk数)
  STAT 4:free_chunks_end 0(新分配但还没有被使用的chunk数)
  STAT 4:mem_requested 555
  STAT 4:get_hits 136
  STAT 4:cmd_set 9
  STAT 4:delete_hits 0
  STAT 4:incr_hits 0
  STAT 4:decr_hits 0
  STAT 4:cas_hits 0
  STAT 4:cas_badval 0
  STAT 4:touch_hits 0
  STAT 5:chunk_size 240
  STAT 5:chunks_per_page 4369
  STAT 5:total_pages 1
  STAT 5:total_chunks 4369
  STAT 5:used_chunks 14
  STAT 5:free_chunks 4355
  STAT 5:free_chunks_end 0
  STAT 5:mem_requested 3158
  STAT 5:get_hits 158
  STAT 5:cmd_set 43
  STAT 5:delete_hits 0
  STAT 5:incr_hits 0
  STAT 5:decr_hits 0
  STAT 5:cas_hits 0
  STAT 5:cas_badval 0
  STAT 5:touch_hits 0
  STAT 10:chunk_size 752
  STAT 10:chunks_per_page 1394
  STAT 10:total_pages 1
  STAT 10:total_chunks 1394
  STAT 10:used_chunks 1
  STAT 10:free_chunks 1393
  STAT 10:free_chunks_end 0
  STAT 10:mem_requested 646
  STAT 10:get_hits 104
  STAT 10:cmd_set 105
  STAT 10:delete_hits 0
  STAT 10:incr_hits 0
  STAT 10:decr_hits 0
  STAT 10:cas_hits 0
  STAT 10:cas_badval 0
  STAT 10:touch_hits 0
  STAT active_slabs 3
  STAT total_malloced 3145360
  END
  

  报错1:执行memcached -vv报错can't run as root without the -u switch
  解决1:memcached -vv -u root
  

  3.增加memcache缓存日志
  yum -y install php-pecl-memcache
  如果是PHP56版本的应该运行
  yum -y install php56w-pecl-memcache
  防火墙放开11211
  firewall-cmd --permanent --zone=public --add-port=11211/tcp
  检查端口是否开放

  echo stats | nc memcache_host_name_or_ip 11211
  增加日志
  /bin/memcached -d -m 512 -l 127.0.0.1 -p 10000 -u root -vv >> /tmp/memcached.log 2>&1
  tail -f /tmp/memcached.log
  

  4.memcache缓存mysql的测试页面
  vi mysql-memcache.php
  
  

  5.memcached禁止外网访问
  lnmp默认安装的memcached是可以外网访问的,对于我这个小站来说外网不会用到,所以只允许内网用。修改文件vi /etc/init.d/memcached
  PORT=11211
  USER=root
  MAXCONN=1024
  CACHESIZE=32
  OPTIONS=""
  IP=127.0.0.1
  RETVAL=0
  prog="memcached"
  start () {
  echo -n $"Starting $prog: "
  memcached -d -l $IP -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
  }
  如果有安装iptables的话可以用iptables来禁止外网访问
  

  6.未完成
  http://www.linuxidc.com/Linux/2015-05/117170.htm
  




页: [1]
查看完整版本: centos7安装配置memcached