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