Je fais un peu de planification de capacité et je me demandais s'il y avait une formule que je pouvais utiliser pour prédire (du point de vue de la mémoire) combien de connexions TCP je pouvais gérer sur mon serveur. Pour le moment, je ne me préoccupe que des besoins en mémoire.
Je pense que certaines variables apparaîtront dans la formule:
- sysctl's
net.ipv4.tcp_wmem
(min ou valeur par défaut) - sysctl's
net.ipv4.tcp_rmem
(min ou valeur par défaut) - la taille des structures de données sock, sock_common, proto et autres par socket.
Je ne sais pas combien de tcp_wmem et tcp_rmem sont réellement alloués et quand cette mémoire est allouée. Au moment de la création du socket? À la demande?
tcp_mem est plus important car il définit le comportement de la pile tcp en matière d'utilisation de la mémoire. Le tampon d'envoi et de réception de l'OMI doit être un multiple de tcp_mem. Voici un lien vers une formule pour le tampon de réception: http://www.acc.umu.se/~maswan/linux-netperf.txt . En bref:
Voici ce que l'article dit sur tcp_mem:
IMO une valeur tcp_mem moyenne plus grande accélère la connexion à la perte de moins de sécurité et augmente légèrement l'utilisation de la mémoire.
Vous pouvez surveiller la pile réseau avec:
la source
David a fourni une très bonne réponse à la question posée, mais à moins que vous n'utilisiez exclusivement des LFN , même sur un serveur basé sur des événements, les tampons TCP ne constitueront probablement qu'une petite partie de l'empreinte par connexion.
Pour la planification de la capacité, rien ne peut remplacer le test du serveur et le calcul de la régression de l'utilisation de la mémoire par charge.
la source