HickariCP 文档说:
HikariCP 在性能和可靠性方面都非常依赖准确的高分辨率计时器。您的服务器必须与时间源(例如 NTP 服务器)同步。特别是如果您的服务器在虚拟机中运行。不要依赖管理程序设置来“同步”虚拟机的时钟。在虚拟机内部配置时间源同步。如果你在一个被证明是由于缺乏时间同步引起的问题上寻求支持,你将在 Twitter 上被公开嘲讽。
您会选择哪些其他连接池库,它们对虚拟机时间漂移不太敏感?
HickariCP 文档说:
HikariCP 在性能和可靠性方面都非常依赖准确的高分辨率计时器。您的服务器必须与时间源(例如 NTP 服务器)同步。特别是如果您的服务器在虚拟机中运行。不要依赖管理程序设置来“同步”虚拟机的时钟。在虚拟机内部配置时间源同步。如果你在一个被证明是由于缺乏时间同步引起的问题上寻求支持,你将在 Twitter 上被公开嘲讽。
您会选择哪些其他连接池库,它们对虚拟机时间漂移不太敏感?
在时间可以向后或向前跳跃的环境中的任何池,它可以在虚拟机中,当它这样做时将受到虚假故障的影响。
此外,受影响的不仅仅是连接池。
任何...
如果您无法确定时钟漂移,您将遇到无法解释的应用程序故障,发生在您的代码和第三方库中。
HikariCP(即我)厌倦了花费数小时解决用户问题、阅读日志和线程转储,却发现他们的时钟前后跳动超过一分钟。
用户:“为什么我会收到一堆连接超时?!”
(几天来来回回的问题和稍后检查日志......)
HikariCP:“嗯,你要求池尝试 30 秒来给你一个连接……然后你的时钟向前跳了 42 秒,Java(和操作系统)释放所有线程,就好像时间真的过去了一样。”
修复起来非常简单,只需在 VM 中配置 NTP。