Geralmente, você pode usar alguns dos switches avançados do utilitário iperf para obter uma visão do desempenho da rede entre sistemas, especificamente latência e jitter ...
É um fluxo de mensagens baseado em UDP ou TCP?
Comentei acima sobre a necessidade de mais informações sobre sua configuração. Se esse é um aplicativo de mensagens de baixa latência, existe um mundo inteiro de técnicas de ajuste e otimização que abrangem ajustes de hardware, driver e sistema operacional. Mas, realmente, precisamos de mais informações.
Editar:
Ok, então essa é a mensagem TCP. Você modificou algum /etc/sysctl.conf
parâmetro? Como são seus buffers de envio / recebimento? Usar um kernel em tempo real por si só não fará muito, mas se você passar para o ponto em que vincula interrupções às CPUs, alterar a prioridade em tempo real do aplicativo de mensagens ( chrt
) e possivelmente modificar o tuned-adm
perfil do sistema pode ajudar ...
Parece ser um sistema EL6 genérico, portanto, uma maneira fácil de definir uma linha de base de ajuste de desempenho envolve alterar o perfil de desempenho do sistema para outro disponível na estrutura ajustada . Então construa a partir daí.
No seu caso:
yum install tuned tuned-utils
tuned-adm profile latency-performance
Uma matriz rápida mostrando as diferenças:
Você pode nos falar sobre o hardware? Tipos de CPU, NIC, memória?
Portanto, pode ser interessante testar seu link ... Experimente este teste iperf ...
Em um sistema, inicie um ouvinte do iperf UDP. Por outro lado, abra uma conexão com o primeiro ... Um teste rápido de qualidade da linha.
# Server2
[root@server2 ~]# iperf -su
# Server1
[root@server1 ~]# iperf -t 60 -u -c server2
No meu caso, baixa instabilidade e baixo tempo de ping:
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-20.0 sec 2.50 MBytes 1.05 Mbits/sec 0.012 ms 0/ 1785 (0%)
PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms
Eu verificaria o hardware e as interfaces quanto a erros. Se desejar, elimine a alternância entre sistemas e veja como é uma conexão direta. Você não deseja alta variação (variação), então verifique isso.
Mas, honestamente, mesmo com os tempos de ping que você está recebendo na sua configuração atual, isso não deve ser suficiente para matar seu aplicativo. Eu seguiria o caminho de ajustar seus buffers de envio / recebimento. Veja: net.core.rmem_max
, net.core.wmem_max
e seus padrões ...
Algo como o seguinte em /etc/sysctl.conf
(por favor, sintonize a gosto):
net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216