溫馨提示×

centos緩存實戰案例

小樊
39
2025-10-15 02:43:04
欄目: 智能運維

CentOS緩存實戰案例匯總

1. Redis鍵值緩存實戰(提升數據庫訪問性能)

Redis是高性能鍵值存儲系統,常用于緩存數據庫熱點數據,減少MySQL等后端數據庫的壓力。
操作步驟

  • 安裝Redis:通過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)。
  • 配置Redis:編輯/etc/redis/redis.conf,設置bind 0.0.0.0(允許遠程訪問)、daemonize yes(后臺運行)、requirepass yourpassword(設置訪問密碼)。
  • 集成應用層:在應用代碼中通過Redis SDK(如PHP的phpredis、Python的redis-py)連接Redis,將高頻查詢結果(如商品分類、用戶會話)存儲為鍵值對,設置合理過期時間(如EXPIRE key 3600表示1小時后自動刪除)。
    效果:某電商網站使用Redis緩存商品詳情后,數據庫查詢負載下降60%,頁面響應時間從2秒縮短至0.5秒。

2. Nginx反向代理緩存實戰(減輕后端服務器壓力)

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分鐘未訪問則失效)。
  • 設置緩存規則:在serverlocation塊中添加proxy_cache my_cache(啟用緩存)、proxy_cache_valid 200 302 30m(200/302狀態碼緩存30分鐘)、add_header X-Proxy-Cache $upstream_cache_status(返回緩存狀態,HIT/MISS/EXPIRED)。
    效果:某博客站點配置Nginx緩存后,靜態頁面(如HTML、CSS)的緩存命中率達85%,后端PHP-FPM進程數從10個減少到2個,服務器負載降低50%。

3. Varnish HTTP緩存實戰(加速動態內容交付)

Varnish是專門的HTTP緩存服務器,擅長緩存動態內容(如PHP、Python生成的頁面),提升高并發場景下的響應速度。
操作步驟

  • 安裝Varnish:通過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 varnishsystemctl enable varnish,通過varnishstat命令監控緩存命中率(cache_hit/cache_miss)。
    效果:某新聞門戶使用Varnish緩存動態頁面后,高峰時段并發請求處理能力從1000 QPS提升至3000 QPS,頁面加載時間從1.5秒縮短至0.3秒。

4. 系統級緩存優化實戰(調整內核參數提升效率)

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。

5. 應用層緩存清理實戰(釋放內存與磁盤空間)

定期清理應用層緩存(如YUM/DNF、Nginx、MySQL)可避免緩存占用過多資源,影響系統性能。
常見清理操作

  • 清理YUM/DNF緩存:執行sudo yum clean all(CentOS 7及以下)或sudo dnf clean all(CentOS 8及以上),刪除已下載的軟件包緩存。
  • 清理Nginx緩存:刪除/var/cache/nginx目錄下的緩存文件(sudo rm -rf /var/cache/nginx/*),釋放磁盤空間。
  • 清理MySQL緩存:停止MySQL服務(sudo systemctl stop mysqld),刪除/var/lib/mysql目錄下的緩存文件(如ib_logfile*),重啟服務(sudo systemctl start mysqld)。
  • 自動清理腳本:編寫Shell腳本(如cleanCache.sh),包含sync(同步內存到磁盤)、echo 3 > /proc/sys/vm/drop_caches(清理所有緩存),添加到crontab(0 */2 * * * /path/to/cleanCache.sh),每2小時自動執行。
    注意事項:清理緩存可能導致應用短暫重新加載數據,建議在業務低峰期執行。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女