文档章节

Linux服务器安装memcached

webphp
 webphp
发布于 2017/07/26 11:28
字数 2382
阅读 4
收藏 0
点赞 0
评论 0

Linux服务器端安装memcached,服务器环境为Centos6.5

    1、可以选择编译安装Libevent和Memcache。今天在这里直接使用Centos中的yum源安装

    2、使用系统中的依赖管理工具(yum  apt-get)

    3、安装 yum install memcached

yum install memcached

 

    4、安装过程中会弹出选择是否安装依赖包libevent

    5、安装成功启动memcached

/usr/bin/memcached -d -l 127.0.0.1-p 11211-m 150-u root

 

参数说明 :

 -d:后台守护进程

 -l:是监听的服务器IP地址

 -p:设置Memcache 的监听端口

 -m:分配给memcache使用的内存数量(单位为M)

 -u:是运行Memcache的用呢

 -c:选项是最大运行的并发连接数,默认为1024

 -P:是设置保存Memcached的pid文件

 

    6、查看是否启动成功

        ps -ef | grep memcach //查看是否有进程

    7、在命令链接memcache

//格式 telnet ip port
telnet 127.0.0.011211
Trying127.0.0.1...
Connected to 127.0.0.1.
Escape character is'^]'.
set str 004
baip
STORED
get str
VALUE str 04
END

    8、可以计算缓存命中率

    命中率=get_hits / (get_hits + get_misses)

    get_hits表示命中次数

    get_misses表示未命中次数

    注意:这个命中率是从memcached启动开始所有的请求的综合值,不能反映一个时间段内的情况

    9、stats items  统计各slab class中的item的情况

        执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。

        number 3 表示当前有3个值

        age:反应了当前还在缓存的数据中最久的时间

        evicted:如果一个slab的evicted属性不是0,则说明当前slab出现了提前剔除数据的情况,这个slab可能是你需要注意的。

        evicted_time:如果evicted不为0,则evicited_time就代表最后被剔除的数据时间缓存的时间。

    10、stats slabs  统计slabs的使用情况

        chunk_size    当前slab每个chunk的大小

        chunk_per_page     每个page能够存放的chunk数

        total_pages  分配给当前slab的page总数

        total_chunks 当前slab最多能够存放的chunk数,应该等于chunck_per_page * total_page

        used_chunks 已经被占用的chunks总数

        free_chunks  过期数据空出的chunk里还没有被使用的chunk数

        free_chunks_end     新分配的但是还没有被使用的chunk数

        这个命令的信息量很大,所有属性都很有价值。下面一一解释各属性:

        chunk_size, chunk_per_page

        这两个属性是固定的,但是它反映当前slab存储的数据大小,可以供你分析缓存数据的散列区间,通过调整增长因子可以改变slab的区间分布,从而改变数据散列到的区域。如果大量的230byte到260byte的数据,而刚好一个slab大小是250byte,则250byte到260byte的数据将被落到下一个slab,从而导致大量的空间浪费。

        total_pages

        这个是当前slab总共分配大的page总数,如果没有修改page的默认大小的情况下,这个数值就是当前slab能够缓存的数据的总大小(单位为M)。如果这个slab的剔除非常严重,一定要注意这个slab的page数是不是太少了。

        我上次处理的那个项目因为和另外的一个项目共用的memcache,而且memcache已经运行了很长时间,导致page都已经全部被分配完,而刚好两个项目的缓存数据大小差别很多,导致新项目数据最多的slab 4竟然只有一个page,所以数据缓存不到22s就被替换了,完全失去了缓存的意义。

        针对我遇到的那个情况,解决方案是重新分配page,或者重启memcache服务。但是page reassign方法从1.2.8版已经完全移除了,所以现在没有办法在线情况下重新分配page了。另外一种有些时候是不可以接受的,因为一次缓存服务器的重启将导致所有缓存的数据将重新从DB取出,这个可能造成db的压力瞬间增大。而且有的缓存数据时不入库的,这个时候我们就需要做memcache的导入和导出了。在下篇文章中我会总结下memcache的dump操作。

        total_chunks

        这个的作用和total_pages基本相同,不过这个属性可以更准确的反应实际可以存放的缓存对象总数。

        used_chunks, free_chunks, free_chunks_end

        这三个属性相关度比较高,从数值上来看它们满足:

        total_chunks = used_chunks + free_chunks + free_chunks_end

        used_chunks就是字面的意思,已经使用的chunk数;free_chunks却不是所有的未被使用的chunk数,而是曾经被使用过但是因为过期而被回收的chunk数;free_chunks_end是page中从来没有被使用过的chunk数。

    11、stats cachedump slab_id limit_num

        我们执行stats cachedump 1 0 命令效果如下:

        命令当中的1,即为 memcached telnet命令 - 白杨 - 白杨的博客 中的1,0表示全部取出,n表示取出n行

        这里slab_id为1,是由2中的stats items返回的结果(STAT items后面的数字)决定的;limit_num看起来好像是返回多少条记录,猜的一点不错, 不过0表示显示出所有记录,而n(n>0)就表示显示n条记录,如果n超过该slab下的所有记录,则结果和0返回的结果一致。

        通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

    12、其他stats命令

        如stats slabs,stats sizes,stats reset等等使用也比较常见。

 

客户端的安装

    1、下载安装libmemcached客户端

$wget -c https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
#千万不要下载1.0.17,有bug
$tar -zxvf libmemcached-1.0.16.tar.gz
$cd libmemcached-1.0.16
$./configure --prefix=/usr/local/libmemcached --with-memcached
$make
$make install

 

    2、下载安装memcached

$wget -c http://pecl.php.net/get/memcached-2.2.0b1.tgz
$tar -zxvf memcached-2.2.0b1.tgz
$cd memcached-2.2.0b1
$/usr/local/php/bin/phpize
$./configure
//checking : error :Cannot fond php-config. Please use --with-php-config=PATH
//会提示找不到php-config的配置文件
$./configure --width-php-config=/usr/local/php/bin/php-config
//这里会报出找不 到libmemcached的扩展
$./configure --with-php-config=/usr/local/php/bin/php-config --width-libmemcached-dir=/usr/local/libmemcached
//如果提示disable-memcached-sasl就在配置后加上--disable-memcached-sasl
$./configure --with-php-config=/usr/local/php/bin/php-config --width-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
$make
$make install

 

    成功以后输出

 

/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

接下来编辑php.ini文件加入上面输出的扩展

vim /usr/local/php/etc/php.ini
//在文件的最后加上
extension=memcached.so
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226"

 

    保存并退出以后,重启php服务

//查看memcached扩展是否生效
php -m | grep memcached

 

最后附上参数启动说明

args des
-p 指定端口号(默认值:11211)
-U <num> UDP 监听端口 (默认值: 11211, 0 时关闭)
-s <file> 用于监听的 UNIX 套接字路径(禁用网络支持)
-a <mask> UNIX 套接字访问掩码,八进制数字(默认值:0700)
-l <ip_addr> 绑定地址 (默认:所有都允许,无论内外网或者本机更换 IP,有安全隐患。若设置为 127.0.0.1 就只能本机访问)
-d 启动一个守护进程
-r 最大化核心文件限制
-u <username> 绑定使用指定用于运行进程 (只有 root 用户可以使用这个参数)
-m 指定最大使用内存大小(默认值:64 MB)
-M 内存耗尽时返回错误,而不是删除项
-t 线程数(默认值:4)
-c 最大同时连接数(默认是 1024)
-m 最大内存使用,单位 MB。(默认值:64 MB)
-k 锁定所有内存页。注意你可以锁定的内存上限。试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。(不是前面的 -u 参数;在 sh 下,使用命令"ulimit -S -l NUM_KB"来设置。)
-v 提示信息(在事件循环中打印错误/警告信息)
-vv 详细信息(并且打印客户端命令/响应)
-vvv 超详细信息(并且打印内部状态的变化)
-h 打印这个帮助信息并退出。
-i 打印 memcached 和 libevent 的许可。
-P <file> 将 PID 写入文件,这样可以使得后边进行快速进程终止, 需要与-d 一起使用
-f 块大小增长因子(默认是 1.25)
-n <bytes> 最小分配空间,key+value+flags(默认值:48)
-L 尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率
-D <char> 使用 作为前缀和 ID 的分隔符。这个用于按前缀获得状态报告。默认是":"(冒号)。 如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启。
-t <num> 使用的线程数(默认:4)
-R 每个连接可处理的最大请求数。
-C 禁用 CAS。
-b 设置后台日志队列的长度(默认:1024)
-B 绑定协议 - 可能值:ascii,binary,auto(默认值)
-I 重写每个数据页尺寸。调整数据项最大尺寸。
-S 启用 sasl 安全验证功能,开启后,客户端需要提供用户名密码才能访问 memcached
-o (慎用)逗号分隔的扩展或实验性的选项列表
-(实验) maxconns_fast 立即关闭新的连接,如果超过大并发限制
-hashpower 整数乘法器为哈希表应该是多大。在运行时,如果不是足够大,可以种植。设置在重新启动之前基于"STAT hash_power_level"。

© 著作权归作者所有

共有 人打赏支持
webphp
粉丝 1
博文 91
码字总数 91650
作品 0
海淀
程序员
lnmp1.4 环境安装 memcached 和 object-cache.php 过程记录及内存缓存加速效果

大家都知道 wordpress 的弱点在于频繁访问数据库,导致网站打开速度并不理想。使用 Linux 服务器可以添加 memcached 缓存,把常用数据都缓存到内存中,以后访问的时候直接从内存读取数据,提...

taller1980 ⋅ 05/03 ⋅ 0

linux环境Memcached的部署

一、安装libevent函数库 下载地址:http://libevent.org 默认被安装到:/usr/local/lib目录下 安装memcached之前需要先安装libevent函数库。 可以通过 ls -al /usr/local/lib | grep libeven...

vinci321 ⋅ 03/12 ⋅ 0

2018年第一季度的DDoS攻击概况

        1月初,一名业余黑客利用从黑客论坛收集到的信息,在华为路由器中利用零日漏洞创建了一个木马程序并在线发布。不过,袭击很快就在萌芽状态被扼杀,幕后的网络犯罪分子无法追查...

嘶吼RoarTalk ⋅ 05/02 ⋅ 0

OneinStack 1.7 发布,一键 PHP/JAVA 安装工具

OneinStack 1.7 发布了,这个脚本是使用 shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine/OpenResty、 MySQL/MariaDB/Percona/MongoDB/PostgreSQL、PHP、A...

lj2007331 ⋅ 04/25 ⋅ 0

linux下安装php扩展memcache

memcache 的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率,减轻后端数据库的读写压力。 实验环境:centos 6.6 x86_...

像教授 ⋅ 02/16 ⋅ 0

memcached安装部署

一、memcached安装部署 1、环境介绍 系统环境:Red HatEnterprise Linux Server release 6.2 (Santiago) 内核版本:Linux zxt-02.com2.6.32-220.el6.x8664 #1 SMP Wed Nov 9 08:03:13 EST 20......

天意1 ⋅ 2015/12/11 ⋅ 0

Memcache安装 Linux下安装

方法1:yum install memcached 方法2: 1---------------安装libevent(依赖包) 1> 解压 tar –zvxf libevent-release-1.4.15-stable.tar.gz 2> 进入解压文件 cd libevent-release-1.4.15-stabl......

方花 ⋅ 04/24 ⋅ 0

Nginx+Tomcat关于Session的管理

前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简单的安装启动开始,通过实例的方式循序渐进的介绍了几种管理session的方式。 nginx安装配置 1.安装nginx...

ksfzhaohui ⋅ 05/31 ⋅ 0

​Linux下的Memcache安装

Linux下的Memcache安装 发布时间:December 6, 2007 分类:Linux,Memcache 《IBM T61 A29入手》 《Windows下的Memcache安装》 最近在研究怎么让Discuz!去应用Memcache去做一些事情,记录下M...

河北李晓东 ⋅ 2017/07/13 ⋅ 0

python访问memcached

python访问memcached memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动...

laoba ⋅ 05/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 5分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 5分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 7分钟前 ⋅ 0

分布式锁

通过数据库实现 http://www.weizijun.cn/2016/03/17/%E8%81%8A%E4%B8%80%E8%81%8A%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E7%9A%84%E8%AE%BE%E8%AE%A1/ ZK实现:curator-recipes分布式锁的使用......

素雷 ⋅ 15分钟前 ⋅ 0

Sublime Text3 快捷键

选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名...

AndyZhouX ⋅ 22分钟前 ⋅ 0

XamarinAndroid组件教程RecylerView自定义适配器动画

XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画。此时,需要让自定义的动画继承Animation...

大学霸 ⋅ 22分钟前 ⋅ 0

eureka 基础(二)

使用Eureka服务器进行身份验证 如果其中一个eureka.client.serviceUrl.defaultZone网址中包含一个凭据(如http://user:password@localhost:8761/eureka)),HTTP基本身份验证将自动添加到您...

明理萝 ⋅ 25分钟前 ⋅ 1

Kubernetes(五) - Service

Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberne...

喵了_个咪 ⋅ 26分钟前 ⋅ 0

更新队友POM文件后报错

打开报错的地方的pom及其引用方法所在文件的pom,观察其版本号是否一致,不一致进行更改

森火 ⋅ 39分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 44分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部