企業——memcache對PHP頁面的緩存加速優化

   Memcache 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升了網站訪問的速度。 MemCaChe是一個存儲鍵值對的HashMap,在內存中對任意的數據(好比字符串、對象等)所使用的key-value存儲,數據能夠來自數據庫調用、API調用,或者頁面渲染的結果。MemCache設計理念就是小而強大,它簡單的設計促進了快速部署、易於開發並解決面對大規模的數據緩存的許多難題,而所開放的API使得MemCache能用於Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序語言。數據庫是是將數據存放在硬盤中,所以讀取的速度會相對於將數據存儲在內存中的memcache來講慢。javascript

      

 

   傳統的Web應用都將數據保存到RDBMS中,應用服務器從RDBMS中讀取數據、處理數據並在瀏覽器中顯示。可是隨着數據量增大、訪問的集中、就會出現RDBMS的負擔加劇、數據庫響應變慢、致使整個系統響應延遲增長。而memcached就是爲了解決這個問題而出現的,memcached是一款高性能的分佈式內存緩存服務器,通常目的是爲了經過緩存數據庫的查詢命中減小數據庫壓力、提升應用響應速度、提升可擴展性。php

 

二.memcache的配置

1.解壓memcache源碼包

  tar  zxf  memcache-2.2.5.tgzhtml

 

2.將前邊php編譯完成的二進制命令加入環境變量中,保證能夠直接調用php命令

  vim ~/.bash_profilejava

    PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
  source ~/.bash_profile  ##刷新環境變量mysql

 

3.建立一個預編譯環境並進行編譯彙編memcache源碼包

  phpize是用來擴展php擴展模塊的,經過phpize能夠創建php的外掛模塊,好比你想在原來編譯好的php中加入memcached或者ImageMagick等擴展模塊,可使用phpize。nginx

  phpize工具是在php安裝目錄下,基於這點phpize對應了當時的php環境,因此是要根據該php的配置狀況生成對應的configure文件,創建一個configure文件。必須在一個目錄下去運行phpize,那麼phpize就知道你的環境是哪一個目錄,而且configure文件創建在該目錄下。

web

  cd memcache-2.2.5
  phpize
  Configuring for:
    PHP Api Version: 20131106
    Zend Module Api No: 20131226
    Zend Extension Api No: 220131226
  ./configure      ##源碼編譯,已經安裝好了php,咱們就不用再指定新的php擴展模塊路徑
  make && make installsql

 

4.php的配置文件中添加memcache模塊

  cd /usr/local/lnmp/php/etc/
  vim php.ini
    873 extension=memcache.so      # 將873行memcache模塊的註釋打開
  /etc/init.d/php-fpm reload
    Reload service php-fpm done
  php -m    ##查看php模塊
  php -m | grep memcache    ##過濾memcache模塊,發現已經有了這個模塊
    memcache數據庫

  php -m | grep mysql    ##同時支持mysql
    mysql
    mysqli
    mysqlnd
    pdo_mysqlvim

 

5.安裝memcache工具並啓動memcache

  yum install -y memcahce

  /etc/init.d/memcached start

  netstat -antlp  ##查看端口信息  memcache的監聽端口是(11211端口)  若是有端口信息說明工具開啓成功

 

  

  注意:上面顯示的端口信息是,檢測全部11211端口的全部主機,若是想只監控本機則進行如下修改(注意,這裏只作介紹,實際只監聽本機是不合理的,此步驟不用作)

  vim /etc/sysconfig/memcached
    PORT="11211"
    USER="memcached"
    MAXCONN="1024"
    CACHESIZE="64"
    OPTIONS="-l 127.0.0.1"   ##修改此處,將信息修改成本機的迴環接口的IP地址:127.0.0.1

  /etc/init.d/memcached restart
    Stopping memcached: [ OK ]
    Starting memcached: [ OK ]

  netstat -atnlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 3855/memcached      ##顯示只監聽本機成功
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1251/nginx
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 910/sshd
    tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 986/master
    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3807/php-fpm
    tcp 0 0 :::22 :::* LISTEN 910/sshd
    tcp 0 0 ::1:25 :::* LISTEN 986/master
    tcp 0 0 :::3306 :::* LISTEN 1210/mysqld

 

6.將測試文件cp到/usr/local/lnmp/nginx/html,設置memcached的密碼

  cd memcache-2.2.5
  cp memcache.php example.php /usr/local/lnmp/nginx/html/    ##用nginx當作web服務器,將memcache的測試頁面放到相應的發佈目錄下面
  cd /usr/local/lnmp/nginx/html/
  vim memcache.php
    22 define('ADMIN_USERNAME','memcache');      ##用戶爲memcache
    23 define('ADMIN_PASSWORD','westos');      ##設置密碼爲westos // Admin Password
    28 $MEMCACHE_SERVERS[] = '172.25.79.1:11211';
    29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; 

 

  yum install -y telnet      ##爲何須要telnet?telnet就是查看某個端口是否可訪問。有時候常常要用的端口是 8080,那麼你能夠啓動服務器,用telnet 去查看這個端口是否可用。

   telnet localhost 11211  ##

      

      

 

7. 測試:

  瀏覽器輸入:172.25.254.1:memcache.php

  輸入設置的帳戶和密碼

  而後從新打開一個瀏覽器頁面,輸入172.25.254.1:example.php ,不斷刷新

      

  當訪問屢次example.php後,查看命中狀況會不斷提升,最後將會達到百分之百。 以下圖:

      

 

8.對頁面進行壓力測試  (加速頁面example.php和沒加速index.php的對比(錯誤率對比,相應時間對比))

(1)訪問 index.php

  ab -c 10 -n 5000 http://172.25.254.1/index.php  ## ab是性能測試的一個工具,可用於web的併發測試

      ab經常使用參數的介紹:

      -n :總共的請求執行數,缺省是1;

      -c: 併發數,缺省是1;

      -t:測試所進行的總時間,秒爲單位,缺省50000s

      -p:POST時的數據文件

      -w: 以HTML表的格式輸出結果

 

  注意:若是沒有ab這個命令,則能夠安裝下包:yum install httpd-tools-2.2.15-29.el6_4.x86_64 -y

  

  能夠看到所用時間爲5s左右,出錯個數爲529個:

      

 

 

(2)訪問 example.php

  ab -c 10 -n 5000 http://172.25.254.1/example.php

  能夠看到所用時間爲2s左右,出錯個數爲0個,速度提升了,錯誤率大大下降

      

相關文章
相關標籤/搜索