快速解決ThinkPHP5.1出現MISS快取未命中問題

2023-02-08 14:02:03

本篇文章給大家帶來了關於ThinkPHP5.1的相關知識,其中主要介紹了CDN是什麼?為什麼使用它?怎麼解決ThinkPHP5.1 MISS快取未命中問題?感興趣的朋友下面一起來看一下吧,希望對大家有幫助。

ThinkPHP5.1使用CDN加速-MISS快取未命中解決

在單獨給首頁設定CDN加速後,出現了X-Cache: MISS TCP_MISS dirn:-2:-2,MISS也就是快取沒有被命中。這個問題不是設定錯了,而框架問題。

什麼要使用CDN?

「cdn簡介 CDN的全稱是Content Delivery Network,即內容分發網路。

為什麼使用CDN?

CDN就近節點存取,提高了網站載入速度,降低延時;能起到分流作用,減輕伺服器負載,

使用動靜分離提高網站存取速度。

設定實現

這個呢,我是部署在了生產環境,實際測試大並行高流量處理,當然了,也有很多的不足。

環境

伺服器:騰訊雲

系統:CentOS7

框架:ThinkPHP5.1

使用阿里雲OSS+CDN並設定快取

當然還要有經過備案的域名。

關於怎麼使用阿里雲OSS物件儲存系統,Laravel6.x上傳視訊到阿里雲Oss物件儲存 這篇文章記錄過。

bucket建立完成後,可以在列表中看到 '阿里雲 CDN 加速',點選這個進行相關的CDN操作,設定完後需要在域名中進行解析。

問題

在單獨給首頁設定CDN加速後,出現了X-Cache: MISS TCP_MISS dirn:-2:-2,MISS也就是快取沒有被命中。這個問題不是設定錯了,而框架問題。

解決方法如下:

第一步:public/index.php讀取/設定快取限制器

<?php
namespace think;

// 設定快取限制
session_cache_limiter('public');

require __DIR__ . '/../thinkphp/base.php';
Container::get('app')->run()->send();
登入後複製

第二步:開啟請求快取

// 檔案位置: config/app.php

'request_cache'          => true,
登入後複製

ab壓測

如下壓測是經過了CDN+OSS之後的結果,可以看到qps可以達到573

$ ab -c100 -n1000 你的頁面URL

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking miaosha.nikexu.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
 

Server Software:        Tengine
Server Hostname:        miaosha.nikexu.com
Server Port:            80

Document Path:          /
Document Length:        774 bytes

Concurrency Level:      100
Time taken for tests:   1.745 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1403829 bytes
HTML transferred:       774000 bytes
Requests per second:    573.16 [#/sec] (mean)
Time per request:       174.472 [ms] (mean)
Time per request:       1.745 [ms] (mean, across all concurrent requests)
Transfer rate:          785.76 [Kbytes/sec] received

Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:       15   17   1.5     16      25
Processing:    18   91 113.4     71    1195
Waiting:       18   90 113.4     71    1195
Total:         36  107 113.4     87    1212

Percentage of the requests served within a certain time (ms)
 50%     87
 66%     99
 75%    103
 80%    105
 90%    120
 95%    195
 98%    437
 99%    834
100%   1212 (longest request)
登入後複製

在來看看500個並行的壓測。

ab -c500 -n10000 你的頁面URL

Requests per second:    965.61 [#/sec] (mean)
Time per request:       517.806 [ms] (mean)
Time per request:       1.036 [ms] (mean, across all concurrent requests)

Percentage of the requests served within a certain time (ms)
 50%    257
 66%    319
 75%    541
 80%   1043
 90%   1102
 95%   1281
 98%   1560
 99%   1821
100%   3771 (longest request)
登入後複製

通過這個兩個手段,已經可以看到還並行量提供,500的並行量,80%的使用者可以在1s左右開啟。在沒有使用CDN+OSS前,我壓測的結果是 150的並行,CPU就衝到了90%。使用OSS+CDN的優勢就不言而喻了。

推薦學習:《》

以上就是快速解決ThinkPHP5.1出現MISS快取未命中問題的詳細內容,更多請關注TW511.COM其它相關文章!