我得到了一个运行 Java WebApp (Tomcat6+Hibernate+MySQL+Struts2) 的 CentOS 服务器。
通常 cpu 使用率约为 10%,但有时突然达到 100% 并且应用程序冻结。导致这种情况的进程是 java 命令,然后必须重新启动服务器才能使事情正常。这完全不规则地发生,因此不太可能是应用程序错误。
这是正常情况下的顶级命令:
top - 12:50:35 up 21 min, 1 user, load average: 0.13, 0.18, 0.21
Mem: 8300688k total, 836232k used, 7464456k free, 22168k buffers
Swap: 16779884k total, 0k used, 16779884k free, 309080k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP TIME CODE DATA nFLT COMMAND
3292 tomcat 18 0 1382m 415m 10m S 11.0 5.1 2:55.45 967m 2:55 36 1.3g 537 …Run Code Online (Sandbox Code Playgroud) 我正在 Amazon EC2 微型实例上运行一些基本服务器(基于 Ubuntu 11.04),其目的只是为了协调几个网络服务器的活动。这台机器运行了几个星期,但现在经常挂起,其 CPU 红线为 100%。
我通过 SSH 登录到机器并运行了一个top,这表明该landscape-sysinfo过程是消耗所有系统资源的肇事者。一pstree发现它是位于:
init???atd
??cron
??dhclient3
??dovecot???2*[dovecot-auth]
? ??3*[imap-登录]
? ??3*[pop3-login]
??6*[盖蒂]
??master???pickup
? ??qmgr
??mountall
??mysqld???11*[{mysqld}]
??rsyslogd???3*[{rsyslogd}]
??sshd???sshd???sshd???bash
? ??sshd???sshd???bash???top
? ??sshd???sshd???bash???pstree
? ??sshd???sh???run-parts???50-landscape-sy???landscape-sys+
??udevd???2*[udevd]
??新贵插座-
??新贵-udev-br
??vsftpd
违规进程在此处列为 的最后一个子进程sshd。如果我手动 kill landscape-sysinfo,机器将恢复正常 - 直到该过程自发重新生成,通常是几分钟后。(我可以“担保”sshd上面树中的其他进程。它们是合法的。)
我不知道为什么landscape-sysinfo会随机产卵。我加倍不知道为什么它是sshd.
显然,我对在我的机器上运行一个我无法解释的 SSH 进程感到非常兴奋。最初我担心漏洞/特洛伊木马/后门,所以我跑了chkrootkit和rkhunter,但它们都干净利落。
有没有人知道是什么导致这个过程疯狂?关于如何阻止它重生的任何想法?
因此,我们有许多虚拟机在 ESX 4.1 服务器上运行以进行产品测试。ESX Server 有时负载很重。在某些用例中,我们一直在经历高 CPU 水平,但我们不能总是重复这一点。如果整个 ESX 服务器负载很重,这是否会导致来宾计算机显示高 CPU 使用率?
换一种方式问它,如果来宾机器需要比服务器更多的 cpu 资源,这将如何影响操作系统和进程所指示的 CPU 使用率?
我想使用pidstat来获取 -u、-r 和 -d 标志。有办法这样做吗?
这个想法是获取 CPU、I/O 和磁盘使用情况。
干杯
诗。将标志组合为 -urd 在 Ubuntu 11.04 中不起作用
我们有七个用 PHP 编写的网站,它们运行在带有 IIS 7.5 的 Windows 2008 服务器上。他们现在都很慢。
当我查看任务管理器时,我看到大约 10 个 php-cgi.exe 进程,它们都占用了 0% 的 CPU,除了一个占用 25% 的 CPU。它是一个四核服务器,因此它占用了一个内核的 100%。
如果我观察几秒钟,占用 25% 的进程将变为 0%,而另一个 php-cgi.exe 进程将跳转到 25%。所以所有的 php-cgi.exe 进程都只是排队,等待一个内核,每个进程都尽可能使用 100% 的处理器。
这 7 个站点中的每一个都位于 IIS 中自己的应用程序池中,我们使用的是 FastCGI。PHP 版本是 5.3。
有任何想法吗?谢谢!
编辑:这是我们的 FastCGI 设置:
<fastCgi>
<application fullPath="C:\Program Files (x86)\PHP\v5.3\php-cgi.exe" monitorChangesTo="C:\Program Files (x86)\PHP\v5.3\php.ini" activityTimeout="600" requestTimeout="600" instanceMaxRequests="10000">
<environmentVariables>
<environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
<environmentVariable name="PHPRC" value="C:\Program Files (x86)\PHP\v5.3" />
</environmentVariables>
</application>
</fastCgi>
Run Code Online (Sandbox Code Playgroud)
编辑#2:我们部分地想通了。由于权限问题,PHP 从不垃圾收集会话,因此有数百万个会话文件。
但我仍然想知道为什么它只使用一个内核。这些网站现在要快得多,但我们还没有解决这个问题。有人知道吗?
我有一个运行一组 php 脚本的 bash 脚本。当它运行时,它需要一个小时并将 CPU 固定在 95-99%。这会导致我们的灯堆栈(主要是 apache 进程)出现问题,并且我们在同一服务器上的网站开始吐出超时或 500 错误。
我怎样才能:
我不确定哪个是更好的解决方案。
我有一台具有 32 GB RAM 和 16 个线程的服务器。该服务器有一个 PHP API,可以接收来自其他外部 API 的许多请求,我在 PHP-FPM 中进行了配置以支持所有这些请求,而不会减慢网站速度,这运行良好 1 年,现在请求几乎翻了一番,这离开网站页面速度很慢,需要 5-6 秒才能加载,这是不正常的。也许我必须在 PHP-FPM 中重做一个配置来支持这种新的请求需求,在这种情况下你会怎么做?
我的服务器有 32 GB RAM,但仅使用 2.5 GB,可以吗?是否可以保持 RAM 和 CPU 之间的平衡来提高 CPU 性能还是我在胡说八道?
pm.max_children = 32
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 1000
Run Code Online (Sandbox Code Playgroud)
PHP-FPM 有 32 个子进程正在运行。
我一直尝试在 Web 服务器上启用 gzip 压缩,因为它似乎具有非常低的 CPU 成本并且您获得了显着的数据传输减少。
现在我有一个没有启用 gzip 的公共服务器,有时它的 CPU 负载在大流量下相当高(主要是因为某些页面上的复杂 SQL 查询)并且阅读这篇关于启用主题的Microsoft 文章,应该考虑 CPU 负载启用 gzip 时的帐户。
客户端想要减少带宽并加快页面加载时间,但我不确定启用 gzip 会弊大于利,尽管它在其他服务器上运行良好。
根据您的经验,gzip 压缩会对 CPU 负载产生重大影响吗?
编辑:在这种情况下,我们使用的是 IIS6