Comment résoudre les problèmes de concurrence élevée et de trafic important en PHP

不言
Libérer: 2023-04-03 07:48:02
original
6279 Les gens l'ont consulté

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://请求地址
Copier après la connexion

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)  
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal