Jetty服务器意外地将cpu换成内存,反之亦然

时间:2016-09-01 07:08:44

标签: java spring hibernate jetty spark-java

我有一个基于Spark Java 2.5的休息服务,它使用Jetty服务器。 我的问题是,它不能在持续的表现上工作,而且突然之间决定交易" cpu到内存,反过来一段时间后。 Here are the plots

使用Java melody创建绘图。 正如您所看到的 - 在大约18:00时,性能图突然发生了变化。内存消耗开始增长,处理器负载下降。同时,请求延迟不会发生变化,请求每秒和请求类型也不会发生变化。其他参数也发生了变化 - 特别是使用缓冲内存和打开文件的数量。

一周之后,一切都会改变,也许两周或一个月后这个周期重复,我在过去的三个月里看到了这个周期。

我尝试使用分析器,但没有找到任何有用的东西。

我非常确定这种变化不是由业务逻辑引起的,因为用户与Web服务器的交互没有任何改变,也没有任何后台任务处于活动状态,所以可能是它的码头&#39 ; s或java的内部或错误配置。

服务器在AWS EC2中的Docker容器中的Java 8上运行(我们使用AWS ECS进行docker自动扩展)。每秒大约有50个请求。 api本身使用spring和hibernate与postgresql 9.4驱动程序。对于hibernate,使用二级ehcache。一些api请求是多部分,大小约为100kb,它们在请求时间线上均匀分布。 Java以参数启动:-server -Xmx6000m -XX:+ UseG1GC。如果需要更多细节,请问我。

我想要的是不断的表现。如果我的问题与您的经历产生共鸣,请回复。

ps:on~23:30变化与问题无关,所以不要分析。

1 个答案:

答案 0 :(得分:0)

最后解决方案很简单。在行为变得静止之后,增加-Xms到500mb有所帮助。