预热高吞吐量 Java 应用程序
-
20-09-2019 - |
题
我最近了解了一些场景,这些场景需要在开始服务实际请求之前预热应用程序(具有高吞吐量要求)。这背后的逻辑是让 JIT 发挥其性能魔力!
这是 Java 应用程序的规范还是通常针对内存密集(占用空间)的应用程序这样做?
解决方案
如果你是在谈论一个高流量的web应用程序/网站,那么JIT是一个很小的问题。最大的问题是升温(填充),所有你需要有高速缓存层。例如正在被从休眠<填充 ehcache的区域/ A>。这是因为IO相关的操作幅度比任何的CPU内部发生较慢的命令(也就是,除非你是计算分形:)
其他提示
现在的问题是,当你想为走出自己的路,以做到这一点?
如果你推出一个web应用程序,它会立即住的话,而你“升温”,你会增加额外的负担,这是适得其反。一个桌面应用程序启动时类似的是真实的。在气候变暖没有点,如果用户要使用它立即开始。或者更糟,而不是让用户,而你正在升温的应用进行互动。
如果你推出一个Web应用程序,你测试部署你点你的负载平衡器之前,那么你已经热,它作为一个侧的结果。
此外 切鲁维姆的回答, ,我能想到其他几个需要热身的问题:
- 对象实例化(延迟加载、单例等);
- 堆分配(如果您的
Xms
比你的小Xmx
).
我想操作系统也会根据应用程序的行为进行调整,因此操作系统调用也可能会受到预热期的影响。
上述大部分内容(缓存填充、对象初始化)都不是 Java 特有的。
不隶属于 StackOverflow