标签: cpu-usage

Glassfish - 高CPU使用率

我在生产环境中使用Glassfish 3.1.1 Web配置文件,它吃掉了太多的CPU.这是服务器设置:Windows Server 2008 R2 64位,Intel Xeon 8core @ 3,2GHz,8GB内存.我使用的是JDK 1.7u2 64bit.Glassfish JVM设置:

<jvm-options>-XX:+UseCompressedOops</jvm-options>
<jvm-options>-Xmn1g</jvm-options>
<jvm-options>-Xss128k</jvm-options>
<jvm-options>-XX:+UseParallelOldGC</jvm-options>
<jvm-options>-XX:ParallelGCThreads=4</jvm-options>
<jvm-options>-Xmx3g</jvm-options>
<jvm-options>-XX:+DisableExplicitGC</jvm-options>
<jvm-options>-d64</jvm-options>
<jvm-options>-XX:PermSize=256m</jvm-options>
<jvm-options>-Xms3g</jvm-options>
<jvm-options>-XX:MaxPermSize=256m</jvm-options>
<jvm-options>-XX:+AggressiveHeap</jvm-options>
Run Code Online (Sandbox Code Playgroud)

我还根据http://jfarcand.wordpress.com/2009/11/27/putting-glassfish-v3-in-production-essential-surviving-guide/调整了一些选项. 使用Glassfish几小时或一天CPU占15%到40%,有些占90%,应用程序没有响应.

[#|2012-02-03T10:30:46.837+0100|WARNING|glassfish3.1.1|com.sun.grizzly.config.GrizzlyServiceListener|_ThreadID=43;_ThreadName=Thread-2;|GRIZZLY0023: Interrupting idle Thread: http-thread-pool-80(32).|#]

[#|2012-02-03T10:30:55.074+0100|WARNING|glassfish3.1.1|com.sun.grizzly.config.GrizzlyServiceListener|_ThreadID=41;_ThreadName=Thread-2;|GRIZZLY0023: Interrupting idle Thread: http-thread-pool-80(41).|#]

[#|2012-02-03T10:30:56.665+0100|SEVERE|glassfish3.1.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=138;_ThreadName=Thread-2;|java.nio.channels.ClosedChannelException
    at sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:249)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:440)
    at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:108)
    at com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:76)
    at com.sun.grizzly.http.SocketChannelOutputBuffer.flushChannel(SocketChannelOutputBuffer.java:326)
    at com.sun.grizzly.http.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:398)
    at com.sun.grizzly.http.SocketChannelOutputBuffer.realWriteBytes(SocketChannelOutputBuffer.java:282)
    at com.sun.grizzly.tcp.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:898)
    at com.sun.grizzly.tcp.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:167)
    at com.sun.grizzly.tcp.http11.filters.GzipOutputFilter$FakeOutputStream.write(GzipOutputFilter.java:223)
    at java.util.zip.GZIPOutputStream.finish(GZIPOutputStream.java:169)
    at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:238)
    at com.sun.grizzly.tcp.http11.filters.GzipOutputFilter.recycle(GzipOutputFilter.java:186)
    at com.sun.grizzly.http.SocketChannelOutputBuffer.recycle(SocketChannelOutputBuffer.java:417)
    at com.sun.grizzly.http.ProcessorTask.finishResponse(ProcessorTask.java:817)
    at com.sun.grizzly.http.ProcessorTask.postResponse(ProcessorTask.java:750)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:726)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at …
Run Code Online (Sandbox Code Playgroud)

performance cpu-usage java-ee glassfish-3

7
推荐指数
1
解决办法
1万
查看次数

尝试在Windows PC上禁用处理器空闲状态(C状态)

我需要阻止处理器进入空闲状态(非C0 C状态).不可否认,我对处理器C和P状态知之甚少,所以请耐心等待.我们使用来自第三方供应商的相机,偶尔会提供损坏的帧.供应商已确定当CPU进入空闲状态时,它会干扰火线上框架的传输.为了确认这一点,我在Windows 7 PC上使用了以下代码,实际上,禁用空闲状态解决了这个问题.

   //WIN7
const DWORD DISABLED = 1;
const DWORD ENABLED = 0;
GUID *scheme;
PowerGetActiveScheme(NULL, &scheme);
PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_IDLE_DISABLE, DISABLED);
PowerSetActiveScheme(NULL, scheme);
Run Code Online (Sandbox Code Playgroud)

如果我跑我的应用程序并打开Windows permon并添加%C1时,%C2时间和%C3一次我看到他们都是零,当我禁用这些国家,当我让他们,我看到了相当多的时间中度过C3状态(这是在Dell Precision T3500四核PC上).

我还需要在XP上执行此操作,但这些调用在XP上不可用.所以我尝试执行以下操作来禁用空闲状态

  unsigned int ActPwrSch; 
DWORD currPolicy,newPolicy, curr1Policy,curr2Policy, new1Policy, new2Policy;
MACHINE_PROCESSOR_POWER_POLICY Policy; 
if(GetActivePwrScheme(&ActPwrSch)) 
{ 
    if(ReadProcessorPwrScheme(ActPwrSch,&Policy)) 
    { 
        printf("Read Power Scheme:\n"); 
        //if(Policy.ProcessorPolicyAc.DisableCStates!=0) 
        currPolicy = Policy.ProcessorPolicyAc.Policy[0].AllowPromotion;
        curr1Policy = Policy.ProcessorPolicyAc.Policy[1].AllowPromotion;
        curr2Policy = Policy.ProcessorPolicyAc.Policy[2].AllowPromotion;
        Policy.ProcessorPolicyAc.Policy[0].AllowPromotion = 0;
        Policy.ProcessorPolicyAc.Policy[1].AllowPromotion = 0;
        Policy.ProcessorPolicyAc.Policy[2].AllowPromotion = 0;
        newPolicy = Policy.ProcessorPolicyAc.Policy[0].AllowPromotion;

        if(WriteProcessorPwrScheme(ActPwrSch,&Policy)) 
        { 
            printf("WriteProcessorPwrScheme succeed\n"); 
            if(SetActivePwrScheme(ActPwrSch,0,0)) 
            { 
                printf("SetActivePwrScheme succeed!!\n");
            } 
        } …
Run Code Online (Sandbox Code Playgroud)

c++ windows cpu perfmon cpu-usage

7
推荐指数
1
解决办法
5877
查看次数

MySql插入高CPU负载

我有nginx接收POST请求和一个小的PHP脚本,将请求体放到MySql.当我每秒有300个POST时,问题是MySql CPU使用率非常高.我希望MySql是一个快速的东西,可以处理每秒300次插入更多.我使用亚马逊EC2小实例,亚马逊Linux.

top - 18:27:06 up 3 days,  1:43,  2 users,  load average: 4.40, 5.39, 5.76
Tasks: 178 total,   4 running, 174 sleeping,   0 stopped,   0 zombie
Cpu(s): 24.6%us, 13.4%sy,  0.0%ni,  0.0%id,  1.1%wa,  0.0%hi,  4.9%si, 56.0%st
Mem:   1717480k total,  1640912k used,    76568k free,   193364k buffers
Swap:   917500k total,     5928k used,   911572k free,   824136k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7677 mysql     20   0  313m 153m 6124 S 39.0  9.2 393:49.11 mysqld
16529 nginx …
Run Code Online (Sandbox Code Playgroud)

php mysql insert nginx cpu-usage

7
推荐指数
1
解决办法
4922
查看次数

Android - 手机内置的开发者工具 - "显示Cpu用法"选项含义是什么?

Android手机会向用户显示开发人员工具和选项列表(在"设置">"开发人员"下),并可显示在用户的屏幕上.有各种数据显示如下:6.002/6.48/8.23,下一行显示在后台运行的一些服务.这背后的概念是什么?

android cpu-usage

7
推荐指数
2
解决办法
2万
查看次数

为什么系统CPU时间(%sy)高?

我正在运行一个加载大文件的脚本.我在单核OpenSuSe服务器和四核PC中运行相同的脚本.正如我所预期的那样,它比服务器中的速度快得多.但是,脚本会降低服务器的速度,使其无法执行任何其他操作.

我的剧本是

for 100 iterations
Load saved data (about 10 mb)
Run Code Online (Sandbox Code Playgroud)

时间myscript(在PC中)

real    0m52.564s
user    0m51.768s
sys    0m0.524s
Run Code Online (Sandbox Code Playgroud)

时间myscript(在服务器中)

real    32m32.810s
user    4m37.677s
sys    12m51.524s
Run Code Online (Sandbox Code Playgroud)

我想知道为什么当我在服务器中运行代码时"sys"如此之高.我使用top命令检查内存和CPU使用情况.在此输入图像描述 似乎仍然有免费记忆,所以交换不是原因.%sy是如此之高,它可能是服务器速度的原因,但我不知道是什么导致%sy这么高.使用最高CPU百分比(99%)的过程是"myscript".屏幕截图中%wa为零,但有时会变得非常高(50%).

当脚本运行时,平均负载大于1,但从未见过高达2.

我还检查了我的光盘:

strt:~ # hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   16480 MB in  2.00 seconds = 8247.94 MB/sec
 Timing buffered disk reads:   20 MB in  3.44 seconds =   5.81 MB/sec

john@strt:~> df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       245G  102G  131G  44% /
udev            4.0G  152K  4.0G   1% /dev …
Run Code Online (Sandbox Code Playgroud)

linux opensuse cpu-usage linux-kernel

7
推荐指数
1
解决办法
2万
查看次数

如何在OS X上以Objective C/C获得总CPU空闲时间?

我需要在OS X上获得目标C/C的总CPU空闲时间吗?

如果可能的话请提供代码示例.这是我用来获取这些指标的代码.结果百分比与我在Activity Monitor中的百分比不同.所以我假设CPU时间计算不正确:

#include <sys/sysctl.h>
#include <sys/types.h>
#include <mach/mach.h>
#include <mach/processor_info.h>
#include <mach/mach_host.h>

- (void)printCPUUsage
{
    processor_cpu_load_info_t cpuLoad;
    mach_msg_type_number_t processorMsgCount;
    natural_t processorCount;

    uint64_t totalSystemTime = 0, totalUserTime = 0, totalIdleTime = 0, totalCPUTime = 0;

    kern_return_t err = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &processorCount, (processor_info_array_t *)&cpuLoad, &processorMsgCount);

    for (natural_t i = 0; i < processorCount; i++) {

        // Calc load types and totals, with guards against 32-bit overflow
        // (values are natural_t)
        uint64_t system = 0, user = 0, idle = 0, …
Run Code Online (Sandbox Code Playgroud)

c macos objective-c cpu-usage

7
推荐指数
1
解决办法
3314
查看次数

如何在c ++中利用multi-cpu?

我在实验室工作并编写了多线程计算程序,在C++ 11上使用std::thread.现在我有机会在多CPU服务器上运行我的程序.

服务器:

  • 运行Ubuntu服务器
  • 拥有40个Intel CPU

我对多CPU编程一无所知.第一个想法,我想到了运行40个应用程序然后将它们的结果粘合在一起.这是可能的,但我想更多地了解我的机会.

  1. 如果我通过它的gcc编译器在服务器上编译我的代码,结果应用程序是否利用了多CPU?
  2. 如果#1答案取决于,我该如何检查?

谢谢!

c++ cpu multithreading cpu-usage c++11

7
推荐指数
2
解决办法
1835
查看次数

似乎在等待的线程的高CPU利用率

我目前正在运行一些JMeter测试来测试Web服务的性能.它使用了非常高的CPU.对于一个JMeter请求线程,它使用10-30%的任何位置(取决于请求的类型).当我将其提升到仅仅15个线程时,我获得了~95%的CPU利用率.当然,我想知道发生了什么.我做了一个Hprof CPU示例(我尝试了时间选项但是花了一个半小时来启动我的服务并且没有消息会通过).以下是该抽样结果的片段(跨度超过15分钟).

CPU SAMPLES BEGIN (total = 220846) Fri Aug 22 13:38:54 2014
rank   self  accum   count trace method
   1 14.96% 14.96%   33038 300514 java.net.PlainSocketImpl.socketAccept
   2 14.84% 29.80%   32776 301258 sun.nio.ch.EPollArrayWrapper.epollWait
   3 12.45% 42.26%   27505 313002 sun.nio.ch.EPollArrayWrapper.epollWait
   4  7.48% 49.73%   16517 300604 java.net.PlainSocketImpl.socketAccept
   5  7.18% 56.91%   15856 303203 sun.nio.ch.EPollArrayWrapper.epollWait
   6  6.18% 63.09%   13639 313001 sun.nio.ch.ServerSocketChannelImpl.accept0
   7  6.04% 69.13%   13329 304259 sun.nio.ch.EPoll.epollWait
   8  5.11% 74.23%   11275 307102 sun.nio.ch.EPollArrayWrapper.epollWait

以及那些顶级样本的相应堆栈:

TRACE 300514:
    java.net.PlainSocketImpl.socketAccept(:Unknown line)
    java.net.AbstractPlainSocketImpl.accept(:Unknown line)
    java.net.ServerSocket.implAccept(:Unknown line)
    java.net.ServerSocket.accept(:Unknown line)
    sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(:Unknown line) …

java performance multithreading jmeter cpu-usage

6
推荐指数
1
解决办法
8288
查看次数

是否有跨平台 C/C++ 库可以为我们提供 CPU 和内存使用统计信息?

我正在寻找一个 C/C++ 库,它可以为我提供系统统计信息,例如 CPU 使用率和内存使用率。

有没有一个可以跨平台工作的?

我只是不想重新发明轮子(糟糕)。

c c++ ram cross-platform cpu-usage

6
推荐指数
1
解决办法
3362
查看次数

如何限制Docker构建命令的CPU使用率?

我的 Dockerfile 执行RUN npm run build命令。当我docker build在 t2.micro EC2 实例上执行命令时,实例冻结并且不响应(我什至无法使用 ssh 连接)。当我监控CPU使用率时,我可以看到CPU使用率达到了最高水平。因此,我尝试使用--max_semi_space_size=1--max_old_space_size=198参数来限制内存使用,但它不起作用。

如果我可以为 docker build 命令设置 CPU 使用限制,我认为它可能会起作用。有人能帮我吗?

我知道,如果我增加 EC2 实例的 vCPU 数量,那么我可以毫无问题地构建我的应用程序,但由于它是一个演示项目,我尝试将其部署在免费层上。

Dockerfile:

FROM node:16-alpine
COPY . .
# Install dependencies
RUN node \
--max_semi_space_size=1 \
--max_old_space_size=198 \
$(which npm) ci
# Build the app
RUN node \
--max_semi_space_size=1 \
--max_old_space_size=198 \
$(which npm) run build
EXPOSE 3000
# Start the app
CMD [ "npx", "serve", "build" ]
Run Code Online (Sandbox Code Playgroud)

cpu-usage node.js docker docker-build npm-run

6
推荐指数
1
解决办法
2589
查看次数