


Comment résoudre certains problèmes courants causés par la gestion d'une concurrence élevée dans la maintenance des serveurs
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]}'
Le résultat montre
TIME_WAIT 3828SYN_SENT 1FIN_WAIT1 107FIN_WAIT2 27ESTABLISHED 661SYN_RECV 23CLOSING 15LAST_ACK 284
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
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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 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

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.

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

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.

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.

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.
