首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何降低JAVA应用程序的CPU使用率?

如何降低JAVA应用程序的CPU使用率?
EN

Stack Overflow用户
提问于 2015-08-10 11:01:14
回答 1查看 2.5K关注 0票数 4

在Linux机器(CentOS 6.564位)上有两个Java进程(A,B)。A使用套接字向B发送大量二进制数据。B将数据写入磁盘。每秒有50-100MB的数据被写入磁盘。在四核处理器上,CPU的使用率接近100%。之前我们运行了一个类似的应用程序,但是用C语言写的,只使用了25%的CPU。

我们已经做了很多调整。我们了解到epoll有一些bug,于是我们将JDK版本升级到1.8。我们还做了一些JVM调优。现在CPU的总使用率比以前低了,但我们并不满意。我们认为我们可以减少更多。

有大量数据写入磁盘。我们认为磁盘不是瓶颈。因为我们使用的是大型突袭。我们之前用更多的磁盘带宽运行了用C编写的类似的应用程序,一切正常。

但我们也发现了一个问题。当内核将脏数据刷新到磁盘时,CPU使用率将非常高。因此,我们增加/proc/sys/vm/脏背景比率,以便尽可能多地进行异步刷新。在我们改变值之后,它看起来是有效的,但是过了一段时间,高CPU的问题又出现了。

我们能为高IO带宽的Java应用程序做更多的性能调优吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-11 16:04:01

在进行性能调优之前,您需要找出主宰CPU时间的因素。

这是一个多方面的话题,你必须看看内核在做什么,以什么速率发出哪些系统调用,你的访问模式是什么,文件系统和其他存储层如何影响各种文件系统操作的特征等。

Netflix最近提出了一种get full kernel/userspace/java stacks的方法,这可能是一个有用的起点,但还有许多其他事情需要监控。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31911073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档