Genéricamente, puede usar algunos de los conmutadores avanzados a la utilidad iperf para obtener una vista del rendimiento de la red entre sistemas, específicamente latencia y fluctuación de fase ...
¿Es este un flujo de mensajes basado en UDP o TCP?
Comenté anteriormente sobre la necesidad de más información sobre su configuración. Si se trata de una aplicación de mensajería de baja latencia, hay todo un mundo de técnicas de optimización y optimización que abarcan ajustes de hardware, controladores y SO. Pero realmente, necesitamos más información.
Editar:
Bien, entonces esto es mensajería TCP. ¿Has modificado algún /etc/sysctl.conf
parámetro? ¿Cómo son sus buffers de envío / recepción? El uso de un kernel en tiempo real por sí solo no servirá de mucho, pero si te mueves hasta el punto de vincular las interrupciones a las CPU, cambiar la prioridad en tiempo real de la aplicación de mensajería ( chrt
) y posiblemente modificar el tuned-adm
perfil del sistema puede ayudar ...
Esto suena como un sistema EL6 genérico, por lo que una manera fácil de establecer una línea base de ajuste de rendimiento implica cambiar el perfil de rendimiento del sistema a otro disponible dentro del marco ajustado . Luego construye desde allí.
En tu caso:
yum install tuned tuned-utils
tuned-adm profile latency-performance
Una matriz rápida que muestra las diferencias:
¿Puedes contarnos sobre el hardware? Tipos de CPU, NIC, memoria?
Por lo tanto, puede ser interesante probar su enlace ... Pruebe esta prueba de iperf ...
En un sistema, inicie un oyente UDP iperf. Por otro lado, abra una conexión con el primero ... Una prueba rápida de calidad de línea.
# Server2
[root@server2 ~]# iperf -su
# Server1
[root@server1 ~]# iperf -t 60 -u -c server2
En mi caso, baja inestabilidad y bajo tiempo 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
Verificaría el hardware y las interfaces en busca de errores. Si lo desea, elimine el cambio entre sistemas y vea cómo se ve una conexión directa. No desea un alto jitter (varianza), así que verifíquelo.
Pero, sinceramente, incluso con los tiempos de ping que obtiene en su configuración actual, eso no debería ser suficiente para matar su aplicación. Seguiría el camino de ajustar sus buffers de envío / recepción. Ver: net.core.rmem_max
, net.core.wmem_max
y sus valores por defecto ...
Algo como lo siguiente en /etc/sysctl.conf
(sintonizar al gusto):
net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216