Ubuntu 服务器 12.04 CPU 负载

zer*_*tux 5 mysql ubuntu central-processing-unit

我有一台运行 Ubuntu Server 12.04 LTS 的服务器(2x Hexa-Core Xeon E5649 2.53GHz w/HT with 32GB RAM and 20000 GB Bandwidth)。服务器运行 LAMP,仅服务于一个网站,同时估计用户数约为 15,000。

目前我有大约 2000 个在线用户,他们每个人从会话开始到结束运行 50 个 MySQL 查询(小值主要是选择和插入)。服务器 CPU 负载在此连接数下很高,而 RAM 使用量几乎是 32GB 中的 1GB,值得一提的是,服务器运行速度非常快,完全没有问题,但我担心平均负载。http://s12.postimage.org/z7hi6mz3h/photo.png

top - 03:02:43 up 9 min,  2 users,  load average: 50.83, 30.14, 12.83
Tasks: 432 total,   1 running, 430 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 66.5%id, 33.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32939992k total,  3111604k used, 29828388k free,    84108k buffers
Swap:  2048280k total,        0k used,  2048280k free,  1621640k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                          
 2860 root      20   0 25820 2288 1420 S    3  0.0   0:11.18 htop                                                                                             
 1182 root      20   0     0    0    0 D    2  0.0   0:01.46 kjournald                                                                                        
 1935 mysql     20   0 12.3g 161m 7924 S    1  0.5 102:31.45 mysqld                                                                                           
   11 root      20   0     0    0    0 S    0  0.0   0:00.38 kworker/0:1                                                                                      
 1822 www-data  20   0  247m  25m 4188 D    0  0.1   0:01.81 apache2                                                                                          
 2920 www-data  20   0     0    0    0 Z    0  0.0   0:01.20 apache2 <defunct>                                                                                
 2942 www-data  20   0  247m  23m 3056 D    0  0.1   0:00.20 apache2                                                                                          
 3516 www-data  20   0  247m  23m 3028 D    0  0.1   0:00.06 apache2                                                                                          
 3521 www-data  20   0  247m  23m 3020 D    0  0.1   0:00.09 apache2                                                                                          
 3664 www-data  20   0  247m  23m 3132 D    0  0.1   0:00.09 apache2                                                                                          
 3674 www-data  20   0  247m  23m 3252 D    0  0.1   0:00.06 apache2                                                                                          
 3713 www-data  20   0  247m  23m 3040 D    0  0.1   0:00.09 apache2                                                                                          
    1 root      20   0 24328 2284 1344 S    0  0.0   0:03.09 init                                                                                             
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd                                                                                         
    3 root      20   0     0    0    0 S    0  0.0   0:00.01 ksoftirqd/0                                                                                      
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0                                                                                      
    7 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0                                                                                       
    8 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/1                                                                                      
    9 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/1:0


root@server:~/codes# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
19  0      0 29684012  86112 1689844    0    0    19   590  254  231 48  0 47  5
23  0      0 29704812  86128 1697672    0    0     4   320 11100 8121 77  1 22  0
33  0      0 29671044  86156 1705308    0    0     0  5440 13190 9140 95  1  4  0
33  3      0 29670088  86160 1706288    0    0     0 32932 12275 7297 99  0  1  0
35  0      0 29693456  86188 1710724    0    0     4   676 12701 7867 98  1  1  0
^C
Run Code Online (Sandbox Code Playgroud)

我没有更改 Ubuntu 附带的任何默认配置。对于如此强大的服务器,这种负载是否正常?我可以对 Apache/MySQL 进行任何优化以最小化负载吗?你有什么建议吗 ?

编辑:平均负载为 52 !!!!!!!!! http://zertux.com/IMG_0117.PNG

****更新**** 事实证明,DBA 没有为表添加索引,添加索引后,平均负载从 93 急剧下降到 1.2 :) 一切都非常棒,感谢大家的帮助!

Tom*_*nor 6

对我来说看起来不错。

您有 12 个内核……跨越 2 个 6 核 CPU。所以在 100% 的性能下,你的平均负载应该是 12。

平均负载很有趣。我不认为这意味着你认为它意味着什么。

平均负载实际上表示在任何时间有多少进程正在运行,平均超过 1、5 和 15 分钟窗口。

在我看来,你有点过度投入,但并不严重。

也许使用http://mysqltuner.pl/mysqltuner.pl来了解您的 mysqld 设置如何等同于实际使用量。

当然,下一个合乎逻辑的步骤是将 MySQL 和 Apache 分离到不同的机器上。我不确定您是否处于那个级别,因为您仍然有大量可用的 RAM 供 MySQL 吸收。您可能会发现增大查询缓存和键缓冲区的一些好处,并且可能更深入地查看MySQL 的慢查询日志,看看是否可以优化表。

有大量关于如何读取平均负载的信息,实际上将负载平均数除以内核数更为明智,因此您对服务器的实际利用率有了一些了解。

我现在可以看到你有 33% 的 iowait。我怀疑.. 你有一个写量相当大的数据库,这会导致你在写的时候表被锁定,这意味着并发写不会发生。

已经有一嗅在my.cnf中,它看起来像MAX_CONNECTIONS是相当高的,但是这不是一个巨大的关注,但是,如果你使用的所有的人确实意味着你需要的RAM 27GB允许这样。这是负载,但又不是一个大问题。

考虑 打开PHP APC 操作码缓存

**编辑**

现在看到查询日志后,我倾向于认为有一些事情可能会使服务器受益。

  1. PHP APC 操作码缓存(通常使 apache 更高效)
  2. 转换所有表InnoDB的,除非你有一个真正的好理由。如果该原因是全文搜索,请找到更好的方法,然后转向 InnoDB。
  3. 购买另一台服务器,并使其成为专用的数据库主机。将其与 SAS 磁盘配合使用,并将其分成多个分区,以便日志记录和数据位于不同的轴(或者更确切地说,RAID 阵列)上。

如果不深入了解到底发生了什么,就很难说出来。

可能值得尝试使用NewRelic for PHP。它可以免费使用一个月,并且确实可以很好地洞察糟糕的代码味道。

或者,我可以提供咨询;)

  • 不要再听那些不了解生产环境的开发人员了。 (3认同)
  • @zertux 根据定义,Web 开发人员不知道如何运行 RDBMS。我也可能不会,但我会将 MySQL 和 Apache+PHP 拆分在两个(可能功能较弱的)机器上,而不是将所有东西都放在一个大东西上。或者至少确保将数据库放在自己的主轴上,其中很多(您没有告诉我们您使用的是什么 I/O 系统)。 (2认同)