我有一台专用服务器。自从我将 Wordpress 从 2.8.4 升级到最新版本后,我发现 CPU 使用率非常高。我还更新了插件。我使用 wp super cache。启用压缩,缓存在 10 天内过期。超过 45,000 个帖子。
内存使用率只有 20%,我可以进行更改,以便内存使用率可能增加到 40%,但 CPU 负载应该下降吗?
服务器信息
8 核,全部:
Vendor GenuineIntel
Name Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz
Speed 2933.533 MHz
Cache 8192 KB
内存信息
Memory: (16 GB) 16391660k/17825792k available
(2606k kernel code, 343628k reserved, 1665k data, 224k init)
系统信息
Linux 2.6.18-274.17.1.el5 #1 SMP Tue Jan 10 17:25:58 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
Server load 15.88 (8 CPUs)
Memory Used 19.69% (3,227,356 of 16,394,544)
Swap Used 0.01% (208 of 2,096,472)
Server Version: Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
Server Built: May 2 2012 09:35:50
Current Time: Wednesday, 02-May-2012 19:23:09 IST
Restart Time: Wednesday, 02-May-2012 09:48:43 IST
Parent Server Generation: 6
Server uptime: 9 hours 34 minutes 26 seconds
Total accesses: 5691409 - Total Traffic: 99.8 GB
CPU Usage: u103.95 s37.95 cu2261.29 cs0 - 6.97% CPU load
165 requests/sec - 3.0 MB/second - 18.4 kB/request
700 requests currently being processed, 0 idle workers
httpd配置文件
keepalive is off
<module prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 15
ServerLimit 700
MaxClients 700
MaxRequestsPerChild 0
</IfModule>
max_connections=256
log-slow-queries = /tmp/slow.log
long_query_time = 1
thread_cache_size = 2512M
tmp_table_size = 4024M
max_heap_table_size = 4024M
query_cache_size = 24M
query_cache_limit = 72M
table_cache = 2048
table_open_cache = 1024
table_definition_cache = 1284M
key_buffer=1024M
read_buffer_size=24M
read_rnd_buffer_size=32M
sort_buffer_size=8M
thread_concurrency = 8
答案1
尝试找出哪个进程占用了最多的 CPU 时间 - 你可以从运行 top 开始。是 apache2 [php+内容服务] 还是 mysql?如果没有这些基本信息,那只是猜测。
或者也许你的负载很高但是 CPU 大部分时间处于空闲状态[忙于在进程之间切换或疯狂交换/等待磁盘 io]?
安装穆宁[或者仙人掌并开始收集服务器负载的统计数据...它非常有用,特别是如果您有历史数据并且可以轻松看到与之前基线相比发生了哪些变化。
如果你的高服务器负载是由大量 Apache 进程引起的 - 也许是时候转移到更高效的服务器了 [比如nginx] 来为您的静态内容(也可能是动态内容)提供服务。
你的 mysql 配置看起来...很奇怪 - 你似乎有非常高的 tmp_table_size、thread_cache_size 和其他一些值。你可以尝试:
- 将所有表转换为 innodb
- 使用生成的配置percona 的 mysql 配置向导或者mysqltuner.pl