La notion de concurrence est trop vague. Nous utilisons ici deux indicateurs quantifiables : le nombre de connexions simultanées et le nombre de requêtes simultanées.
Le nombre de connexions simultanées fait référence au nombre de connexions TCP que le serveur maintient actuellement, et peu importe qu'il y ait une communication de données sur ces connexions. (Apprentissage recommandé : tutoriel Workerman )
Par exemple, un serveur de transmission de messages peut maintenir des millions de connexions d'appareils. Puisqu'il y a peu de communication de données sur la connexion, la charge sur ce serveur peut être élevée. être presque 0, et tant qu'il y a suffisamment de mémoire, vous pouvez continuer à accepter des connexions.
Recommandation de cours vidéo → : "Solution simultanée pour des dizaines de millions de données (théorie + combat pratique)"
Concurrency Le nombre de requêtes est généralement mesuré par QPS (combien de requêtes le serveur traite par seconde), mais le nombre de connexions TCP sur le serveur à l'heure actuelle n'est pas très préoccupant. Par exemple, si un serveur ne dispose que de 10 connexions client et que chaque connexion client comporte 1 W de requêtes par seconde, le serveur doit être capable de prendre en charge au moins 10*1W=10W de débit par seconde (QPS).
Supposons qu'un débit de 10 W par seconde soit la limite de ce serveur. Si chaque client envoie 1 requête au serveur par seconde, alors ce serveur peut prendre en charge des clients de 10 W.
Le nombre de connexions simultanées est limité par la mémoire du serveur. Généralement, un serveur Workerman de 24 Go de mémoire peut prendre en charge environ 120 W de connexions simultanées.
Le nombre de requêtes simultanées est limité par la capacité de traitement du processeur du serveur. Un serveur Workerman à 24 cœurs peut atteindre un débit de 45 W par seconde (QPS). La valeur réelle varie en fonction de la complexité de l'entreprise et. qualité des codes.
Remarque
L'extension Event ou Libevent doit être installée dans les scénarios à haute concurrence. De plus, le noyau Linux doit être optimisé, notamment la limite du nombre de fichiers ouverts par un processus.
Données de mesure du stress
Seule la référence des données QPS de la mesure du stress Workerman est fournie ici.
###Environnement de test :
Système : debian 6.0 64 bits
Mémoire : 64 G
cpu : Intel( R ) Processeur Xeon(R) E5-2420 0 à 1,90 GHz (2 processeurs physiques, 6 cœurs, 2 threads)
Workerman : Démarrez 200 processus Benchark
Script de test de stress : benchmark
Business : Envoyer et renvoyer une chaîne de bonjour
###Test de stress PHP normal (version 5.3.10)
Connexion courte (chaque requête Fermer la connexion après l'achèvement et demande d'établir une nouvelle connexion la prochaine fois) :
Conditions : Le script de test de stress ouvre 500 threads simultanés pour simuler 500 utilisateurs simultanés, chaque thread se connecte à Workerman 10W fois et chaque connexion envoie 1 requête
Résultat : Débit : 2,3 W/S, utilisation CPU : 36%
Connexion longue (la connexion n'est pas fermée après chaque requête, et la requête suivante continuera à réutiliser cette connexion ):
Conditions : Le script de test de stress ouvre 2000 threads simultanés pour simuler 2000 utilisateurs simultanés, chaque thread se connecte à Workerman une fois et chaque connexion envoie 10W de requêtes
Résultat : Débit : 36,7 W/S, utilisation du processeur : 69 %
Mémoire : chaque mémoire de processus est stable à 6444 Ko, aucune fuite de mémoire
Ce qui précède est les données de test de stress de la version php5.3, si avec php7, les performances seront encore améliorées d'environ 40%.
###HHVM environnement stress test
Connexion courte (fermez la connexion après chaque demande terminée et établissez une nouvelle connexion la prochaine fois) :
Conditions : Le script de test de stress ouvre 1 000 threads simultanés pour simuler 1 000 utilisateurs simultanés, chaque thread se connecte à Workerman 10 W et chaque connexion envoie 1 requête
Résultat : Débit : 3,5 W /S, utilisation du processeur : 35%
Connexion longue (la connexion n'est pas fermée après chaque requête, et la connexion continuera à être réutilisée pour la requête suivante) :
Conditions : Test de stress Le script ouvre 6 000 threads simultanés simulant 6 000 utilisateurs simultanés, chaque thread se connecte à Workerman une fois et chaque connexion envoie 10 W de requêtes
Résultats : Débit : 45 W/S, utilisation du processeur : 67 %
Mémoire : La mémoire de chaque processus dans l'environnement HHVM est stable à 46 Mo, sans fuite de mémoire
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!