Maison Opération et maintenance exploitation et maintenance Linux Comment résoudre certains problèmes courants causés par la gestion d'une concurrence élevée dans la maintenance des serveurs

Comment résoudre certains problèmes courants causés par la gestion d'une concurrence élevée dans la maintenance des serveurs

Jul 24, 2017 am 10:49 AM
导致 并发 服务器

Suivons le scénario ici, après tout, le scénario est le meilleur moyen de faire l'expérience de l'aspect pratique. Tout d'abord, parlons de la configuration et de l'environnement du serveur

Hôte cloud Alibaba Cloud ECS, mémoire 8 Go, processeur 4 cœurs, bande passante 20 Mo, disque système 20 Go + disque de données 200 Go, CentOS 6,564 bits, environnement lnmp intégré installé

Scénario : WeChat envoie des enveloppes rouges

Ce scénario est très courant. Généralement, les clients envoient une publicité depuis le compte public WeChat à l'heure actuelle. à environ 5 000. En parlant de cela, cela n'est pas réellement considéré comme une concurrence élevée, mais le serveur est toujours tombé en panne et il a fallu environ 5 minutes pour revenir à la normale. C’est un peu inapproprié, analysons les raisons. L'utilisation du processeur n'est pas élevée et l'utilisation de la mémoire est normale. Dans le panneau de configuration Alibaba Cloud, le trafic de sortie du réseau est saturé. Il semble que le problème soit dû à des raisons de réseau.

Tout d'abord, j'ai vérifié les ressources statiques et j'ai constaté que la plupart des images n'étaient pas optimisées, je les ai donc supprimées et effectué une compression sans perte. J'ai probablement omis environ 1 Mo de taille. Après la soumission, elles ont quand même planté. et le serveur affichait fréquemment 502.

Vérifiez à nouveau les ressources statiques css et js de la page et remplacez la bibliothèque js couramment utilisée par CDN pour réduire le nombre de requêtes. Après soumission, il n'y a toujours pas beaucoup de changement, et le 502 reste le même. .

Vérifiez donc le nombre de connexions nginx et utilisez la commande

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
Copier après la connexion

Le résultat montre

TIME_WAIT 3828SYN_SENT 1FIN_WAIT1 107FIN_WAIT2 27ESTABLISHED 661SYN_RECV 23CLOSING 15LAST_ACK 284
Copier après la connexion

Bon garçon, TIME_WAITE est très élevé, assurez-vous de parler de la signification de TIME_WAITE ici : TIME_WAIT : une version a été initialisée de l'autre côté. Qu'est-ce que cela signifie? Cela signifie que le serveur a été activement arrêté et attend une réponse du client. Si le client ne répond pas, il attendra et cette valeur augmentera. Évidemment, nous devons réduire la valeur de TIME_WAIT à ce moment-là.

Ici, il vous suffit de modifier certains paramètres de sysctl.conf. Modifiez le fichier /etc/sysctl.conf et vérifiez si

est un tel paramètre. Si celui correspondant est introuvable, archiver le fichier Ajoutez-le simplement à la fin. Après avoir enregistré, exécutez

/sbin/sysctl -p
Copier après la connexion

pour le configurer pour qu'il prenne effet.

Continuez à vérifier le nombre de connexions nginx après 20 minutes. Le résultat est

TIME_WAIT 87SYN_SENT 1FIN_WAIT1 60FIN_WAIT2 19ESTABLISHED 477SYN_RECV 12CLOSING 2LAST_ACK 100
Copier après la connexion

et il est revenu à la normale, et la bande passante du réseau a également diminué. .

Mais les bons moments n'ont pas duré longtemps. Quand j'ai commencé à récupérer des enveloppes rouges à la deuxième heure, 502 sont réapparues. La vérification du processus a révélé que l'utilisation du processeur de mysqld était très élevée, provoquant une charge complète du processeur et un crash du serveur. Modifiez le fichier de configuration MySQL et ajustez max_connection à 30000. D'autres paramètres associés ont été ajustés et optimisés, et la situation a été atténuée, mais en quelques minutes, le processeur était à nouveau complètement chargé.

Bizarre ! J'ai donc vérifié le processus dans MySQL et constaté qu'il y avait des requêtes SQL fréquentes et que le volume de données de plusieurs tables interrogées était d'environ 100 000. Il a été jugé que c'était parce qu'aucun index n'était défini. Après avoir consulté le développement back-end, il s'est avéré que seule la clé primaire était définie. Modifiez-le immédiatement. Cinq minutes après l'avoir soumis, le CPU a chuté et s'est stabilisé à environ 10 %, et 502 n'est plus apparu.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment la concurrence et le multithreading des fonctions Java peuvent-ils améliorer les performances ? Comment la concurrence et le multithreading des fonctions Java peuvent-ils améliorer les performances ? Apr 26, 2024 pm 04:15 PM

Les techniques de concurrence et de multithreading utilisant les fonctions Java peuvent améliorer les performances des applications, notamment en suivant les étapes suivantes : Comprendre les concepts de concurrence et de multithreading. Tirez parti des bibliothèques de concurrence et multithread de Java telles que ExecutorService et Callable. Pratiquez des cas tels que la multiplication matricielle multithread pour réduire considérablement le temps d'exécution. Profitez des avantages d’une vitesse de réponse accrue des applications et d’une efficacité de traitement optimisée grâce à la concurrence et au multithreading.

Application de la concurrence et des coroutines dans la conception de l'API Golang Application de la concurrence et des coroutines dans la conception de l'API Golang May 07, 2024 pm 06:51 PM

La concurrence et les coroutines sont utilisées dans la conception GoAPI pour : Traitement hautes performances : traiter plusieurs requêtes simultanément pour améliorer les performances. Traitement asynchrone : utilisez des coroutines pour traiter des tâches (telles que l'envoi d'e-mails) de manière asynchrone, libérant ainsi le thread principal. Traitement des flux : utilisez des coroutines pour traiter efficacement les flux de données (tels que les lectures de bases de données).

Comment installer l'extension PHP FFmpeg sur le serveur ? Comment installer l'extension PHP FFmpeg sur le serveur ? Mar 28, 2024 pm 02:39 PM

Comment installer l’extension PHPFFmpeg sur le serveur ? L'installation de l'extension PHPFFmpeg sur le serveur peut nous aider à traiter les fichiers audio et vidéo dans les projets PHP et à implémenter des fonctions telles que l'encodage, le décodage, l'édition et le traitement des fichiers audio et vidéo. Cet article explique comment installer l'extension PHPFFmpeg sur le serveur, ainsi que des exemples de code spécifiques. Tout d’abord, nous devons nous assurer que PHP et FFmpeg sont installés sur le serveur. Si FFmpeg n'est pas installé, vous pouvez suivre les étapes ci-dessous pour installer FFmpe

Comment la connexion à la base de données Java gère-t-elle les transactions et la concurrence ? Comment la connexion à la base de données Java gère-t-elle les transactions et la concurrence ? Apr 16, 2024 am 11:42 AM

Les transactions garantissent l'intégrité des données de la base de données, y compris l'atomicité, la cohérence, l'isolation et la durabilité. JDBC utilise l'interface Connection pour assurer le contrôle des transactions (setAutoCommit, commit, rollback). Les mécanismes de contrôle de concurrence coordonnent les opérations simultanées, à l'aide de verrous ou d'un contrôle de concurrence optimiste/pessimiste pour obtenir une isolation des transactions afin d'éviter les incohérences des données.

Équipé de processeurs AMD EPYC série 4004, ASUS lance une variété de produits pour serveurs et stations de travail Équipé de processeurs AMD EPYC série 4004, ASUS lance une variété de produits pour serveurs et stations de travail Jul 23, 2024 pm 09:34 PM

Selon des informations publiées sur ce site Web le 23 juillet, ASUS a lancé une variété de produits au niveau serveur et station de travail alimentés par des processeurs AMD EPYC série 4004. Note de ce site : AMD a lancé en mai la plate-forme AM5 et les processeurs de la série EPYC 4004 à architecture Zen4, offrant jusqu'à 16 spécifications de cache 3DV cœurs. Serveur ASUSProER100AB6 ASUSProER100AB6 est un produit de serveur rack 1U équipé d'un processeur EPYC Xiaolong série 4004, adapté aux besoins d'IDC et des petites et moyennes entreprises. La station de travail ASUSExpertCenterProET500AB6 ASUSExpertCenterProET500AB6 est une

Un guide pour les tests unitaires des fonctions simultanées Go Un guide pour les tests unitaires des fonctions simultanées Go May 03, 2024 am 10:54 AM

Les tests unitaires des fonctions simultanées sont essentiels car cela permet de garantir leur comportement correct dans un environnement simultané. Des principes fondamentaux tels que l'exclusion mutuelle, la synchronisation et l'isolement doivent être pris en compte lors du test de fonctions concurrentes. Les fonctions simultanées peuvent être testées unitairement en simulant, en testant les conditions de concurrence et en vérifiant les résultats.

Comment utiliser les classes atomiques dans la concurrence des fonctions Java et le multithreading ? Comment utiliser les classes atomiques dans la concurrence des fonctions Java et le multithreading ? Apr 28, 2024 pm 04:12 PM

Les classes atomiques sont des classes thread-safe en Java qui fournissent des opérations ininterrompues et sont cruciales pour garantir l'intégrité des données dans des environnements concurrents. Java fournit les classes atomiques suivantes : AtomicIntegerAtomicLongAtomicReferenceAtomicBoolean Ces classes fournissent des méthodes pour obtenir, définir et comparer des valeurs afin de garantir que l'opération est atomique et ne sera pas interrompue par des threads. Les classes atomiques sont utiles lorsque vous travaillez avec des données partagées et évitez la corruption des données, comme la gestion de compteurs partagés pour les accès simultanés.

Planification des processus Golang : optimiser l'efficacité de l'exécution simultanée Planification des processus Golang : optimiser l'efficacité de l'exécution simultanée Apr 03, 2024 pm 03:03 PM

La planification des processus Go utilise un algorithme coopératif. Les méthodes d'optimisation incluent : l'utilisation de coroutines légères autant que possible pour allouer raisonnablement les coroutines afin d'éviter de bloquer les opérations et d'utiliser des verrous et des primitives de synchronisation.

See all articles