Redis是高性能鍵值存儲系統,常用于緩存數據庫熱點數據,減少MySQL等后端數據庫的壓力。
操作步驟:
yum install -y gcc make
安裝依賴,下載并編譯Redis源碼(如wget http://download.redis.io/releases/redis-6.2.6.tar.gz
,tar xzf redis-6.2.6.tar.gz
,cd redis-6.2.6 && make && sudo make install
)。/etc/redis/redis.conf
,設置bind 0.0.0.0
(允許遠程訪問)、daemonize yes
(后臺運行)、requirepass yourpassword
(設置訪問密碼)。phpredis
、Python的redis-py
)連接Redis,將高頻查詢結果(如商品分類、用戶會話)存儲為鍵值對,設置合理過期時間(如EXPIRE key 3600
表示1小時后自動刪除)。Nginx可作為反向代理服務器,緩存后端應用(如PHP、Java)的響應結果,避免重復請求穿透到后端。
操作步驟:
/etc/nginx/nginx.conf
,添加proxy_cache_path
指令定義緩存目錄和參數(如proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off
,表示緩存目錄為/var/cache/nginx
,鍵區域my_cache
大小為10MB,最大緩存1GB,60分鐘未訪問則失效)。server
或location
塊中添加proxy_cache my_cache
(啟用緩存)、proxy_cache_valid 200 302 30m
(200/302狀態碼緩存30分鐘)、add_header X-Proxy-Cache $upstream_cache_status
(返回緩存狀態,HIT/MISS/EXPIRED)。Varnish是專門的HTTP緩存服務器,擅長緩存動態內容(如PHP、Python生成的頁面),提升高并發場景下的響應速度。
操作步驟:
yum install -y varnish
安裝,默認監聽80端口(需調整Nginx/Apache端口為8080)。/etc/varnish/default.vcl
,設置后端服務器(backend default { .host = "127.0.0.1"; .port = "8080"; }
)、緩存邏輯(如sub vcl_backend_response { if (beresp.http.Cache-Control ~ "no-cache") { set beresp.uncacheable = true; } }
,避免緩存動態內容)。systemctl start varnish
和systemctl enable varnish
,通過varnishstat
命令監控緩存命中率(cache_hit
/cache_miss
)。CentOS系統內核提供多種緩存機制(如頁緩存、目錄項緩存),通過調整內核參數可優化緩存使用效率。
關鍵操作:
vm.swappiness
:該參數控制內核使用交換分區(Swap)的傾向(0-100,值越低越傾向于使用物理內存)。編輯/etc/sysctl.conf
,添加vm.swappiness=10
(減少Swap使用,避免磁盤I/O瓶頸),執行sysctl -p
生效。vm.dirty_ratio
(臟頁占內存的最大比例,默認40%)和vm.dirty_background_ratio
(后臺寫回臟頁的閾值,默認10%)。調整為vm.dirty_ratio=40
、vm.dirty_background_ratio=10
,平衡內存利用率與磁盤寫入性能。noatime
掛載:編輯/etc/fstab
,為根分區添加noatime
選項(如/dev/sda1 / ext4 defaults,noatime 1 1
),減少文件訪問時間戳的更新,降低磁盤I/O。swappiness
后,Swap使用率從15%降至2%,內存利用率提升10%;調整臟頁參數后,數據庫寫入延遲從5ms降低至2ms。定期清理應用層緩存(如YUM/DNF、Nginx、MySQL)可避免緩存占用過多資源,影響系統性能。
常見清理操作:
sudo yum clean all
(CentOS 7及以下)或sudo dnf clean all
(CentOS 8及以上),刪除已下載的軟件包緩存。/var/cache/nginx
目錄下的緩存文件(sudo rm -rf /var/cache/nginx/*
),釋放磁盤空間。sudo systemctl stop mysqld
),刪除/var/lib/mysql
目錄下的緩存文件(如ib_logfile*
),重啟服務(sudo systemctl start mysqld
)。cleanCache.sh
),包含sync
(同步內存到磁盤)、echo 3 > /proc/sys/vm/drop_caches
(清理所有緩存),添加到crontab(0 */2 * * * /path/to/cleanCache.sh
),每2小時自動執行。