Cet article vous apporte des connaissances pertinentes sur ThinkPHP5.1. Il présente principalement qu'est-ce que CDN ? Pourquoi l'utiliser ? Comment résoudre le problème de manque de cache ThinkPHP5.1 MISS ? Les amis intéressés peuvent jeter un œil ci-dessous. J'espère que cela sera utile à tout le monde.
ThinkPHP5.1 utilise l'accélération CDN-MISS cache miss solution
Après avoir configuré l'accélération CDN pour la page d'accueil uniquement, X-Cache : MISS TCP_MISS dirn:-2:-2 est apparu, MISS est le cache Non touché . Ce problème n'est pas une mauvaise configuration, mais un problème de framework.
Pourquoi utiliser le CDN ?
"Introduction au CDN Le nom complet du CDN est Content Delivery Network, qui est un réseau de distribution de contenu.
Pourquoi utiliser le CDN ?
L'accès CDN aux nœuds à proximité améliore la vitesse de chargement du site Web et réduit la latence ; il peut jouer un rôle rôle de détournement. Réduisez la charge du serveur,
utilisez la séparation dynamique et statique pour améliorer la vitesse d'accès au site Web
Implémentation de la configuration
J'ai déployé cela dans un environnement de production pour tester réellement le traitement simultané à grande échelle et à fort trafic. , il y a de nombreuses lacunes
Environnement
Serveur : Tencent Cloud
Système : CentOS7
Framework : ThinkPHP5.1
Utilisez Alibaba Cloud OSS+CDN et configurez le cache
Bien sûr, vous devez également avoir un nom de domaine enregistré
Sur l'utilisation du système de stockage d'objets Alibaba. Cloud OSS, Laravel6.x télécharge des vidéos sur Alibaba Cloud Oss Object Storage comme documenté dans cet article
Une fois le compartiment créé, vous pouvez voir «Alibaba Cloud CDN Acceleration». dans la liste, cliquez dessus pour effectuer les opérations CDN associées, cela doit être résolu dans le nom de domaine après la configuration
Problème
Après avoir configuré l'accélération CDN pour la page d'accueil uniquement, X-Cache : MISS TCP_MISS dirn : - 2:-2 apparaît, MISS signifie que le cache n'est pas touché . Ce problème n'est pas un problème de configuration, mais un problème de framework
La solution est la suivante :
Étape 1 : Lire/définir le cache. limiteur dans public/index.php
<?php namespace think; // 设置缓存限制 session_cache_limiter('public'); require __DIR__ . '/../thinkphp/base.php'; Container::get('app')->run()->send();
Étape 2 : Ouvrez la demande. Cache
// 文件位置: config/app.php 'request_cache' => true,
ab stress test
Le test de stress suivant est le résultat après CDN+OSS. Vous pouvez voir que les qps peuvent. atteindre 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)
Jetons un coup d'œil au test de stress simultané de 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)
Réussi. Ces deux méthodes peuvent déjà être considérées comme fournissant une simultanéité de 500, 80 % des utilisateurs peuvent l'ouvrir en 1 seconde environ. en utilisant CDN+OSS, le résultat de mon test de stress était de 150 concurrence et le processeur était surchargé à 90 %. Les avantages de l'utilisation d'OSS+CDN sont évidents
Apprentissage recommandé : "thinkPHP Video Tutorial"
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!