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 :) 一切都非常棒,感谢大家的帮助!
对我来说看起来不错。
您有 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允许这样。这是负载,但又不是一个大问题。
**编辑**
现在看到查询日志后,我倾向于认为有一些事情可能会使服务器受益。
如果不深入了解到底发生了什么,就很难说出来。
可能值得尝试使用NewRelic for PHP。它可以免费使用一个月,并且确实可以很好地洞察糟糕的代码味道。
或者,我可以提供咨询;)
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |