我应该在服务器上添加更多的RAM还是CPU? 我如何看待这个?

我主持一个PHP / MySQL应用程序与我的服务器上的Smartycaching。 它通常通过推特向数以千计的追随者获得短暂的交通高峰。 stream量高达每秒6点,持续20-30分钟。 后来减less到不到一秒钟的命中。 在峰值期间,响应时间变得非常糟糕,并且要等待超过两分钟才能提供页面。

我如何pipe理这个? 如何找出我的服务器上的瓶颈? 我有一个1GB的RAM服务器托pipe在一个云与CPU扣人心弦。 我应该购买更多的CPU还是更多的内存?

stream量高达每秒6次,长达20-30分钟

如果你考虑每秒6点击率,你需要一个现实检查。 我会考虑每秒6次的零负载情况。

在尖峰期间,响应时间变得非常糟糕,最多可能会超过两分钟

蹩脚的编程或一个非常糟糕的服务器,比我的手机小。

我有一个1GB的RAM服务器托pipe在一个云与CPU扣人心弦。 我应该购买更多的CPU还是更多的内存?

图出来。 我基本上会开始告诉你,没有办法花费几分钟的时间来处理每秒6次点击的事情,尽pipe这是非常特殊的情况。 也许你错过了一个索引,并强迫MySQL进行表扫描。 如果我无法在虚拟机上的一个核心上处理每秒6个请求,我个人会非常担心,几乎不pipe它有多大。 或者 – 粗暴地说:我希望我的手机能做到这一点。 上次我做了一个更大的网站,我们认为30ms是处理时间限制。 这意味着每个内核每秒会有超过30个请求。

否则,你需要找出 – 如果你的CPU真的高峰,那么你需要更多的CPU,如果内存不足,它会去光盘,那么CPU将不会完全忙。 但是,这听起来像“我的车只有30公里/小时,请告诉我接下来要调整什么”,而汽车应该快得多。 这听起来更像是糟糕的编程开始。

要尝试回答您的问题,您需要更好地了解造成这种减速的原因。 这里有几件事你可以看看:

  • 在尖峰期间你有缓慢的MySQL查询吗? (看看你的mysql慢日志)

  • 有多lessapache进程(如果你正在运行apache的)在这些峰值期间是否同时运行(请参阅ps aux | grep apache | wc -l ),以及这与maxclient设置相比如何?

  • 每个apache进程有多大?

  • 有你在top

  • mysql使用多less内存? (如果你有phpmyadmin,看看你的服务器状态)

更多的内存,绝对! 6点/秒并不是那么多的计算。 即使不知道工作负载的具体情况,1GB内存几乎肯定是您的瓶颈。