编程知识 cdmana.com

Comment effectuer un test de connexion TCP de 10 millions de niveaux

「C'est ma participation11Le défi du mois de juin24Oh, mon Dieu.,Voir les détails de l'événement:2021Un dernier défi」.

Contexte

Nous avons déjà décrit l'utilisation de Jmeter En cours TCP Essais de connexions massives,Mais utiliser Jmeter Besoin d'un mode distribué,Et même le modèle distribué prend beaucoup de ressources,Nous avons donc besoin d'un moyen d'économiser des ressources et d'atteindre des connexions à plus grande échelle.Aujourd'hui,Il arrive.

Introduction à l'outil

Après un petit test,Cet outil permet de réaliser facilement quatre niveaux TCP 10 millions de connexions,Quelqu'un en ligne a testé.C'est ça. handy,Il est simple et facile à utiliser C++Bibliothèque Web,Il peut réaliser des millions de concurrence autonome.

Sur le terrain

Parce que handy - Oui. CS Architecture,Nous devons donc installer sur le serveur et sur le client handy.

C'est important

Parce que Linux Il y a une limite au nombre de poignées de fichiers et de ports pour,Nous devons donc d'abord modifier ces limites pour le serveur et le client au maximum.Simple.,Exécutez les commandes suivantes avant de tester:

sysctl -w fs.file-max=10485760
sysctl -w net.ipv4.tcp_rmem=1024
sysctl -w net.ipv4.tcp_wmem=1024
sysctl -w net.ipv4.ip_local_port_range='1024 65535'
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_timestamps=1
echo '* soft nofile 1048576' >> /etc/security/limits.conf
echo '* hard nofile 1048576' >> /etc/security/limits.conf
ulimit -n 1048576
Copier le Code

Téléchargement dépendant

yum install -y gcc gcc-c++
Copier le Code

handy Télécharger l'installation

# GithubAdresse:
https://github.com/yedf/handy

# Télécharger:
Ça pourrait être directcloneCode bas., Ou télécharger déjà releaseDernière version de.

#  Le petit Rédacteur a choisi releaseVersion de, Après le téléchargement tar.gzSac
ls
handy-0.2.0.tar.gz

# Décompresser l'installation
tar -zxvf handy-0.2.0.tar.gz
cd handy-0.2.0
make && make install
Copier le Code

Démarrer le serveur

# Afficher le chemin actuel
pwd
/root/handy-0.2.0

#  Voir les paramètres de commande côté serveur 
10m/10m-svr
usage: 10m/10m-svr <begin port> <end port> <subprocesses> <management port>

# Démarrer le serveur
nohup 10m/10m-svr 100 300 10 301 &

# Explication des paramètres de commande
301: Port de gestion Multi - processus 
10:Démarrage10Sous - processus
100 300:Processus d'écoute100À300Port

#  Voir le processus côté serveur 
ps -ef | grep 10m
root     49999 33523  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50000 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50001 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50002 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50003 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50004 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50005 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50006 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50007 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50008 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50009 49999  0 15:27 pts/1    00:00:00 10m/10m-svr 100 300 10 301
root     50015 33523  0 15:27 pts/1    00:00:00 grep --color=auto 10m
Copier le Code

Test de démarrage du client

#  Paramètres de commande du client 
10m/10m-cli
usage 10m/10m-cli <host> <begin port> <end port> <conn count> <create seconds> <subprocesses> <hearbeat interval> <send size> <management port>

# Commandes du client
10m/10m-cli 192.168.1.1 100 300 10000000 500 10 600 64 301

# Interprétation des ordres
301: Port de gestion Multi - processus 
64: Credo Data 64Octets
600:600Un battement de cœur par seconde
10:10 Processus clients 
500:500 Secondes pour compléter toutes les connexions 
10000000:Établissement10000000Connexion Wan
100 300:Connecté au serveur100À300Port
 Le premier côté serveur IPAdresse

#  Observez le côté serveur après l'exécution de la commande TCPNombre de connexions
watch -n 1 -d ss -s

###############################
Every 1.0s: ss -s                                                                                                                                                       Thu Jun  3 15:33:25 2021

Total: 40002 (kernel 40035)
TCP:   39632 (estab 37623, closed 2, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         40035     -         -
RAW       0         0         0
UDP       3         2         1
TCP       39630     39626     4
INET      39633     39628     5
FRAG      0         0         0

################################
Every 1.0s: ss -s                                                                                                                                                       Thu Jun  3 15:33:50 2021

Total: 242961 (kernel 243015)
TCP:   242600 (estab 240579, closed 2, orphaned 12, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         243015    -         -
RAW       0         0         0
UDP       3         2         1
TCP       242598    242594    4
INET      242601    242596    5
FRAG      0         0         0
Copier le Code

500 Le client sera terminé dans quelques secondes 1000(En milliers de dollars des États - Unis) De TCP Connexion,Comme ci - dessus,Tests 25 Les secondes sont terminées 24(En milliers de dollars des États - Unis) Connexion.

Tips

  1. Utiliser ss -s Je vois. TCP Nombre de connexions et netstat -ntlp Le résultat est le même.
  2. Les spécifications de la machine pour le serveur et le client sont recommandées 16G64G.

RÉFÉRENCES

github.com/yedf/handy

zhuanlan.zhihu.com/p/21378825

C'est tout pour aujourd'hui,Merci pour votre lecture,On se reverra la prochaine fois.

版权声明
本文为[Python Institute]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/11/20211125175653651J.html

Scroll to Top