LNMP架構優化 —— LNMP + memcached 對php頁面的緩存優化

1. LNMP+memcached

1.1 實驗環境

node1:192.168.1.11

LNMP環境:還沒有配置好LNMP環境,參考https://blog.csdn.net/m0_37868230/article/details/105965040配置環境

1.2 memcached

1.2.1 memcached定義

Memcached是一個自由開源的,高性能,分佈式內存對象緩存系統。

web應用都將數據保存在數據庫中,應用服務器從中讀取數據並在瀏覽器中顯示。但隨着數據量的增大、訪問的集中,會導致數據庫負擔加重、數據庫響應惡化、網站顯示延遲等重大影響。這個時候就需要memcached通過緩存數據庫查詢結果、減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

Memcached是一種基於內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。

1.2.2 memcached工作流程

因此每次更新mysql中數據,也會同時更新memcached中的數據,來保證一致性。且當memcached內存空間用完,會使用LRU策略和到期失效策略,替換數據。首先將失效數據替換,接下來是最近未使用數據。

1.2.3 memcached安裝

yum install -y memcached.x86_64

rpm -qa | grep memcached                    # 查詢安裝的信息
rpm -ql memcached-1.4.15-10.el7_3.1.x86_64  # 查詢並列出安裝的包的內容

1.2.4 安裝php的memcache擴展

  • 獲取安裝包

下載地址:https://pecl.php.net/package/memcache 

  • 解壓安裝包
tar zxf memcache-4.0.5.2.tgz

可以看到,當前目錄下,沒有編譯的文件,因此這裏我們需要使用phpize來生成編譯文件

  • 通過phpize生成編譯文件【注意,這裏是因爲memcache是php的一個模塊,纔可以使用phpize來生成
ln -s /usr/local/lnmp/php/bin/* /usr/local/bin/  # 做軟鏈接,可以直接使用bin目錄下的命令
source /etc/profile                              # 重新加載環境變量
phpize                                           # 生成編譯文件

yum install -y autoconf       # 安裝autoconf

此時,我們再次去生成編譯文件,就沒有問題了,我們想要的configure文件就已經生成了。結果如下:

  • 編譯
./configure --with-php-config=/usr/local/lnmp/php/bin/php-config    # 指定php配置文件的路徑

  • make && make install

  • 修改php配置文件,引入擴展
vim /usr/local/lnmp/php/etc/php.ini
/etc/init.d/php-fpm reload            # 重啓php

php -m | grep memcache                # 查看是否有memcache模塊

查詢可以看到,模塊引入成功~

1.2.5 測試

  • 複製memache的php頁面
cp example.php memcache.php /usr/local/lnmp/nginx/html/   # 複製php文件到html下
vim /usr/local/lnmp/nginx/html/memcache.php               # 編輯memcache.php

  • 啓動memcached服務

  • 瀏覽器訪問 

  • 測試速率優化 
yum install -y httpd-tools-2.4.6-88.el7.x86_64   # 安裝ab工具所在的包

ab -c 10 -n 3000 http://192.168.1.11/index.php
# 10個併發3000次請求訪問http://192.168.1.11/index.php[沒有經過memcache緩存,看一下緩存速率有多快]

ab -c 10 -n 3000 http://192.168.1.11/example.php
# 10個併發3000次請求訪問http://192.168.1.11/example.php[經過memcache緩存,看一下緩存速率有多快]

可以看到,memcached緩存的沒有失敗的請求,且處理速率高[處理請求多,因此直觀看上去貌似是前者快,但實際處理請求越多時差距越明顯]~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章