Un rendemento lento a través dun túnel e unha máquina bloqueada esperando números aleatorios producen experiencias moi distintas, pero arquívanse baixo a mesma queixa. Un maniféstase como unha pausa antes de que nada funcione. O outro maniféstase como unha conexión que funciona e move datos lentamente mentres a observa. Decidir cal ten leva dez minutos e aforra unha semana de conxecturas.

Dous síntomas que se parecen

Un servizo que se colga tras un arranque recente, antes de aceptar unha soa conexión, espera algo. Un túnel que se establece rápido e logo transfire a unha fracción da taxa esperada está limitado por outra cousa. A palabra cifrado aparece en ambas as historias, por iso se fusionan. Sepáreos antes de tocar un ficheiro de configuración.

Coloque marcas de tempo arredor do arranque, a autenticación, a renegociación de claves e a propia transferencia. Unha demora longa antes de que o túnel sexa utilizable non é unha taxa baixa constante, e facer a media das dúas nun só número destrúe a evidencia.

systemd-analyze blame | head -10
journalctl -u [email protected] -o short-precise | head -40
cat /proc/sys/kernel/random/entropy_avail

Os dous primeiros comandos sitúan o traballo de arranque nunha liña temporal. O terceiro imprime o valor contable de entropía do núcleo, que é útil como un único dato e inútil como medidor de ancho de banda.

Como se ve realmente unha espera de números aleatorios

Unha solicitude de bytes aleatorios seguros pode bloquearse ata que o núcleo inicialice a súa fonte aleatoria. Iso importa sobre todo en máquinas virtuais e placas embebidas pequenas ao principio do arranque, cando se recolleu pouco ruído ambiental. Non se segue que cada byte cifrado consuma entropía fresca.

Os xeradores modernos seméntanse unha vez e despois producen saída a partir dunha construción determinista, volvendo sementarse segundo o seu propio calendario. A transferencia masiva non baleira un depósito byte a byte, así que un valor baixo do depósito durante unha transferencia lenta non demostra nada sobre a causa.

strace -f -e trace=getrandom -p $(pidof openvpn) 2>&1 | head -20
dmesg | grep -i 'random\|crng'

O primeiro comando mostra se o proceso está detido nunha chamada de números aleatorios mentres observa. O segundo mostra as mensaxes de inicialización do propio núcleo, e é alí onde un bloqueo de arranque temperán se fai visible.

Anote a versión do núcleo e a biblioteca contra a que o servizo liga realmente, porque o comportamento difire entre implementacións e entre versións. Unha traza tomada tras a recuperación adoita perder a pausa por completo.

Como se ve realmente unha lentitude sostida

Un túnel que transfire lentamente todo o tempo está limitado polo camiño de datos. Un fío saturado, a perda de paquetes externos, as retransmisións ou as colas de socket cheas producen cada un ese patrón, e cada un ten a súa propia solución. A porcentaxe agregada de CPU oculta un só fío ocupado, que é a mala lectura máis común. Mire o tempo por fío antes de mirar a carga total.

Mida nas dúas direccións cunha base comparable e vixíe os contadores da interface en lugar do informe da propia aplicación.

ss -tin dst 203.0.113.10
nstat -az | grep -i 'drop\|retrans'
ethtool -S eth0 | grep -i 'drop\|error'

O primeiro comando mostra o estado de cola e congestión dun par. O segundo e o terceiro informan de descartes e retransmisións na pila e na interface, que é onde a causa adoita aparecer primeiro.

Escolla a corrección para o pescozo de botella que mediu

Se a evidencia apunta á inicialización de arranque temperán, mire o camiño de sementeira admitido pola plataforma, que nunha máquina virtual pode incluír un dispositivo aleatorio proporcionado polo anfitrión. Unha imaxe de semente copiada sen cambios en moitos invitados non substitúe unha inicialización independente.

Se a evidencia apunta ao camiño de datos, axuste o que sinalan os contadores. Os tamaños de búfer axudan cando as colas desbordan e non fan nada cando un fío está saturado. Instalar un demo de entropía para subir un contador non é unha reparación do rendemento, e cambiar as suposicións de sementeira para que un gráfico se vexa mellor cambia unha propiedade de seguridade por un número.

Acepte o cambio só cando a mesma medición mellore nas mesmas condicións. Un contador maior non é un resultado; unha espera medida máis curta ou unha transferencia máis rápida cunha causa identificada si o é.

Artigos relacionados