Java Web App的CPU占用率很高

Java Web App的CPU占用率很高

问题描述:

我是新手,在CPU消耗和多线程方面我并不是很优秀。但我想知道为什么我的Web应用程序消耗了太多的CPU进程?我的程序所做的是在后台更新值,以便用户不必等待数据处理,只需要根据请求获取数据。更新过程是使用执行程序库的计划任务,每5秒钟发出8个线程来更新我的数据。Java Web App的CPU占用率很高

现在我想知道为什么我的应用程序消耗了太多的CPU。是因为代码错误还是因为低规格的服务器? (2个核心与2个数据库和1个主要应用程序与我的网络应用程序运行)

非常感谢您的帮助。

+6

除非你解释8个线程正在做什么,否则这几乎是不可能的?多少次计算?多少IO?也许显示一个小代码示例? – Gray

+1

这可能是我在一段时间内看到的最隐晦的问题之一 –

+3

嘿,downvoters,你能解释一下为什么你这样做?这个问题是合法的。是的,它没有得到很好的解释,但要耐心。这是新用户,他将学习如何提出好问题。不要从一开始就惩罚他! – AlexR

您需要对您的应用程序进行配置文件以确定CPU实际正在使用的位置。 Java has some basic profiling methods built in,或者如果环境允许的话,你可以运行内置的“HPROF”编译:

的Java -Xrunhprof ...

(在现实中,你可能要设置一些额外的选项:谷歌“HPROF “以获取更多详细信息。)

后者原则上更简单,但我提到添加自己的分析例程的可能性,因为它更灵活,您可以执行例如在运行另一个分析器的Servlet环境中更麻烦。

+0

我会在我们的开发环境中尝试这一个。尽管有什么困扰我的是,在我们的任何环境中,它并没有消耗大部分的CPU进程。但是在我们的客户端环境中,它是...... 2核心vs 4核...... – Paolo

+0

那么,不同的配置可能会“改变事物的平衡”,这样在一个环境中就会看到一个在其他环境中不明显的CPU瓶颈。这就是为什么我个人喜欢在实时代码中嵌入“实时”分析的工具,那么您可以看到实际发生的情况,而不是基于完全不同的设置进行猜测。 –

+0

我试图分析它,并给你们结果..谢谢.. – Paolo

圣保罗,

不可能有人在这里要说的问题是出在你的代码是低效或服务器受到规范。它可能是其中的一个或两个,或其他。

你将需要做一些自己的研究:

  • 配置文件的代码。这将允许您确定您的Web应用程序在哪里花费大部分时间。

  • 查看可供您使用的操作系统级统计信息。这可能会告诉你真正的问题是内存使用情况或磁盘I/O。

  • 看看后端数据库的性能。它使用了很多CPU吗?

一旦确定了正在使用CPU的区域,您需要找出问题的真正原因并找出如何解决该问题。一旦你有一个潜在的修复实施,你可以重新运行你的分析等,看看它有帮助。

+0

嗯,我忘了提到这一点,但数据库比我的应用程序消耗更多..但在计时每个过程后,它完成每项任务是快速的。 。虽然没有分析它.. – Paolo