Como abrir artificialmente muitas conexões tcp em um host (teste)?

2

Estou tentando criar uma configuração de teste que teste o desempenho do meu servidor sob alta carga. Para fazer isso, quero abrir milhares de conexões tcp. O problema é que eu só tenho dois hosts, um é para o servidor e o outro é para o gerador de carga.

Existe uma maneira de fazer isso?

    
por Ezra 19.03.2015 / 06:03

1 resposta

4

Ok, serão necessários dois arquivos.

Primeiro arquivo é um pequeno script que você executará no servidor, ele apenas abre uma tonelada de portas de escuta usando o netcat

O segundo arquivo é um pequeno script que você executará no cliente. Certifique-se de alterar serverIP para o IP real do seu servidor.

Agora lembre-se de que isso é algo que eu juntei muito rápido. A lista de portas não é perfeita, você deve executar ambas como root, pois algumas das portas estão reservadas e algumas estarão em uso, mas a maioria será válida. Eu corri no meu sistema e cerca de 20 dos 2000 já estavam em uso. Então você pode ajustar, mas você começa a idéia. Você também pode aumentar a carga aumentando o número de portas ou até mesmo lendo e gravando dados, mas isso parece o que você queria.

Primeiro arquivo chamado runoserver

#!/bin/bash
for port in 'seq 50000 52000';
        do
                netcat -l $port &
        done

2º arquivo chamado runonclient

#!/bin/bash
for port in 'seq 50000 52000';
        do
                netcat serverIP $port &
        done

EDIT- para responder à sua pergunta de comentário

Não é possível ter mais de uma conexão aberta na mesma porta ao mesmo tempo. Se você está pensando sobre como todos acessam servidores web na porta 80 , há um pouco de mágica lá. Você acessa a página do Google acessando o google e abrindo uma conexão com a porta 80. O Google basicamente responde dizendo:

I'm Google-
This was a valid request-
Continue all communication on port X- 
Then your computer and Google's server opens port X for reading and writing.

Port X would be a non-reserved, not in use, high numbered port. ex: 25643

Portanto, você não está conectado à porta 80 por mais de um segundo, por meio do balanceamento de carga e de outras magias TCP / IP, eles podem atender a milhões de solicitações por segundo. Tenha em mente que esta é uma explicação excessivamente simples, que deixa de fora vários detalhes e etapas, mas explica como parece que pode haver mais de uma conexão a uma porta de uma só vez.

    
por 19.03.2015 / 07:55

Tags