Tomcat.exe占用了75%的CPU.有谁知道它为什么会发生,怎么会减少?
我正在使用Tomcat5.5和J2SDK v 1.4.2_12
我使用Sublime Text 3进行Web开发.它会不时地启动PHP进程,CPU使用率为100%.我的Mac开始变得迟钝,而且粉丝很响亮.
我该如何调查为什么会这样?我认为这是我正在使用的插件之一:SublimeLinter-php或者SublimeLinter-phpcs,但我不确定.
有没有办法检查出来除了禁用插件并等待,如果发生这种情况?这将是麻烦的,因为有时它会在几个小时后发生,没有它们的发展对我来说很麻烦.您是否使用Sublime Text 3体验过这种行为?
目前我正通过Prometheus.io监控码头集装箱.我的问题是我只是得到"cpu_user_seconds_total"或"cpu_system_seconds_total".我的问题是如何将这个不断增加的值转换为CPU百分比?
目前我在查询:
rate(container_cpu_user_seconds_total[30s])
Run Code Online (Sandbox Code Playgroud)
但我不认为它是正确的(与顶部相比).
如何将cpu_user_seconds_total转换为CPU百分比?(就像在顶部)
问题:我有一台开发人员机器(读取:快速,大量内存),但用户有一台用户机器(读取:慢,内存不多).
我可以使用Fiddler模拟一个慢速网络(http://www.fiddler2.com/fiddler2/)我可以看一下使用Process Explorer进行流程时CPU的使用情况(http://technet.microsoft.com/en) -us/sysinternals/bb896653.aspx).
有什么方法可以限制进程可以拥有的CPU数量,或者进程可以拥有多少内存来更有效地模拟用户计算机?(例如,为了隔离性能问题)
我想我可以使用VM,但我正在寻找更轻松的东西.
我正在使用Windows XP,但欢迎任何Windows机器的解决方案.谢谢.
我知道如何获得进程的CPU使用率和内存使用率,但我想知道如何在每个线程级别上获取它.如果最好的解决方案是做一些P-Invoking,那也没关系.
我需要的例子:
Thread myThread = Thread.CurrentThread;
// some time later in some other function...
Console.WriteLine(GetThreadSpecificCpuUsage(myThread));
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个脚本来监控串口的输出,每半小时接收3-4行数据 - 脚本运行良好,并抓住端口发出的所有内容,这些内容在一天结束时才是最重要的. .
然而,让我感到困惑的是,对于仅监控单个串行端口的程序,CPU使用率似乎相当高,在此脚本运行时,1核心将始终处于100%使用率.
我基本上在这个问题中运行代码的修改版本:pyserial - 如何读取从串行设备发送的最后一行
我已经尝试定期轮询inWaiting()函数并在inWaiting()为0时让它休眠 - 我已经尝试了从1秒到0.001秒的间隔(基本上,我可以尽可能多地使用而不会提高CPU使用率) - 这将成功抓住第一行,但似乎错过了其余的数据.
调整串口的超时似乎对cpu的使用没有任何影响,也没有将监听功能放入它自己的线程中(不是我真的期望差异,但值得尝试).
我最近了解了jemalloc,它是firefox使用的内存分配器.我已经尝试通过覆盖new和delete运算符并调用jemalloc等效的malloc和free即je_malloc和je_free来集成jemalloc到我的系统中.我编写了一个执行1亿次分配的测试应用程序.我已经使用glibc malloc运行应用程序jemalloc,与jemalloc一起运行花费较少的时间进行此类分配时CPU利用率相当高,而且与malloc相比,内存占用量也更大.阅读本文关于jemalloc分析 似乎jemalloc的脚印可能比malloc更大,因为它采用技术来优化速度而不是内存.但是,我没有任何关于Jemalloc的CPU使用情况的指示.我想说明我在多处理器机器上工作的细节如下.
处理器:11 vendor_id:GenuineIntel cpu系列:6型号:44型号名称:Intel(R)Xeon(R)CPU X5680 @ 3.33GHz步进:2 cpu MHz:3325.117缓存大小:12288 KB物理ID:1个兄弟:12核心ID :10个cpu核心:6个apicid:53个fpu:是fpu_exception:是cpuid等级:11个wp:是标志:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm系统调用nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm bogomips:6649.91 clflush size:64 cache_alignment:64地址大小:40位物理,48位虚拟电源管理:[8]
我正在使用top -c -b -d 1.10 -p 24670 | awk -v time = $ TIME'{print …
我已经在开发盒上运行CF10,Windows 7,64位.每隔一分钟左右,CF10的CPU使用率将在大约20秒内上升到100%并再次下降.这很规律.
我发现很难诊断出这个问题.我已经看到了关于客户端变量清除,日志记录,监控和各种方式的讨论 - 但我已经把这些全部转为无济于事.
使用VisualVM,我设法将问题跟踪到"调度程序"线程.我有5个处于等待状态.每个都会定期运行,从而大大提高CPU的性能.采取线程转储,似乎所有这些线程都在调用java.io.WinNTFileSystem.getBooleanAttributes- 我已经看过几次提到的可能存在问题.
更新:最近我一直在onSessionEnd上玩另一个应用程序,并发现scheduler-x线程似乎是ColdFusion的内部 - 我的onSessionEnd任务似乎总是在其中一个线程中运行.
查看temp文件夹,我可以看到已经创建了许多EH Cache文件夹,我认为这些文件夹与查询缓存有关.我运行的应用程序相当广泛地使用它.我认为清除临时文件夹可能会提高性能,但它没有任何效果.
值得注意的是,如果我在没有实际调用任何应用程序的情况下启动CF服务,则不会出现问题.这可能表明问题出在应用程序本身,但它们不会在生产中造成任何问题 - 仅限于此框.也没有设置任何计划任务.
下面是导致高CPU的一个线程的示例.我很感激任何帮助来诊断这个线程正在做什么和为什么,以及如何可能阻止它使用这么多资源.
"scheduler-2" - Thread t@84
java.lang.Thread.State: RUNNABLE
at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
at java.io.File.isDirectory(File.java:849)
at coldfusion.watch.Watcher.accept(Watcher.java:352)
at java.io.File.listFiles(File.java:1252)
at coldfusion.watch.Watcher.getFiles(Watcher.java:386)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.getFiles(Watcher.java:397)
at coldfusion.watch.Watcher.checkWatchedDirectories(Watcher.java:166)
at coldfusion.watch.Watcher.run(Watcher.java:216)
at coldfusion.scheduling.ThreadPool.run(ThreadPool.java:211)
at coldfusion.scheduling.WorkerThread.run(WorkerThread.java:71)
Run Code Online (Sandbox Code Playgroud)
我的环境:
问题出现在多个版本的JVM上 - 此版本目前用于使监控可用.
我的java设置:
最大堆大小:1024mb
-server -XX:MaxPermSize参数=512米-XX:+ UseParallelGC -Xbatch -Dcoldfusion.home …
我们正在使用Express 3运行Node Socket.io服务器.使用Forever监视服务器.该服务运行良好,但CPU一整天都在增长,直到达到90%+然后突然下降到~20%,如下图所示.我相信这种下降是由Forever重新启动应用程序引起的.

我想知道的是;
我认为这可能与Socket.io在用户断开连接后没有清理资源有关,尽管文档说Socket.io会自动管理它.
任何帮助将不胜感激,这个问题使管理我们的服务器非常困难.我在一周前在Serverfault上发布了这个问题,但没有收到回复,所以我认为这可能会更好.
更新:经过更多研究后,CPU似乎与连接数没有直接关联.我们的临界质量似乎是大约1500个并发连接分裂如下:
有时我们可能只有100个CPU,只有500个连接,有时则是1500个连接.我知道发送的邮件速率有很大的影响,但速度相当一致.
cpu-usage ×10
performance ×3
c# ×1
coldfusion ×1
debugging ×1
delphi ×1
jvm ×1
malloc ×1
memory-leaks ×1
node.js ×1
php ×1
prometheus ×1
pyserial ×1
python ×1
sublimetext3 ×1
testing ×1
tomcat ×1
tomcat5.5 ×1
tomcat7 ×1
websocket ×1
windows ×1