草庐IT

cpu-usage

全部标签

java - Spring 启动 + SSL : Consuming Too much CPU

我测试了JavaSpring框架的性能,具有SpringBoot+SSL等功能来开发RESTAPI。我发现如果我在Spring框架中添加SSL功能,它会消耗太多CPU。但是,我删除了SSL功能,这个问题就不会发生了。我通过发送当前20个HTTP请求/秒或100个请求/秒来测试REST应用程序来进行压力测试,应用程序将始终消耗近200%的CPU。我已经将应用程序服务从Spring更改为Tomcat。结果是一样的。TestEnvironment-Sender:LoadingTestGeneratorUbuntu,DualCore,EC2onAWS.-Receiver:Spring-Boot

java - Solaris 上 Java 线程与 CPU 的最佳比例是多少?

我有一个Java应用程序,它有一个固定的15个线程池,这台机器,Solaris10SPARC,有16个CPU。添加池后性能大大提高,但我想知道是不是池中的线程太多了。线程越少性能越好,还是Solaris的线程调度做得很好。假设池大量使用15个CPU,然后其他应用程序线程出于各种原因需要CPU,并发垃圾收集就是一个很好的例子。现在,池和其他应用程序线程共享五个CPU。然后CPU1到7变为空闲,Solaris是否会将繁忙CPU上的线程共享时间转移到空闲CPU上?如果不是,将池大小保持较小是否更好,以便其他应用程序线程始终有可用的CPU?使问题更加复杂的是,应用程序中的CPU使用率非常零星。

java - 在自动回归测试中测量执行时间的最佳方法

我有一些代码,我想测量它在自动回归测试中连续运行时的速度。这样做的目的是提醒我对代码所做的更改对性能产生了负面影响。在伪代码中,我想要这样的东西:cpuTimer.startrunTestcpuTimer.stopdiff=cpuTimer.getDurationifdiff>prevDiff//PerhapstowithinatolerancefailTest我正在为此查看ThreadMXBean#getCurrentThreadCpuTime(),但关键问题是自动化测试将在各种不同的开发人员的电脑上运行,并将自动分包给具有一系列不同的硬件和功能。这行得通吗,或者数字会出错吗?这个问

java - Spring 上下文和 Bean 生命周期回调 : practical examples of usage

我对Spring有点经验。我想知道Spring上下文/Bean生命周期中的回调量。我从未使用过它们,并且可以想象其中大部分需要的情况。我的问题是:您能为每个回调提供至少一个使用示例吗?表示您需要该回调的情况。上下文回调:Bean回调:附言:我很清楚大多数回调何时调用,或者ApplicationContext的一个或另一个实现是为了什么而编写的。但我不明白为什么有人可能想从回调\实现中获利。例如:AbstractRefreshableApplicationContext用于动态更改bean配置。但为什么?在哪种情况下我可能想即时更改bean的配置?afterPropertiesSet回调

java - Java 中的 CPU 使用率太低

嘿stackoverflow社区!我遇到一个问题,其中高度复杂的算法程序使用的CPU利用率太低:介于3%和4%之间。返回结果需要很长时间,我认为它只是不够努力。你们中的任何天才都知道为什么会发生这种情况吗?如果有的话,我希望100%的利用率。一个额外的细节是该程序向sqlite3数据库中插入,因此是的,我相信有很多通过sqlite3jdbc库的JNI调用。(请注意,我之前想用PreparedQuery批处理延迟这些插入,但这导致了主要的内存问题-有很多数据)。提前致谢更新:已修复。是的,我只是一个傻瓜,但我没想到sqlite会开始一个新事务并做这么多开销。我现在使用PreparedSt

在约 110 个用户连续运行两天后,Java 服务器 CPU 使用率达到 100%

我有一个tomcat6.0.20,4月1.2,jdk1.6.0_15和mysql5.1.38在一个4GB内存的rhel盒子上运行。上面有一个简单的jsp/servlet应用程序,有5个用户,一个struts1.2.0.9有64个用户,一个struts2.0应用程序有35个用户。struts2.0的用户每秒钟都会创建一个条目,一天大约有900个条目。我还在最后两个应用程序中使用toplink进行持久化。我已在代码中将所有非引用对象声明为null,并已从struts2站点和tomcat站点为配置文件应用生产值。在mysql中应用线程缓存,减少wait_timeout和interactive

java - 使用 JMX 获取线程 CPU 时间的有效方法

我目前通过以下方式使用JMX获取总线程CPU时间:privatelongcalculateTotalThreadCpuTime(ThreadMXBeanthread){longtotalTime=0l;for(ThreadInfothreadInfo:thread.dumpAllThreads(false,false))totalTime+=thread.getThreadCpuTime(threadInfo.getThreadId());returntotalTime;}由于ThreadMXBean实际上是一个远程代理,性能是可怕的,对于这个实际的方法调用来说是秒的数量级。有没有更快

java - 如何以编程方式从我的 Java 应用程序中获取内存、线程和 CPU 使用情况?

问题说明了一切!如何以编程方式从我的Java应用程序中获取内存、线程和CPU使用情况?谢谢 最佳答案 使用ManagementFactory中的各种静态方法,例如getOperatingSystemMXBean()、getMemoryMXBean()和getThreadMXBean()。 关于java-如何以编程方式从我的Java应用程序中获取内存、线程和CPU使用情况?,我们在StackOverflow上找到一个类似的问题: https://stackove

Java 8 : First use of stream() or parallelStream() very slow - Usage in practice meaningful?

在过去的几天里,我用Java8中的外部迭代、流和并行流进行了一些测试,并测量了执行时间的持续时间。我还阅读了我必须考虑的预热时间。但是还有一个问题。当我第一次对集合调用方法stream()或parallelStream()时,执行时间比外部迭代长。我已经知道,当我在同一集合上更频繁地调用stream()或parallelStream()并计算执行时间时,parallelStream()确实比外部迭代更快。但是由于在实践中一个集合通常也只迭代一次,所以我只看到使用流或并行流的缺点。所以我的问题是:如果我只迭代一次集合,使用流或parallelStream()是个好主意,还是执行时间总是比

java - args4j : in "usage" how to sort Options manually?

在args4j中,我定义了这样的选项:@Option(name="-host",usage="hosttoconnect")@Option(name="-port",usage="portofthehost")@Option(name="-idle",usage="idle")然而,当显示帮助时,args4j总是使用字母顺序,所以它会打印-host-hosttoconnect-idle-idle-port-porttoconnect这不太方便,因为我想先显示强制选项。此外,我想自己设置选项的顺序,因为一些选项(如主机和端口)应该放在一起。如何控制args4j中选项的顺序?我发现3年前问