1. Concepts associés à l'architecture à haute concurrence
Le concept de haute concurrence : la concurrence, la haute concurrence, fait généralement référence à un accès simultané. C'est-à-dire, à un moment donné, combien de visites ont lieu en même temps.
2. Concernant la question de la concurrence élevée, de quoi devrions-nous collectivement nous préoccuper ?
qps : Le nombre de requêtes ou de requêtes par seconde. Dans le domaine Internet, il s'agit du nombre de requêtes de réponse par seconde (requêtes http). Débit : le nombre de requêtes traitées par unité de temps (généralement déterminé par le QPS et la concurrence). ). Temps de réponse, à partir du temps nécessaire pour envoyer une requête et recevoir une réponse. Par exemple, il faut 100 ms au système pour traiter une requête http. Le temps de réponse de ce système hormonal est de 100 ms : pages vues. , pages vues ou clics. Un visiteur recevra la réponse dans les 24 heures. Le nombre de pages visitées sur une période donnée n'est comptabilisé qu'une seule fois. le visiteur parcourt le site Web plusieurs fois au cours d'une certaine plage de temps et n'est compté que comme 1 visiteur indépendant. Bande passante : calculez la taille de la bande passante. Deux indicateurs doivent être pris en compte : le trafic de pointe et la taille moyenne de la page du site Web = pv/durée statistique. (converti en secondes) * taille moyenne de la page (unité Ko) * 8qps n'est pas égal au nombre de connexions simultanées. Qps est le nombre de requêtes http par seconde. Le nombre de connexions simultanées est le nombre de requêtes traitées par le système. en même temps. Le nombre maximal de requêtes par seconde (qps) = (80 % du nombre total de PV) / (20 % du nombre de secondes en 6 heures : le nombre maximum de simultanéités que le test). peut supporter, et le nombre maximum de concurrences auxquelles le test peut résister. Outils de test de valeur QPS : ab, wrk, http_loadab : peuvent créer plusieurs threads simultanés pour simuler plusieurs visiteurs accédant à une certaine adresse URL en même temps. Sa cible de test est basée sur l'URL, elle peut donc être utilisée pour tester la pression de charge d'Apache, oui, elle peut être testée
3 Précautions lors de l'utilisation de l'outil ab
La machine de test et la machine testée doivent être séparées et. ne se chevauchent pas. Effectuez des tests de résistance sur les services en ligne pour observer que le processeur, la mémoire, le réseau, etc. de la machine sur laquelle se trouve l'outil de test ab et de la machine frontale testée ne dépassent pas 75 % de la limite maximale
4. Solutions sous différents QPS
Exemples d'optimisation :
a, qps atteint 100
Supposons que chaque requête de la base de données relationnelle soit terminée en 0,01 seconde
En supposant qu'une seule page n'a qu'une seule requête SQL, alors 1000ps signifie que 100 les requêtes sont terminées en 1 seconde, mais pour le moment, nous ne pouvons pas garantir la base de données La requête peut être complétée 100 fois
Schéma : couche de cache de base de données, équilibrage de charge de base de données
qps atteint 800
Supposons que nous utilisons une bande passante de 100 M, ce qui signifie la bande passante réelle de l'exportation du site Web est d'environ 8M
Supposons que chaque page ne fait que 10k, dans des conditions de concurrence simultanée, la bande passante de 100M a été épuisée
Plan : accélération cdn, équilibrage de charge
qps atteint 1000
cache HTML statique
qps atteint 2000
à ce niveau. Les verrous d'accès au système de fichiers sont devenus un désastre,
Plan : séparation des activités, stockage distribué
5. Cas de solution à haute concurrence
Optimisation du trafic : traitement anti-hotlink
Optimisation front-end : réduire les requêtes http, ajouter des requêtes asynchrones, activer le navigateur mise en cache, compression de fichiers, accélération CDN, établissement d'un serveur d'images indépendant
Optimisation côté serveur : statique de page, traitement simultané, traitement de file d'attente
Optimisation de base de données : mise en cache de base de données, sous-base de données et sous-table, opération de partition (peut être complétée à l'aide d'outils ), Séparation en lecture et en écriture, équilibrage de charge
Optimisation du serveur Web : équilibrage de charge (en utilisant un proxy inverse, lvs pour réaliser l'équilibrage de charge)
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!