如何在K8S上快速啟動Java服務 - Dukesletter

banq發表於2020-08-14

在Kubernetes中部署應用程式時,您必須遵循一些良好做法才能成為好公民。
您必須配置所需的資源,但更重要的是:向Kubernetes發出訊號,表明您的應用程式仍在執行並且已經可以接收請求。
為了解釋這些概念以及與自動縮放和限制有關的更多資訊,Igor Domrev撰寫了一篇文章:“ 如何在K8S上快速啟動Java服務 ”。
  • 在k8s和微服務時代,快速啟動很重要,尤其是在叢集執行於競價型例項上的情況下,而且如果您希望輕鬆地橫向擴充套件,在資料庫故障轉移甚至您自己的服務記憶體後重新啟動,則非常重要。
  • Netty這樣的庫,它使用可用處理器的數量來決定多事件迴圈的大小,或者是HikaeriCP一個流行的jdbc連線池,它使用處理器數來確定連線池的大小。所有這些工具和JVM本身都進行了最佳化,以調整執行緒與處理器的最佳比例,以便最佳利用CPU並減少執行緒上下文切換。
  • JVM使用可用核的數量來確定GC執行緒和編譯器執行緒(jit執行緒)的數量,所有這些執行緒都在爭奪CPU。
  • 當他們共享200個k8s微核時會發生什麼呢?從本質上講,Docker的CPU分配機制將限制請求更多CPU資源的容器,這將導致執行緒阻塞和執行緩慢。
  • 增加Java服務CPU的限制雖然使其啟動更快,但會導致CPU超負荷使用,需要仔細管理。


如果要部署到容器,請記住使用新的+XX:MaxRAMPercentage配置引數正確配置分配給JVM的記憶體,使其與容器中的可用記憶體成比例。您可以在本文中閱讀有關它的更多資訊:“ 容器中的JVM ”。
 

相關文章