新聞中心
1. 背景

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供遷西網(wǎng)站建設(shè)、遷西做網(wǎng)站、遷西網(wǎng)站設(shè)計(jì)、遷西網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、遷西企業(yè)網(wǎng)站模板建站服務(wù),10年遷西做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
許多web 應(yīng)用程序都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。但隨著數(shù)據(jù)量的增大,訪問的集中,就會(huì)出現(xiàn)REBMS的負(fù)擔(dān)加重,數(shù)據(jù)庫響應(yīng)惡化,網(wǎng)站顯示延遲等重大影響。Memcached是高性能的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫的訪問次數(shù),以提高動(dòng)態(tài)Web 應(yīng)用的速度、提高擴(kuò)展性。如圖:
Memcached作為高速運(yùn)行的分布式緩存服務(wù)器具有以下特點(diǎn)。
1. 協(xié)議簡單
memcached的服務(wù)器客戶端通信并不使用復(fù)雜的MXL等格式,而是使用簡單的基于文本的協(xié)議。
2. 基于libevent的事件處理
libevent是個(gè)程序庫,他將Linux 的epoll、BSD類操作系統(tǒng)的kqueue等時(shí)間處理功能封裝成統(tǒng)一的接口。memcached使用這個(gè)libevent庫,因此能在Linux、BSD、Solaris等操作系統(tǒng)上發(fā)揮其高性能。
3. 內(nèi)置內(nèi)存存儲(chǔ)方式
為了提高性能,memcached中保存的數(shù)據(jù)都存儲(chǔ)在memcached內(nèi)置的內(nèi)存存儲(chǔ)空間中。由于數(shù)據(jù)僅存在于內(nèi)存中,因此重啟memcached,重啟操作系統(tǒng)會(huì)導(dǎo)致全部數(shù)據(jù)消失。另外,內(nèi)容容量達(dá)到指定的值之后memcached回自動(dòng)刪除不適用的緩存。
4. Memcached不互通信的分布式
memcached盡管是“分布式”緩存服務(wù)器,但服務(wù)器端并沒有分布式功能。各個(gè)memcached不會(huì)互相通信以共享信息。他的分布式主要是通過客戶端實(shí)現(xiàn)的。
5. Memcached的內(nèi)存管理
最近的memcached默認(rèn)情況下采用了名為Slab Allocatoion的機(jī)制分配,管理內(nèi)存。在改機(jī)制出現(xiàn)以前,內(nèi)存的分配是通過對(duì)所有記錄簡單地進(jìn)行malloc和free來進(jìn)行的。但是這中方式會(huì)導(dǎo)致內(nèi)存碎片,加重操作系統(tǒng)內(nèi)存管理器的負(fù)擔(dān)。
Slab Allocator的基本原理是按照預(yù)先規(guī)定的大小,將分配的內(nèi)存分割成特定長度的塊,已完全解決內(nèi)存碎片問題。Slab Allocation 的原理相當(dāng)簡單。將分配的內(nèi)存分割成各種尺寸的塊(chucnk),并把尺寸相同的塊分成組(chucnk的集合)如圖:
而且slab allocator 還有重復(fù)使用已分配內(nèi)存的目的。也就是說,分配到的內(nèi)存不會(huì)釋放,而是重復(fù)利用。
Slab Allocation 的主要術(shù)語
Page :分配給Slab 的內(nèi)存空間,默認(rèn)是1MB。分配給Slab 之后根據(jù)slab 的大小切分成chunk.
Chunk : 用于緩存記錄的內(nèi)存空間。
Slab Class:特定大小的chunk 的組。
2. 環(huán)境
3. 安裝(下載源碼包全部放至/usr/local/src目錄下,先cd切換到/usr/local/src目錄下工作)
-
安裝libevent(memcache網(wǎng)絡(luò)庫部分基于libevent庫開發(fā),解決了不同平臺(tái)的差異性)
-
下載:wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
-
解壓: tar xf libevent-2.1.8-stable.tar.gz
-
進(jìn)入目錄: cd libevent-2.1.8-stable
-
安裝: ./configure --prefix=/usr/local/libevent-2.1.8 && make && make install
-
做軟鏈接 ln -s /usr/local/libevent-2.1.8 /usr/local/libevent
-
-
安裝memcached
-
下載: wget http://www.memcached.org/files/memcached-1.4.35.tar.gz
-
解壓: tar xf memcached-1.4.35.tar.gz
-
進(jìn)入目錄: 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
-
-
創(chuàng)建系統(tǒng)用戶, 并且不創(chuàng)建家目錄
-
useradd -r -s /sbin/nologin -M memcached
-
-
編輯并添加memcached啟動(dòng)腳本(當(dāng)前路徑還在memcached-1.4.35源碼包目錄里)
-
-
進(jìn)入腳本目錄: cd scripts
-
復(fù)制腳本至init.d目錄下: cp memcached.sysv /etc/init.d/memcached
-
創(chuàng)建memcached運(yùn)行目錄, 并改變其用戶與用戶組為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
-
-
(可選)刪除腳本中以下內(nèi)容
-
PORT=11211
USER=nobody
MAXCONN=1024
CACHESIZE=64
OPTIONS=""
-
-
創(chuàng)建參數(shù)腳本并添加參數(shù)
-
-
-
-
創(chuàng)建touch /etc/sysconfig/memcached
-
更改用戶與用戶組 chown memcached.memcached /etc/sysconfig/memcached
-
添加內(nèi)容
-
-
PORT=11211
USER=memcached
MAXCONN=1024
CACHESIZE=64
OPTIONS="-l 0.0.0.0,::1"
-
-
將memcached添加進(jìn)service管理,并開機(jī)啟動(dòng)
-
-
-
-
chkconfig --add memcached
-
chkconfig memcached on
-
-
4. 測(cè)試
-
啟動(dòng): /etc/init.d/memcached start 或者 service memcached start
啟動(dòng)成功
5. 連接(通過telnet測(cè)試連接)
telnet 127.0.0.1 11211
本文標(biāo)題:CentOS6.8源碼安裝Memcached
轉(zhuǎn)載源于:http://fisionsoft.com.cn/article/codssdj.html


咨詢
建站咨詢
