My connection with server already is really poor - 120 ms ping in average.
Eu fiz um teste semelhante a www.google.com
, testando o tempo de resposta sobre o TCP e obtendo 160 milissegundos. O Google tem conectividade ruim? O TCP não foi projetado para tempos de resposta rápidos.
I measure my ping through flash client - send packet with timestamp and immediatly send from server to client.
O TCP, por padrão, retarda até 200 milissegundos para fornecer uma utilização de rede mais eficiente. Você não está medindo nada, exceto o TCP, especificamente fazendo o que foi projetado para fazer. Se você olhar de perto para o tráfego de rede, verá que a maioria dos pacotes TCP realmente contém muito mais do que dois bytes de dados.
Você está esperando um comportamento horrivelmente ineficiente. Enviar 30 pacotes por segundo, cada um contendo apenas dois bytes de dados, é incrivelmente estúpido e o TCP não é estúpido o suficiente para fazer isso.
Duas sugestões:
Não chame isso de "ping". Isso faz com que as pessoas pensem que é uma medida de ida e volta de rede, em vez de uma medida do tempo de resposta sobre o TCP.
Não diga "30 pacotes / s", a menos que você tenha medido o tráfego da rede. Quando você escreve alguns bytes em uma conexão TCP, não há razão para esperar que corresponda a um pacote. Pacotes são coisas de rede. Grava em uma conexão TCP são coisas de aplicativo. Aplicações confusas e conceitos de nível de rede vão realmente bagunçar você quando você lida com o TCP.
Além disso, por que você está fazendo tantas pequenas gravações? Reúna os dados em gravações maiores. Sim, o TCP fará isso por você, mas ainda é muito mais eficiente se você fizer isso em seu aplicativo.
Se você está apenas fazendo essas pequenas gravações horríveis para testar o desempenho, pare de fazer isso. Não lhe dará dados úteis. Se essas pequenas gravações horríveis replicam seu cenário de uso real e o tempo de resposta é importante, então você precisa trabalhar para consertar seu protocolo para que faça algum sentido.