天天看點

memcached--------基于centos6源碼安裝

1.  背景

      許多Web 應用程式都将資料儲存到RDBMS中,應用伺服器從中讀取資料并在浏覽器中顯示。但随着資料量的增大,通路的集中,就會出現REBMS的負擔加重,資料庫響應惡化,網站顯示延遲等重大影響。Memcached是高性能的分布式記憶體緩存伺服器。一般的使用目的是通過緩存資料庫查詢結果,減少資料庫的通路次數,以提高動态Web 應用的速度、提高擴充性。如圖:

Memcached作為高速運作的分布式緩存伺服器具有以下特點。

1.  協定簡單

        memcached的伺服器用戶端通信并不使用複雜的MXL等格式,而是使用簡單的基于文本的協定。

2.  基于libevent的事件處理

     libevent是個程式庫,他将Linux 的epoll、BSD類作業系統的kqueue等時間處理功能封裝成統一的接口。memcached使用這個libevent庫,是以能在Linux、BSD、Solaris等作業系統上發揮其高性能。

3.  内置記憶體存儲方式

       為了提高性能,memcached中儲存的資料都存儲在memcached内置的記憶體存儲空間中。由于資料僅存在于記憶體中,是以重新開機memcached,重新開機作業系統會導緻全部資料消失。另外,内容容量達到指定的值之後memcached回自動删除不适用的緩存。

4. Memcached不互通信的分布式

       memcached盡管是“分布式”緩存伺服器,但伺服器端并沒有分布式功能。各個memcached不會互相通信以共享資訊。他的分布式主要是通過用戶端實作的。

5.  Memcached的記憶體管理

      最近的memcached預設情況下采用了名為Slab Allocatoion的機制配置設定,管理記憶體。在改機制出現以前,記憶體的配置設定是通過對所有記錄簡單地進行malloc和free來進行的。但是這中方式會導緻記憶體碎片,加重作業系統記憶體管理器的負擔。

    Slab Allocator的基本原理是按照預先規定的大小,将配置設定的記憶體分割成特定長度的塊,已完全解決記憶體碎片問題。Slab Allocation  的原理相當簡單。将配置設定的記憶體分割成各種尺寸的塊(chucnk),并把尺寸相同的塊分成組(chucnk的集合)如圖:

<a href="https://s1.51cto.com/wyfs02/M01/8C/B5/wKioL1h1n3rQnWlFAAGyeiicrzc268.png" target="_blank"></a>

       而且slab allocator 還有重複使用已配置設定記憶體的目的。也就是說,配置設定到的記憶體不會釋放,而是重複利用。

    Slab Allocation 的主要術語

        Page :配置設定給Slab 的記憶體空間,預設是1MB。配置設定給Slab 之後根據slab 的大小切分成chunk.

        Chunk : 用于緩存記錄的記憶體空間。

        Slab Class:特定大小的chunk 的組。

2.  環境

<a href="https://s5.51cto.com/wyfs02/M00/8E/99/wKioL1jGpcTipnJwAABcxE0crWg502.jpg" target="_blank"></a>

3.  安裝(下載下傳源碼包全部放至/usr/local/src目錄下,先cd切換到/usr/local/src目錄下工作)

安裝libevent(memcache網絡庫部分基于libevent庫開發,解決了不同平台的差異性)

解壓: tar xf libevent-2.1.8-stable.tar.gz 

進入目錄: cd libevent-2.1.8-stable

安裝: ./configure --prefix=/usr/local/libevent-2.1.8 &amp;&amp; make &amp;&amp; make install

做軟連結 ln -s /usr/local/libevent-2.1.8 /usr/local/libevent

安裝memcached

解壓: 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 &amp;&amp; make &amp;&amp; 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

編輯腳本: (/etc/init.d/memcached)

daemon memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/run/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

                OPTIONS="-l 0.0.0.0,::1"

 将memcached添加進service管理,并開機啟動

chkconfig --add memcached

chkconfig memcached on

4.  測試

啟動: /etc/init.d/memcached start 或者 service memcached start

<a href="https://s3.51cto.com/wyfs02/M01/8E/9B/wKiom1jGrZ2APgRVAAEhZ7pJ9FI013.jpg" target="_blank"></a>

啟動成功

5.  連接配接(通過telnet測試連接配接)

telnet 127.0.0.1 11211

<a href="https://s4.51cto.com/wyfs02/M01/8E/99/wKioL1jGrhShGEbKAABxUxDqF9A834.jpg" target="_blank"></a>

6. 總結

以需求驅動技術,技術本身沒有優略之分,隻有業務之分。

      本文轉自asd1123509133 51CTO部落格,原文連結:http://blog.51cto.com/lisea/1906122,如需轉載請自行聯系原作者