我不得不安装CloudLinux,这样我可以稍微控制CPU通讯,更重要的是网站使用的并发连接。 但是,正如你所看到的,服务器负载是很高的,这就是为什么一些网站需要10秒。 加载!
服务器:
昨天:共有214,514页面浏览量(Awstat)
现在我的问题是:我可以将某些CPU使用情况转移到RAM中吗?
或者我还可以做些什么来使网站运行更快(网站是dynamic的 – 所以SQL很重)
谢谢
top - 06:10:14 up 29 days, 20:37, 1 user, load average: 11.16, 13.19, 12.81 Tasks: 526 total, 1 running, 524 sleeping, 0 stopped, 1 zombie Cpu(s): 42.9%us, 21.4%sy, 0.0%ni, 33.7%id, 1.9%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8146632k total, 7427632k used, 719000k free, 131020k buffers Swap: 2104504k total, 132k used, 2104372k free, 4506644k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 318421 mysql 15 0 1315m 754m 4964 S 474.9 9.5 95300:17 mysqld 6928 root 10 -5 0 0 0 S 2.0 0.0 90:42.85 kondemand/3 476047 headus 17 0 172m 19m 10m S 1.7 0.2 0:00.05 php 476055 headus 18 0 172m 18m 9.9m S 1.7 0.2 0:00.05 php 476056 headus 15 0 172m 19m 10m S 1.7 0.2 0:00.05 php 476061 headus 18 0 172m 19m 10m S 1.7 0.2 0:00.05 php 6930 root 10 -5 0 0 0 S 1.3 0.0 161:48.12 kondemand/5 6931 root 10 -5 0 0 0 S 1.3 0.0 193:11.74 kondemand/6 476049 headus 17 0 172m 19m 10m S 1.3 0.2 0:00.04 php 476050 headus 15 0 172m 18m 9.9m S 1.3 0.2 0:00.04 php 476057 headus 17 0 172m 18m 9.9m S 1.3 0.2 0:00.04 php 6926 root 10 -5 0 0 0 S 1.0 0.0 90:13.88 kondemand/1 6932 root 10 -5 0 0 0 S 1.0 0.0 247:47.50 kondemand/7 476064 worldof 18 0 172m 19m 10m S 1.0 0.2 0:00.03 php 6927 root 10 -5 0 0 0 S 0.7 0.0 93:52.80 kondemand/2 6929 root 10 -5 0 0 0 S 0.3 0.0 161:54.38 kondemand/4 8459 root 15 0 103m 5576 1268 S 0.3 0.1 54:45.39 lvest
问题显然是你正在运行的Web应用程序。 从top输出,似乎你正在运行一些PHP代码。 您需要弄清楚PHP代码的哪一部分导致了问题(直接或通过数据库访问)。
如果top输出的例子描述了通常的情况,我猜测你的一些进程在应用程序级别上彼此阻塞 (某种锁争用)。
我从以下事实推断出: 低IO等待时间( top输出中的wa数据), 33%系统空闲和高负载 。 这意味着你没有运行所有的CPU,你不等待IO 。 在这种情况下,使系统“太慢”的唯一方法是使进程串行(一个进程在CPU#2上等待,直到另一个进程在CPU#1上完成)。 只有在不同进程之间有一些或多或less的显式locking的情况下才会发生这种情况 如果你真的不能删除进程间locking,那么唯一的select是投资更快的CPU核心,而不是多个慢核心。 您的CPU已经非常接近顶级,所以我会考虑先调查代码。
你问是否可以使用一些RAM来减lessCPU使用率。 积极的caching可能是可能的,但只有你运行的应用程序代码(PHP)可以利用这种折衷。 同样,您需要configuration和修改PHP代码。 有没有神奇的开关说,使用更多的内存,更less的CPU,请。
我不知道你的意思是“把CPU的使用量转移到内存”,但是无论你是什么意思,很可能这是不行的。
你需要找出实际的瓶颈是什么,减慢你的应用程序。 这可能包括
你需要找出造成这么大负荷的原因。 有可能你的服务器是由less量的CPU密集型任务或IO拥塞加载的。
如果数据库IO数据量过大,可以尝试增加数据库caching – mysql中的innodb_buffer_pool或postgres中的shared_buffers。
编辑:您的top输出显示您的问题是与优化mysql查询。 如果你可以pipe理数据库 – 找出缓慢的请求,并创build适当的索引或重新编写SQL查询,以消除MySQL的CPU瓶颈。 如果这是不可能的 – 买一个更强大的CPU。