memcached--------基于centos6源码安装

1.  背景

许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等重大影响。Memcached是高性能的分布式内存缓存服务器。一般的使用目的是通过缓存数据库查询结果,减少数据库的访问次数,以提高动态Web 应用的速度、提高扩展性。如图:

Memcached作为高速运行的分布式缓存服务器具有以下特点。

  1. 1.  协议简单:memcached的服务器客户端通信并不使用复杂的MXL等格式,而是使用简单的基于文本的协议。

    2.  基于libevent的事件处理:libevent是个程序库,他将Linux 的epoll、BSD类操作系统的kqueue等时间处理功能封装成统一的接口。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。

  2. 3.  内置内存存储方式:为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached,重启操作系统会导致全部数据消失。另外,内容容量达到指定的值之后memcached回自动删除不适用的缓存。
  3. 4. Memcached不互通信的分布式:memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。他的分布式主要是通过客户端实现的。

Memcached的内存管理
          最近的memcached默认情况下采用了名为Slab Allocatoion的机制分配,管理内存。在改机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。但是这中方式会导致内存碎片,加重操作系统内存管理器的负担。

Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,已完全解决内存碎片问题。Slab Allocation  的原理相当简单。将分配的内存分割成各种尺寸的块(chucnk),并把尺寸相同的块分成组(chucnk的集合)如图:

而且slab allocator 还有重复使用已分配内存的目的。也就是说,分配到的内存不会释放,而是重复利用。

Slab Allocation 的主要术语

  1. Page :分配给Slab 的内存空间,默认是1MB。分配给Slab 之后根据slab 的大小切分成chunk.
  2. Chunk : 用于缓存记录的内存空间。
  3. Slab Class:特定大小的chunk 的组。

2.  环境

3.  安装(下载源码包全部放至/usr/local/src目录下,先cd切换到/usr/local/src目录下工作)

  • 安装libevent(memcache网络库部分基于libevent库开发,解决了不同平台的差异性)

  • 安装memcached
    • 下载: wget http://www.memcached.org/files/memcached-1.4.35.tar.gz
    • 解压: tar xf memcached-1.4.35.tar.gz
    • 进入目录: cd memcached-1.4.35
    • 编译安装:./configure --prefix=/usr/local/memcached-1.4.35 --with-libevent=/usr/local/libevent && make && make install
    • 做软链接: ln -s /usr/local/memcached-1.4.35 /usr/local/memcached
  • 创建系统用户, 并且不创建家目录
    • useradd -r -s /sbin/nologin -M memcached

编辑并添加memcached启动脚本(当前路径还在memcached-1.4.35源码包目录里)

  • 进入脚本目录: cd scripts
  • 复制脚本至init.d目录下: cp memcached.sysv /etc/init.d/memcached
  • 创建memcached运行目录, 并改变其用户与用户组为memcached
    • mkdir /var/run/memcached
    • chown memcached.memcached /var/run/memcached
  • 编辑脚本:
    • daemon memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/ru//memcached/memcached.pid $OPTIONS 改为 daemon /usr/local/memcached/bin/memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS
    • (可选)删除脚本中以下内容

PORT=11211

USER=nobody

MAXCONN=1024

CACHESIZE=64

OPTIONS=""

创建参数脚本并添加参数

  • 创建touch /etc/sysconfig/memcached
  • 更改用户与用户组 chown memcached.memcached /etc/sysconfig/memcached
  • 添加内容

PORT=11211

USER=memcached

MAXCONN=1024

CACHESIZE=64

OPTIONS="-l 0.0.0.0,::1"

将memcached添加进service管理,并开机启动

  • chkconfig --add memcached
  • chkconfig memcache on

4.  测试

  • 启动: /etc/init.d/memcached start 或者 service memcached start

启动成功

5.  连接(通过telnet测试连接)

telnet 127.0.0.1 11211

6. 总结

以需求驱动技术,技术本身没有优略之分,只有业务之分。

时间: 2025-01-01 21:02:24

memcached--------基于centos6源码安装的相关文章

Nginx基础应用--------基于CentOS6源码安装

1. 背景 介绍: Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll(linux2.6内核).kqueue(freebsd).eventport(solaris10)作为网络I/O模型,能够支持高达50000个并发连接数的响应,而内存.CPU等系统资源消耗却非常低.运行非常稳定. 选择的理由: * 支持高并发连接:nginx使用高效的多路复用模型(epoll/linux, kqueue/freebsd, eventport/solaris) * 内存消耗少:在服务器3W

CentOS6源码安装vim8

CentOS6源码安装vim8 vim8相比vim7多了很多功能. 不过需要源码来进行安装. 移除旧版本的vim yum remove vim 安装依赖库 sudo yum install -y ruby ruby-devel lua lua-devel luajit luajit-devel ctags git python python-devel python3 python3-devel tcl-devel perl perl-devel perl-ExtUtils-ParseXS pe

centos6源码安装git

从源代码安装 有人觉得从源码安装 Git 更实用,因为你能得到最新的版本. 二进制安装程序倾向于有一些滞后,当然近几年 Git 已经成熟,这个差异不再显著. 如果你想从源码安装 Git,需要安装 Git 依赖的库:curl.zlib.openssl.expat,还有libiconv. 如果你的系统上有 yum (如 Fedora)或者 apt-get(如基于 Debian 的系统),可以使用以下命令之一来安装最小化的依赖包来编译和安装 Git 的二进制版:   $ sudo yum instal

CentOS6源码安装LAMP----基于fastcgi方式(2台机器)

源码搭建LAMP 软件包下载源: 搜狐镜像源:http://mirrors.sohu.com/ apache下载网:http://mirror.bit.edu.cn/apache/ pcre官网:http://www.pcre.org/ apr官网:http://apr.apache.org/ apache官网:http://httpd.apache.org/ mysql官网:https://www.mysql.com/ php官网:http://php.net/ freetds:http://

Centos6 源码安装mysql5.6

这里介绍如何使用centos6.*来安装mysql5.6版本. 先做一下准备工作 确定好用于运行mysql的用户,安全起见,建议拒绝次用户登录,仅用于运行程序. useradd mysql -s/sbin/nologin 如果电脑的物理内存不是很多(1G以下),可以开启虚拟内存来缓解物理内存压力,避免应为内存的问题安装失败,或许也可以轻微的提升速度. mkdir /myswap  #创建一个swap文件 dd if=/dev/zero of=/myswap bs=1k count=2048000

Centos6 源码安装mysql5.5

一.工具 cmake-3.0.1.tar.gz   mysql-5.5.35.tar.gz 二.安装部署 1.安装cmake tar -zxvf cmake-3.0.1.tar.gz cd cmake-3.0.1 ./configure make && make install 2.新建mysql用户 groupadd mysql useradd -r -g mysql mysql mkdir -p /usr/local/mysql     //mysql安装目录 mkdir -p /ap

Centos6 源码安装mongodb

MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. 1.下载mongodb

CentOS-6.4-minimal版中源码安装MySQL-5.5.38

/** * CentOS-6.4-minimal版中源码安装MySQL-5.5.38 * ---------------------------------------------------------------------------------------------------------------------- * 三种安装方式 * 1)源码安装 * 2)二进制包安装 * 3)rpm或yum安装 * 本文演示的是源码安装,并且,从mysql-5.5开始,源码安装要通过cmake安装

centos6.5 64 源码安装redis服务,建立可远程连接的redis数据库

安装环境:centos6.5 64位 使用的包:redis-2.8.19.tar.gz  tcl8.6.3-src.tar.gz 包的下载链接:http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz http://download.redis.io/releases/redis-2.8.19.tar.gz 本次安装的目录/home/hadoop/redis为任意目录 代码实现: 1,安装需要的支持环境 su root cd /home/h