Maison >développement back-end >tutoriel php >Comment résoudre les problèmes de concurrence élevée et de trafic important en PHP
Cet article présente principalement comment résoudre les problèmes de concurrence élevée et de trafic important en PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
. Connaissances de base
TFS : Débit (Le débit fait référence au nombre de requêtes traitées par le système par unité de temps)
RT : Temps de réponse (à partir du moment où la demande est envoyée jusqu'au temps de réponse)
Concurrence : Le nombre d'utilisateurs qui accèdent au site en même temps dans une période de temps
QPS : Taux de requêtes par seconde (requêtes ou réponses par seconde, dans le domaine Internet, le nombre de réponses par seconde (requêtes HTTP))
PV : page vue page vues
UV : vue utilisateur vue utilisateur
De manière générale, le pv quotidien ( visites) est supérieur à 10 millions. Il peut être considéré comme une concurrence élevée
Bande passante quotidienne du site Web = PV / temps statistique (secondes) * taille moyenne de la page (Ko) * 8
Test de stress
Il est recommandé d'utiliser le propre outil de test de stress d'Apache ab
Comment utiliser : Entrez le répertoire apache et exécutez dans le répertoire courant (windows) :
ab.exe -n 总请求量 -c 并发请求量 http://请求地址
Une fois la requête terminée, nous pouvons obtenir le data :
Server Software: Apache/2.4.18 服务器类型 Server Hostname: eko.xiao.com 域名 Server Port: 80 端口 Document Path: /index.html 请求文件 Document Length: 529 bytes 文件大小 Concurrency Level: 100 并发数 Time taken for tests: 1.240 seconds 总响应时间 Complete requests: 1000 请求数 Failed requests: 0 失败次数 Total transferred: 800000 bytes 总共传输数据量 HTML transferred: 529000 bytes Requests per second: 806.41 [#/sec] (mean) QPS(每秒查询率) Time per request: 124.007 [ms] (mean) 平均响应时间 Time per request: 1.240 [ms] (mean, across all concurrent requests) Transfer rate: 630.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.4 1 38 Processing: 42 114 34.2 103 204 Waiting: 41 113 33.9 102 204 Total: 43 115 34.5 104 207 Percentage of the requests served within a certain time (ms) 50% 104 66% 117 75% 133 80% 136 90% 173 95% 197 98% 204 99% 204 100% 207 (longest request)
Optimisation
À mesure que le QPS augmente, différentes mesures d'optimisation sont nécessaires à chaque étape. Le plan d'optimisation est également lié au matériel et au réseau. conditions
Le QPS atteint 50
Aucune optimisation requise
Le QPS atteint 100 (couche de base de données)
En supposant que chaque requête de base de données prend 0,01 S et que chaque page a une seule requête SQL, alors la limite de la base de données est déjà atteinte à ce moment
Mesures d'optimisation : cache de base de données, équilibrage de charge de la base de données, redis, memcache
Le QPS atteint 800 (bande passante réseau)
En supposant que chaque page ne fait que 10K, alors à 800QPS, la bande passante a été épuisée
Mesures d'optimisation : accélération du CDN Équilibrage de charge
Le QPS atteint 1000
Mesures d'optimisation : Page statique
Optimisation du trafic :
Poignée anti-hotlinking
Optimisation front-end :
Réduire les requêtes HTTP
Ajouter du asynchrone requêtes
Activer le cache du navigateur
Optimisation du serveur :
Page statique
Traitement simultané
Traitement de la file d'attente
Base de données optimisation :
Mise en cache de la base de données
Sous-bibliothèque et sous-table, opération de partition
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à tout le monde. apprentissage. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
expert php partagé : spécifications d'écriture de code PHP, un résumé complet
PHP Introduction à l'installation et intégration avec Apache
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!