我有一台专用服务器,配有 16GB RAM 和 Xeon E5504(8 核 @2.0GHZ),运行 Centos 7。我运行了 top 命令,可以看到 7 个核心大部分时间都处于空闲状态,然后一个核心全速运行。我看到它超过了 100%,我不明白为什么。
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16479600 total, 1233968 free, 616824 used, 14628808 buff/cache
KiB Swap: 523260 total, 499720 free, 23540 used. 15342640 avail Mem
该服务器仅用作 Web 主机。Apache、MySQL 和 PHP。我没有对 apache 的默认配置进行任何更改。我听说默认 apache 配置支持多线程,但显然事实并非如此。
mysqld 和 httpd 是唯一使用大量资源的东西。总的来说,apache 每周收到大约 10 万个请求。对于这个服务器来说已经足够了,但随着我继续添加更多网站,我不想减慢它的速度,因为所有东西都在同一个 CPU 上。
我仔细阅读后发现,似乎需要修改“prefork”才能让 apache 占用更多资源。我运行以下命令查看默认配置,但看起来 prefork 甚至没有安装
/usr/sbin/apachectl -l
Compiled in modules:
core.c
mod_so.c
http_core.c
我不确定如何测试系统以了解当前配置是什么以及为什么只使用一个核心。将网站从低端单核 VPS 移至此服务器时,我没有注意到性能有太大提升,所以我担心配置有问题。
我检查了 /etc/http/conf/httpd.conf,发现这里只有虚拟主机。没有与最大客户端数相关的行,也没有看到有人在 prefork if 语句中使用其他值。
答案1
Top 告诉您您的系统没有执行任何操作,因为它处于 100% 空闲状态。
这些字段具有以下含义,并且不指定特定的核心。
us, user : time running un-niced user processes
sy, system : time running kernel processes
ni, nice : time running niced user processes
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor