我是新来的,我不太擅长 CPU 消耗和多线程。但我想知道为什么我的网络应用程序消耗过多的 CPU 进程?我的程序所做的是在后台更新值,以便用户不必等待数据的处理,而只需要根据请求获取它。更新进程是使用执行器库的计划任务,该库每 5 秒触发 8 个线程来更新我的数据。
现在我想知道为什么我的应用程序消耗了太多的 CPU。是因为代码不好还是因为服务器规范低? (2 个核心,2 个数据库和 1 个与我的网络应用程序一起运行的主要应用程序)
非常感谢您的帮助。
最佳答案
您需要分析您的应用程序以找出实际消耗 CPU 的位置。 Java has some basic profiling methods built in ,或者如果您的环境允许,您可以运行内置的“hprof”编译器:
java -Xrunhprof ...
(实际上,您可能需要设置一些额外的选项:Google“hprof”了解更多详细信息。)
后者原则上更容易,但我提到添加您自己的分析例程的可能性,因为它更灵活,您可以这样做,例如在 Servlet 环境中,运行另一个分析器会比较麻烦。
关于Java Web App CPU 消耗率较高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10537066/