我有一个用PHP编写的Facebook应用程序。它每分钟有150页的浏览量,到今年年底,每分钟将有多达300页的浏览量。在获得更多PV的同时,我开始在可伸缩性方面遇到问题,因此,我想请您提供一个建议,即如何扩展到成功地处理300 PV /分钟。
我的应用程序是一个类似于quizz的应用程序,它托管在VPS上,可以使用:
我的VPS的配置如下:
在过去的几个月里,我利用互联网上提供的一些教程来优化MySQL、Lighttpd和。我成功地广泛使用了Memcached,因此很多请求降到了1ms,而那些未被memcache处理的请求占用了多达300 ms。我为MySQL添加了很好的索引,所以它不在用户的范围之内。
有一段时间以上的优化已经足够处理新的请求了,但是最近由于应用程序的日益流行,我注意到有些请求花费了3秒以上,在关键时刻,我的Lighttpd只说f*,您和用户得到了内部服务器错误500。
我设法找到了一个解决方案(我今天肯定会知道这一点),通过设置以下方法修复错误500:
"PHP_FCGI_MAX_REQUESTS" => "500"但可伸缩性问题仍未得到解决。我需要能够处理比现在多2倍的请求。我想该怎么做。以下是我今天提出的解决方案:
我可以在我的VPS分销商购买一个更大的计划,有3,3千兆赫取代2,6千兆赫,我现在和两个核心,而不是一个。这需要更多的钱,但能帮到我吗?如何计算它是否将处理300 PV?
我的第二个想法是购买另一个VPS并将数据库移到那里。为FastCGI进程和数据库进程提供CPU和内存的增益。但是,如何才能知道是否更好地产生另一个服务器或购买更大的计划,为此我现在有?
所以我谈了3点--去问别人。所以我现在是一个程序员,而不是管理员,有一个非常大的可伸缩性问题,并请求您的帮助。
我想知道如何计算我现在的VPS每分钟能处理多少PV --这将帮助我做出决定。因为如果300 PV超出了我目前的VPS能力--我可以立即考虑其他解决方案,而不是干扰更多的配置。
第二,如果我的VPS可以处理更多的请求--这是配置问题--那么我需要更多的知识来帮助我设置配置权限。我可以在这里提供这个配置,或者通过电子邮件发送某人,并希望从你那里知道谁有时间和知识来帮助我。我没有时间在这件事上做更多的实验。
最后,如果它超出了我的VPS能力,我想从您那里知道如何决定我是否应该升级我的VPS或生成其他服务器?什么样的解决方案会更好的300光伏目标?
如果你谈到我的问题的这一点,请提前感谢你的提问。您的帮助,建议或联系的人谁可以帮助在这一问题上将是非常螺旋我!
发布于 2010-02-14 13:10:31
对不起,你确定你说的是每分钟,而不是每秒的页面浏览量吗?每分钟300页只意味着每秒5页,任何移动电话都应该能够不出汗地传输这些页面,所以我真的无法想象2.6 GHz处理器不能做到这一点!
如果您确实是在谈论分钟,那么监视您的磁盘I/O、CPU和内存。正确设计的应用程序不可能运行得这么慢,所以您肯定有一个很大的调优问题。也许您正在对MySQL数据库或memcache进行数千次访问,并且您对I/O延迟非常敏感(在这种情况下,CPU将几乎没有使用)。如果您的CPU一直都是满的,那么您的代码中就出现了一些错误,试图优化I/O和其他组件是毫无价值的,唯一可行的解决方案就是修复代码。
发布于 2010-02-13 15:17:56
我倾向于同意David Spillett的回答。我要补充的是,将应用程序和数据库放在同一个节点上也是一个主要的瓶颈,因为数据库一般都需要内存。我托管了几个流量很高的站点,就像你描述的那样繁忙,我们从来没有把数据库层放在VM上,也没有把数据库层放在我们的web和应用程序层上;我们的数据库总是在真正的专用硬件上运行。
我们的前端(取决于体系结构)是使用Cisco CSMs进行负载平衡的,但是您可以对apache进行类似的负载平衡。
如果你是一个Linux商店,有很多方法可以解决这个问题,而不需要昂贵的思科硬件。
看看这个:http://haproxy.1wt.eu/
发布于 2010-02-14 14:20:47
我想知道如何计算我现在的VPS每分钟能处理多少PV --这将帮助我做出决定。因为如果300 PV超出了我目前的VPS能力--我可以立即考虑其他解决方案,而不是干扰更多的配置。
这非常非常困难。很难预测优化会产生什么样的影响。以及与系统其他部分的交互。
你需要做实验。
第二,如果我的VPS可以处理更多的请求--这是配置问题--那么我需要更多的知识来帮助我设置配置权限。我可以在这里提供这个配置,或者通过电子邮件发送某人,并希望从你那里知道谁有时间和知识来帮助我。我没有时间在这件事上做更多的实验。
如果你不能做实验,任何人都能做的就是瞎猜。也许能行。你可能会有一个特别幸运和准确的盲目猜测。
您应该分析并检查运行中的系统。上面有人“猜到”你正在进行交换,这可能是一个很好的猜测。首先使用top、vmstat、sar来获取框正在做什么的图片。你的CPU挂接了吗?你在做大规模的调查吗?你们在交换吗?这将给你一个合理的想法,什么是问题。
您的问题可能介于lighthttpd、PHP、memcache、MySQL之间。通常的嫌疑犯是:
你应该能找出这三个问题中的一个。
每分钟300次的页面浏览量并不多,即每秒5次页面浏览量,所以似乎出现了一些不稳定的现象。
https://serverfault.com/questions/112536
复制相似问题