首頁  >  文章  >  php框架  >  快速解決ThinkPHP5.1出現MISS快取未命中問題

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

藏色散人
藏色散人轉載
2023-02-08 10:56:271533瀏覽

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

快速解決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(&#39;public&#39;);

require __DIR__ . &#39;/../thinkphp/base.php&#39;;
Container::get(&#39;app&#39;)->run()->send();

第二步:開啟請求快取

// 文件位置: config/app.php

&#39;request_cache&#39;          => 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的優勢就不言而喻了。

推薦學習:《

thinkPHP影片教學

以上是快速解決ThinkPHP5.1出現MISS快取未命中問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:ziruchu.com。如有侵權,請聯絡admin@php.cn刪除