Maison >titres >Comment PHP résout-il le big data, le trafic important et la concurrence élevée du site Web ?

Comment PHP résout-il le big data, le trafic important et la concurrence élevée du site Web ?

无忌哥哥
无忌哥哥original
2018-06-27 14:44:161888parcourir

1 : Matériel

Un serveur p4 ordinaire peut prendre en charge jusqu'à environ 100 000 IP par jour. Si le nombre de visites dépasse 10 W, un serveur dédié est nécessaire pour le résoudre. Si le matériel n'est pas puissant, comment optimiser le logiciel ? Tout cela ne sert à rien. Les principaux facteurs qui affectent la vitesse du serveur

sont : le réseau - la vitesse de lecture et d'écriture du disque dur - la taille de la mémoire - la vitesse de traitement du processeur.

2 : Aspect logiciel

La première chose dont il faut parler est la base de données. Tout d'abord, elle doit avoir une bonne structure. Essayez de ne pas utiliser de * dans les requêtes. indexe et trie les éléments fréquemment interrogés. Pour remplacer l'accès non séquentiel, si les conditions le permettent, il est généralement préférable d'installer le serveur MySQL

dans le système d'exploitation Linux. Concernant Apache et Nginx, il est recommandé d'utiliser nginx dans des situations de forte concurrence. Ginx est une bonne alternative au serveur Apache. nginx consomme moins de mémoire. Le test officiel peut prendre en charge 50 000 connexions simultanées, et dans l'environnement de production réel, le nombre de connexions simultanées peut atteindre 20 000 à 30 000. Fermez autant que possible les modules inutiles en PHP et utilisez Memcached est un système de mise en cache d'objets de mémoire distribuée hautes performances qui transfère directement les données de la mémoire sans utiliser de base de données. Cela améliore considérablement la vitesse d'iiS ou d'Apache permettant d'optimiser la compression GZIP. le site Web et compressez le contenu du site Web pour économiser considérablement le trafic du site Web.

Deuxièmement, les hotlinking externes sont interdits.

Le hotlinking d'images ou de fichiers provenant de sites Web externes entraîne souvent beaucoup de pression de charge, donc le hotlinking externe d'images ou de fichiers vers les siens

devrait être strictement limité. Heureusement, vous pouvez simplement vous y référer pour le moment. . Pour contrôler les hotlinking, Apache lui-même

peut désactiver les hotlinks via la configuration. IIS dispose également de certains ISAPI tiers qui peuvent réaliser la même fonction.

Bien sûr, la falsification de références peut également être effectuée via du code pour réaliser un hotlinking. Cependant, il n'y a actuellement pas beaucoup de personnes qui falsifient délibérément des références et des hotlinks

Vous pouvez l'ignorer ou utiliser des moyens non techniques pour le résoudre. comme sur les images. Ajoutez un filigrane.

Troisièmement, contrôlez le téléchargement de fichiers volumineux.

Le téléchargement de fichiers volumineux nécessitera beaucoup de trafic, et pour les disques durs non SCSI, le téléchargement d'un grand nombre de fichiers consommera du

CPU, ce qui réduira la réactivité du site Web. Par conséquent, essayez de ne pas proposer de téléchargements de fichiers volumineux dépassant 2 Mo. Si

est requis, il est recommandé de placer les fichiers volumineux sur un autre serveur.

Quatrièmement, utilisez différents hôtes pour détourner le trafic principal.

Placez les fichiers sur différents hôtes et fournissez différentes images à télécharger aux utilisateurs. Par exemple, si vous estimez que les fichiers RSS consomment

beaucoup de trafic, utilisez des services tels que FeedBurner ou FeedSky pour placer la sortie RSS sur d'autres hôtes. être concentré sur l'hôte de FeedBurner et RSS ne sera pas disponible et occupera trop de ressources

Cinquièmement, utilisez différents hôtes pour détourner le trafic principal

Placez les fichiers sur différents hôtes et fournissez différentes images à télécharger aux utilisateurs. . Par exemple, si vous estimez que les fichiers RSS consomment beaucoup de trafic, utilisez des services tels que FeedBurner ou FeedSky pour placer la sortie RSS sur d'autres hôtes. De cette manière, la majeure partie de la pression du trafic liée à l'accès des autres personnes sera concentrée sur. L'hébergeur de FeedBurner et RSS n'occuperont pas trop de ressources.

Sixièmement, utilisez un logiciel d'analyse et de statistiques du trafic.

L'installation d'un logiciel d'analyse et de statistiques du trafic sur le site Web peut savoir instantanément où une grande partie du trafic est consommée et quelles pages doivent être optimisées. Par conséquent, une analyse statistique précise est nécessaire pour résoudre le problème de trafic. Par exemple : Google Analytics.


Contraintes pour une simultanéité élevée et une charge élevée : matériel, déploiement, système d'exploitation, serveur Web, PHP, MySQL, tests

Déploiement : séparation des serveurs, cluster de bases de données et hachage des tables de bibliothèque, mise en miroir, charge équilibrage

Classification d'équilibrage de charge : 1), round robin DNS 2) Équilibrage de charge du serveur proxy 3) Équilibrage de charge de la passerelle de traduction d'adresses 4) Équilibrage de charge NAT 5) Équilibrage de charge du proxy inverse 6) Équilibrage de charge hybride

Plan de déploiement 1 :

Champ d'application : sites Web et systèmes d'application avec un contenu statique comme corps principal ; sites Web et systèmes d'application avec des exigences élevées en matière de sécurité du système.

Serveur principal : le serveur principal

supporte la principale pression d'exécution du programme et gère les requêtes dynamiques dans le site Web ou le système d'application

pousse les pages statiques vers plusieurs serveurs de publication ; ;

Poussez le fichier joint vers le serveur de fichiers ;

Pour les sites Web ayant des exigences de sécurité élevées et principalement statiques, le serveur peut être placé sur le réseau interne pour bloquer l'accès depuis le réseau externe.

Serveur DB : Le serveur de base de données

supporte la pression de lecture et d'écriture de la base de données

n'échange de données qu'avec le serveur principal et bloque l'accès au réseau externe ;

Serveur de fichiers/vidéo : le serveur de fichiers/vidéo

transporte des flux de données qui occupent de grandes ressources système et des ressources de bande passante dans le système

sert de stockage, de lecture et d'écriture ; grand entrepôt de pièces jointes ;

En tant que serveur vidéo, il disposera de capacités de traitement vidéo automatique.

Groupe de serveurs de publication :

est uniquement responsable de la publication des pages statiques et transporte la grande majorité des requêtes Web ;

effectue le déploiement d'équilibrage de charge via Nginx.

Plan de déploiement 2 :

Champ d'application : sites Web ou systèmes d'application avec un contenu interactif dynamique comme corps principal ; sites Web ou systèmes d'application avec une forte pression de charge et un budget suffisant

Groupe de serveurs Web :

Les services Web n'ont pas de relation maître-esclave et sont des conceptions redondantes parallèles

L'équilibrage de charge est obtenu via un équipement d'équilibrage de charge frontal ou un proxy inverse Nginx ;

Divisez les serveurs de fichiers/serveurs vidéo dédiés pour séparer efficacement les bus légers/lourds

 ;

Chaque serveur Web peut se connecter à toutes les bases de données via DEC et diviser le maître et l'esclave en même temps.

Groupe de serveurs de base de données :

Supporte une pression de lecture et d'écriture de base de données relativement équilibrée

Réalise la synchronisation des données de plusieurs bases de données grâce au mappage des fichiers physiques de la base de données ;

Disque/matrice de disques partagés

Sera utilisé pour la lecture et l'écriture unifiées de fichiers physiques de données

Entrepôt de stockage pour les pièces jointes volumineuses

Grâce à son propre physique Équilibre des disques et redondance pour garantir l'efficacité des E/S et la sécurité des données de l'ensemble du système ;

Caractéristiques de la solution :

Répartition raisonnable de la pression Web grâce à l'équilibrage de charge frontal

Via fichier/ Le serveur vidéo est séparé du serveur Web conventionnel pour répartir raisonnablement les flux de données légers et lourds

Répartir raisonnablement la pression des E/S de la base de données à travers le groupe de serveurs de base de données ; ne se connecte généralement qu'à un seul serveur de base de données. Grâce à la détection des battements de cœur de DEC, il peut automatiquement basculer vers un serveur de base de données redondant en très peu de temps

L'introduction de baies de disques améliore non seulement considérablement l'efficacité des E/S du système ; améliore considérablement la sécurité des données.

Serveur Web :

Une grande partie de l'utilisation des ressources du serveur Web provient du traitement des requêtes Web. Dans des circonstances normales, c'est la pression générée par Apache dans le cas d'une concurrence élevée. connexions, Nginx est Apache Une bonne alternative aux serveurs. Nginx (« moteur x ») est un serveur HTTP et proxy inverse hautes performances écrit en Russie. En Chine, de nombreux sites Web et chaînes tels que Sina, Sohu Pass, NetEase News, NetEase Blog, Kingsoft Xiaoyao.com, Kingsoft iPowerWord, Xiaonei.com, YUPOO Photo Album, Douban, Xunlei Kankan, etc. utilisent des serveurs Nginx.

Avantages de Nginx :

Connexions simultanées élevées : le test officiel peut prendre en charge 50 000 connexions simultanées, et dans l'environnement de production réel, le nombre de connexions simultanées atteint 20 000 à 30 000.

Faible consommation mémoire : sous 30 000 connexions simultanées, les 10 processus Nginx démarrés ne consomment que 150M de mémoire (15M*10=150M).

Fonction de vérification de l'état intégrée : si un serveur Web dans le backend de Nginx Proxy tombe en panne, l'accès frontal ne sera pas affecté.

Stratégie : par rapport à l'ancien Apache, nous choisissons Lighttpd et Nginx, des serveurs Web avec une utilisation des ressources plus réduite et une capacité de charge plus élevée.

Mysql :

MySQL lui-même a une forte capacité de chargement. L'optimisation de MySQL est une tâche très compliquée, car elle nécessite en fin de compte une bonne compréhension de l'optimisation du système. Tout le monde sait que le travail sur les bases de données implique un grand nombre de requêtes, de lectures et d'écritures à court terme. En plus des techniques de développement de logiciels telles que l'indexation et l'amélioration de l'efficacité des requêtes auxquelles il faut prêter attention lors du développement du programme, le principal impact sur l'efficacité d'exécution de MySQL. du point de vue des installations matérielles, cela vient de la recherche sur le disque, des niveaux d'E/S du disque, des cycles du processeur et de la bande passante mémoire.

Effectuer l'optimisation MySQL en fonction des conditions matérielles et logicielles sur le serveur. Le cœur de l’optimisation MySQL réside dans l’allocation des ressources système, ce qui ne signifie pas allouer plus de ressources à MySQL sans limite. Dans le fichier de configuration MySQL, nous introduisons certains des paramètres les plus remarquables :

Modifier la longueur du tampon d'index (key_buffer)

Modifier la longueur de la table (read_buffer_size)

Paramètres ouverts Le nombre maximum de tables (table_cache)

Définir une limite de temps (long_query_time) pour les requêtes longues et lentes

Si les conditions le permettent, il est généralement préférable d'installer le serveur MySQL dans le système d'exploitation Linux, et non installé dans FreeBSD.

Stratégie : l'optimisation de MySQL nécessite la formulation de différents plans d'optimisation basés sur les caractéristiques de lecture et d'écriture de la base de données du système d'entreprise et la configuration matérielle du serveur, et la structure maître-esclave de MySQL peut être déployée selon les besoins.


PHP :

1. Chargez le moins de modules possible

2 Si c'est sous la plateforme Windows, essayez d'utiliser IIS ou Nginx au lieu de ce que nous avons habituellement. utiliser Apache ;

3. Accélérateur d'installation (tous deux améliorent la vitesse d'exécution du code PHP en mettant en cache les résultats précompilés du code PHP et les résultats de la base de données)

eAccelerator, eAccelerator est un accélérateur PHP gratuit et open source, optimisé et dynamique. la mise en cache du contenu améliore les performances de mise en cache des scripts PHP, éliminant presque complètement la surcharge du serveur liée aux scripts PHP à l'état compilé.


Apc : Alternative PHP Cache (APC) est un cache de code optimisé gratuit et public pour PHP. Il est utilisé pour fournir un cadre gratuit, ouvert et robuste pour la mise en cache et l'optimisation du code intermédiaire PHP.

memcache : memcache est un système de mise en cache d'objets à mémoire distribuée hautes performances développé par Danga Interactive, qui est utilisé pour réduire la charge de la base de données et améliorer la vitesse d'accès dans les applications dynamiques. Le mécanisme principal consiste à maintenir une énorme table de hachage unifiée dans la mémoire. Memcache peut être utilisé pour stocker des données dans différents formats, notamment des images, des vidéos, des fichiers et des résultats de recherche dans des bases de données, etc.

Xcache : développé par des chinois. people Cache,

Stratégie : Installer l'accélérateur pour PHP.

Serveur proxy (serveur de cache) :

Squid Cache (appelé Squid) est un logiciel gratuit populaire (GNU General Public License) serveur proxy et serveur de mise en cache Web. Squid a un large éventail d'utilisations, allant de la fonction de serveur de cache frontal pour les serveurs Web afin d'augmenter la vitesse des serveurs Web en mettant en cache les requêtes pertinentes, à la mise en cache du World Wide Web, du système de noms de domaine et d'autres recherches Web pour un groupe. de personnes pour partager les ressources du réseau, pour aider le réseau en filtrant la sécurité, vers le réseau local via un réseau proxy. Squid est principalement conçu pour fonctionner sur des systèmes de type Unix.

Stratégie : l'installation du serveur proxy inverse Squid peut considérablement améliorer l'efficacité du serveur.

Tests de stress : les tests de stress sont un comportement d'assurance qualité de base qui fait partie de tout effort important de test de logiciels. L'idée de base des tests de stress est simple : au lieu d'exécuter des tests manuels ou automatisés dans des conditions normales, vous exécutez des tests dans des conditions où le nombre d'ordinateurs est petit ou les ressources système sont rares. Les ressources qui sont généralement testées sous contrainte incluent la mémoire interne, la disponibilité du processeur, l'espace disque et la bande passante réseau. La concurrence est généralement utilisée pour les tests de résistance.
Outils de tests de stress : webbench, ApacheBench, etc.

Tests de vulnérabilité : les vulnérabilités de notre système incluent principalement : les vulnérabilités d'injection SQL, les attaques de scripts intersites XSS, etc. La sécurité comprend également les logiciels système, tels que les vulnérabilités du système d'exploitation, les vulnérabilités de MySQL, Apache, etc., qui peuvent généralement être résolues par des mises à niveau.

Outil de test de vulnérabilité : Acunetix Web Vulnerability Scanner

Déclaration:
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