docker环境下Java获取cpu核心数异常
一次查询线上BUG时,发现JDK获取cpu核心数不准确,导致程序运行过程中出现了不符合预期的情况,因为在线上docker环境的JDK代码中获取的cpu核心数实际上是docker宿主机的cpu核心数。
于是,网上搜索了一下,确实是存在这个情况的,这么说是因为在后来的jdk版本中,JDK增强了对docker的支持,所以现在的情况是在有些版本的JDK版本下,获取CPU核心数不准确,但在另外的一些JDK版本下获取CPU核心数是准确的。
JDK官方博客对这个情况进行了说明,也说明具体修复的版本。java-se-support-for-docker-cpu-and-memory-limits
虽然,官方进行了修复,但是想要升级JDK版本号的话,也需要特别注意一下。因为Oracle公司在2019年4月16日后发布的版本都已经使用了新的协议,新协议表明对个人开发、测试免费,而其他情况需要订阅Oracle服务,也就是商用需要付费。
具体的详细情况参考:
https://www.jianshu.com/p/040a1315bce5