Maison > Article > développement back-end > PHP résout le big data, le trafic important et la concurrence élevée des sites Web
Cet article présente principalement le contenu de PHP pour résoudre le big data, le trafic important et la concurrence élevée du site Web. valeur de référence. Partagez-le maintenant avec tout le monde, les amis dans le besoin peuvent s'y référer
1 : Matériel
Un p4 ordinaire Notre serveur 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, quelle que soit la façon dont vous optimisez le logiciel, cela n'aidera pas. . 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 haute performance qui transfère directement les données de la mémoire sans utiliser de base de données, ce qui améliore considérablement la vitesse
Activez la compression GZIP sur iiS ou Apache pour optimiser le site Web et compresser le contenu du site Web afin d'é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êmepeut 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, mais actuellement, peu de personnes falsifient délibérément des références vers un hotlinkVous pouvez l'ignorer ou utiliser des moyens non techniques pour le résoudre, tels que. comme sur les photos. 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
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
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ôte de FeedBurner et RSS n'occuperont pas trop de ressources.
Sixièmement, utilisez un logiciel d'analyse et de statistiques du trafic.
Forte concurrence et contraintes de charge élevées : matériel, déploiement, système d'exploitation, serveur web, PHP, MySQL, tests
Déploiement : séparation des serveurs, hachage du cluster de bases de données et des tables de bibliothèque, mise en miroir, équilibrage de charge
Classification de l'é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 Exigences de sécurité du système Plus élevées ; sites Web et systèmes d’application.
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 ;La division des serveurs de fichiers dédiés/serveurs vidéo sépare efficacement les bus légers/lourds ;
Chaque serveur Web peut se connecter à toutes les bases de données via DEC et le diviser en maître et 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 standard 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 via 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, mais également ; 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 charge. 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 plate-forme windows, essayez d'utiliser IIS ou Nginx à la place. us Apache couramment utilisé ;
3. Installer un accélérateur (les 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 qui optimise la mise en cache dynamique du contenu, améliore les performances de mise en cache des scripts PHP et élimine presque complètement la surcharge du serveur des 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és : les vulnérabilités de notre système incluent principalement : Vulnérabilités d'injection SQL, 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
Aucun contenu associé trouvé.
Recommandations associées :
Plusieurs implémentations de PHP pour résoudre les problèmes de concurrence
php résout le problème de perte lors de la publication de grandes quantités de données
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!