Si vous ne le saviez pas, la nuit de samedi à dimanche a été un peu spéciale : elle a duré légèrement plus longtemps que les autres.
C'est en effet à ce moment qu'il avait été décidé d'insérer une seconde intercalaire (leap second) afin que le temps coordonné (UTC) ne s'éloigne pas trop du temps universel (UT). Cela arrive régulièrement depuis 1972 (la dernière était en 2008) et généralement personne ne le remarque (surtout pas moi).
Mais cette fois-ci tout a été différent (sur l'air de "Et là, c'est le drame.").
Mais reprenons du début.
Après plus de 230 jours d'uptime j'ai décidé vendredi qu'il était temps de faire une mise à jour complète de ma Debian Squeeze afin de parer aux menaces de sécurité les plus courantes. Aucun problème à signaler et un reboot plus tard la machine ronronnait à nouveau dans le placard.
Puis vint le dimanche.
Charge CPU continue frôlant les 9 (alors que ce n'est qu'un petit mono-core avec HT, qui devrait donc rester en moyenne en dessous de 2) et évidemment tous les autres services qui en pâtissent. D'après le rapport Monitorix, cela a commencé vers 02:00 du matin, mais les logs ne m'apprennent rien.
Ayant fait une mise à jour complète du système l'avant-veille, je pense immédiatement à une configuration qui a sauté, un backup planifié qui est devenu fou, une panne matérielle ou une attaque DDoS d'un conglomérat russo-irano-chinois.
Puis après deux Valium et un verre de Scotch, je réalise sereinement que ce sont mes deux daemons Java (Subsonic et JMPDLogger) qui s'acharnent sur mon pauvre Atom. Impossible par contre de savoir ce qu'ils font : pas d'activité disque particulière ni de communications réseau à signaler. Je tente de les redémarrer plusieurs fois mais rien n'y fait. Je cherche des bugs relatifs à la consommation de ressources avec la JVM IcedTea 1.8.13 que je viens de mettre à jour mais fais chou blanc.
Tant pis. Je reboote.
Et ça marche. Je suis rassuré d'une part, mais je ressens malgré tout un léger malaise : j'ai cédé à la facilité du reboot mais je n'ai pas trouvé ce qui avait provoqué ce comportement. Qui sait s'il ne va pas revenir sans prévenir ?
Ce matin l'explication tombe dans mes flux RSS :
- http://www.clubic.com/internet/actualite-499220-seconde-additionnelle-2012-mal-digeree-sites-programmes.html
- http://linuxfr.org/users/nono/journaux/leap-second
http://www.wired.com/wiredenterprise/2012/07/leap-second-bug-wreaks-havoc-with-java-linux/
La raison est donc due à l'incapacité apparente de plusieurs logiciels importants (Java, MySQL, VirtualBox) à gérer cette seconde additionnelle ajoutée le 30 juin après 23:59:59 UTC. Les répercussions semblent avoir été importantes puisqu'elles ont touché de nombreux services de par le Monde (Reddit, Mozilla et Foursquare, pour ne citer que ceux-là).
Quand on regarde la charge du serveur LinuxFr sur la même période que la mienne on ne peut s'empêcher de trouver une "petite similarité" dans la courbe de la charge CPU la nuit de dimanche vers 02:00...
Si ajouter une seconde arrive à faire tomber la moitié des serveurs sur la Planète, imaginez qu'un jour on en ajoute deux... ^^