最早在交叉编译部署时,就遇到了提示:
OpenJDK 64-Bit Server VM warning: No monotonic clock was available - timed services may be adversely affected
不同虚拟机,冒号前的内差异可以忽略。
看这句提示的意思是没有可用的单调时钟,基于时间的服务可能会受影响。
而我们的问题就是系统时间改变时,插件工作的周期性就错误。关联度极高。
怀疑有2个方面的原因,
一个是工具链本身不支持MONOTONIC时间(编写测试程序,确认没有问题);
一个是虚拟机本身有些问题。(顺着这个log出发,查找根源,看源代码,原来hotspot是依赖librt.so这个库)
将工具链中这个librt.so放到系统中后,java启动没有这个提示了,第三方插件也不会受时间调整而频繁上报了。
所以,遇到可疑的提示,还是尽早分析原因,以免后续的工作受影响。再就是要勇于追踪相关的源码,有时,这是解决问题的快速方法。
后来,就搜索了Java的时间使用,又一片文章不错
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed19fa950d100b9c250e54f730628c9b5223c3933fc239045c1426a5e0767c4745cec179650ba45d19b7b0607d6b5e37b7ea97d51680fdcf7474d93034014dd81c438a0eafba03768037902bbaeb4abce4a362cdf9c5d3ae4353bc44050bc6abd40d5603ca1eb14371a7fdc81f544810cbb2632ee8590679c83440c714afa4652e46d6a8964b4cb279843546c6e962e6&p=9b759a46d7c50bf00aafd02d02148d&newp=882a9644d0d218e80be2966f1600bb231610db2151d6d4136b82c825d7331b001c3bbfb42324140fd1c57c6300a44d5bebf13c7837092ba3dda5c91d9fb4c57479997e73&user=baidu&fm=sc&query=No+monotonic+clock+was+available+%2D+timed+services+may+be+adversely+affected&qid=8f37a3f500041023&p1=1