对于Java开发人员来说,实时(JIT)编译器是提高性能的关键。然而,在容器世界中,由于CPU和内存消耗的限制,性能的提高经常被抵消。为了帮助解决这个问题,Eclipse OpenJ9 JVM提供了JITServer技术,它将JIT编译器从应用程序中分离出来。
【资料图】
JITServer的性能特征使它成为云的理想解决方案。它允许用户使用更小的容器来实现更高的应用密度,从而为最终用户和/或云提供商节省成本。因为消除了JIT编译导致的CPU和内存激增,所以用户可以更轻松地为他/她的应用程序提供资源。其他优势包括:加速时间、更好地控制编译资源、增加可靠性(JIT编译器错误不再使应用程序崩溃)以及在许多应用程序实例中分摊编译成本。
总而言之,在以下情况下,JITServer是一个很好的解决方案:
JVM需要在相对较短的时间内编译许多方法
JVM运行在一个CPU/内存受限的环境中,这个环境最不允许与其本地JIT编译器共享资源
JITServer和客户端虚拟机之间的网络延迟相对较低(< 1毫秒)
在java培训中,有理论知识+实践项目课程,双管齐下,学以致用,让你深入浅出地学习java。
部署JITServer时,请遵循以下建议以最大限度地提高性能:
将10-20个客户端JVM连接到一个JITServer实例
将JITServer配置为至少使用1-2 GB的RAM运行
如果使用Kubernetes,将JITServer的vCPU“限制”设置为比“请求”大得多,以考虑到CPU使用高峰,并使用“sessionAffinity”来确保JVM客户机总是连接到同一个JITServer
错开客户机JVM的启动,以便它们的编译阶段不会全部重叠
尽可能避免加密,因为这会增加通信开销
启用JITServer AOT缓存,以便可以存储编译供共享使用
关键词: