所以就在最近,我依赖pthread_mutex_timedlock的异步服务器代码似乎过早超时了。起初我以为这只是我的错误,但看到 linux 内核存在一些闰秒问题,似乎我不是唯一一个:https://lkml.org/lkml/2012/7/1/11
当前的解决方法是什么?重新启动服务器,还是更新内核?我的服务器依靠定时锁定机制来等待来自其他线程的事件,并且由于这种过早超时,CPU 使用率一直为 100%,因为它永远不会停留在定时锁。
我目前运行的是 ubuntu 服务器 10.04.4,内核版本 2.6.39.1
好吧,我遇到了 http://forums.pentaho.com/showthread.php?98217-Java-leap-second-bug-how-to-fix-your-broken-servers&s=5836d11a51327406f965c66fddc9149d&p=286479#post286479
而这在sudo下做到了:
/etc/init.d/ntp stop; date; date `date +"%m%d%H%M%C%y.%S"`; date; /etc/init.d/ntp start
(Freenode的 #kernel 说date -s "date"
修复了它)
CPU 使用率从 100% 左右下降到 0.5% 也证实了这一点。所以我想就是这样,直到下一个闰秒插入。