Alta utilización de CPU tras aplicar el leap second

En sistemas RHEL y derivados (CentOS, Fedora, Scientific Linux, etc), existe un bug que cada vez que se inserta el leap second/segundo intercalar provoca que determinados procesos comiencen a utilizar recursos de CPU de forma incontrolada. Normalmente los procesos afectados suelen ser las JVM de Java y servicios de MySQL. Como es un problema conocido, Red Hat propone ofrece soluciones así como una explicación detallada del origen del problema.

Un segundo intercalar, leap second, segundo adicional o segundo bisiesto2 es un ajuste de un segundo para mantener los estándares de emisión de tiempo cercanos al tiempo solar medio. Los segundos intercalares son necesarios para mantener los estándares sincronizados con los calendarios civiles, cuya base3 es astronómica.

El workaround a aplicar una vez que nos encontramos con el problema consiste en hacer un «reset» de la fecha en el sistema con los siguientes comandos:

# date -s "`LC_ALL=C date`"
# date `date +'%m%d%H%M%C%y.%S'`

Tras la ejecución de los comandos automáticamente los procesos volverán a su estado normal, sin necesidad de reiniciar ni las JVM ni el servicio de MySQL. Lo que sí que puede suceder es que este workaround provoque fallos en el servicio NTP así que es sensato reiniciarlo de forma preventiva:

# service ntpd restart

Para futuros cambios de leap second, es recomendable aplicar los siguientes parámetros al demonio NTPD para que en lugar de aplicar el cambio de forma instantanea lo haga de forma progresiva:

/etc/sysconfig/ntpd.conf

OPTIONS="-g -x"

2 comentarios en “Alta utilización de CPU tras aplicar el leap second

  1. Yo me vi afectado por este problema.
    Es curioso que escribas este artículo ahora cuando el último leap-second fue hace ya algún tiempo.
    Estas cosas suelen escribirse 1 mes antes del «acontecimiento»

    Saludos

Comments are closed.