Pergunta

Eu escrevi uma implementação de servidor TCP usando o que eu criei uma aplicação que funciona como um serviço TCP eco.

Agora eu quero testar este servidor de eco em termos de

  • Quantas conexões que ele pode manipular
  • O que é o tempo de resposta
  • Quanta memória e CPU que utiliza

Por favor, você pode sugerir qualquer método padrão / ferramentas para testar este servidor de eco. Eu entendo que tanto TCP e eco implementação do servidor é uma prática bastante normal assim que eu espero encontrar ferramentas estabelecidos para testá-lo.

P.S .: posso escrever o meu próprio aplicativo de teste, mas eu não quero fazer isso porque se eu ver algum problema, eu preciso ter certeza que ele é o meu servidor que está fazendo errado. Eu não quero acabar testando meu cliente de teste primeiro.

Eu escrevi essa implementação usando C # e .NET 3.5 embora eu acredito que não importa com referência à questão.

Foi útil?

Solução

Eu tenho uma ferramenta gratuita que pode ajudá-lo. Eu usá-lo para testar servidores que são construídos com a minha estrutura de servidor C ++. A ferramenta está disponível aqui: http: // www. lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html. Ele permite que você crie um número configurável de conexões com o servidor de destino a uma taxa configurável e, em seguida, enviar os dados em cada conexão (de novo a uma taxa configurável).

Se achar que a melhor maneira de usá-lo é executá-lo em uma máquina diferente para o servidor (eu sei bastante óbvio, mas ...) e, possivelmente, para executar várias cópias em várias máquinas diferentes. Note que se você achar que você não pode fazer mais do que cerca de 4000 ligações, então é muito provável que você precisa ajustar o seu configuração de registro MAX_USER_PORT na máquina que está executando o cliente.

Uma vez que você testou seu código TCP você pode achar que você precisa para testar o protocolo que o servidor suporta. Eu escrevi uma ferramenta de teste para este tipo de situação em C # que está disponível no CodeProject ( http: //www.codeproject.com/KB/IP/testingsocketservers.aspx ). Isso permite que você escrever um "plug-in" para apoiar o seu protocolo e alças o material agnóstico protocolo (muitas conexões, quebrando mensagens para que você se fragmentou lê, etc) para você. O design é um bastante desagradável projeto thread-per-conexão e para um maior número de conexões que você seria melhor fora de reimplementar algo usando um design assíncrona, mas eu tenho minhas ferramentas C ++ para que então eu nunca tenho tempo para mudar esse programa de teste .. .

Outras dicas

Na sua mesma situação antes, eu tenho FunkLoad usado. Se você pode escrever um pequeno cliente como um trecho de código Python, então FunkLoad será executado como muitos daqueles contra o servidor que desejar, e representar graficamente os resultados:

https://funkload.nuxeo.org/

Um totalmente trabalhou-out exemplo, contra uma série de servidores de teste é a peça central da segunda edição dos meus Fundações de livro de programação Python de rede, no caso de seu repositório de código fonte pública está de alguma ajuda:

https://github.com/brandon-rhodes/fopnp/ árvore / m / PY2 / chapter07

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top