2013-02-25 51 views
0

我知道我的问题的标题相当模糊,所以我会尽量澄清我的问题。请随意缓和这个问题,让它对社区更有用。在交通繁忙的情况下LAMP堆叠的性能

给定一个标准LAMP堆栈,它具有或多或少的默认设置(允许一些调整,客户端和服务器端缓存打开),运行于现代硬件(16GB RAM,8核CPU,无限制磁盘空间等),部署一个相当复杂的CMS服务(一个Drupal或Wordpress项目的参数) - 在我必须开始考虑性能之前,我可以合理地期望容纳多少流量,SQL查询和用户请求?

注:我知道,具体情况将在很大程度上取决于项目,即优化的MySQL查询,内容编制索引的细节,减少文件系统点击 - 假设Web开发人员没有专业的工作 - 我真的找了非常粗糙每天访问数量,访问高峰期间的访问量,MySQL(事务性)之前有多少条记录冒出来,如此等等。

我知道真正回答我的问题的唯一方法是在真实项目上运行负载测试,并且我担心我的问题可能会被视为部分非顶端问题。

我想从第一手体验的人那里得到一组数字,例如“我们运行了这样那样的设置,它至少处理了这么多的负载[问题在这样和那样之后开始出现]”。我对合同(我在atm时间不多)有很大兴趣,我可以通过阅读来更好地理解此事。

P.S.我明天正在和一位客户会面,谈论他的项目,如果他的项目变成了FourSquare,我想要准备好对性能进行推理。

回答

2

非常棘手的答案没有具体细节,因为你已经注意到。如果我的任务是处理你需要做的事情,我会依次采集每个组件(网络接口,CPU /内存,物理IO负载,SMP锁定等),并获得最大可用容量,除以每个请求的粗略估计使用量。

例如,网络io。你可能有1个1Gb卡,可能达到100Mbytes/sec。 (我倾向于使用理论最大值的80%)。典型的“打击”会有多大?对于HTML,图像等,平均可达3kbytes,这意味着在物理层面瓶颈之前,您可以达到每秒33k个请求。这些数字是绝对最大值,取决于您可能无法接近的工具和技能,但没有人能超过这些最大值。

对每个组件重复上面的操作,可能稍微改变一下你的号码,然后你就可以快速了解可能是一个问题。然后,考虑如何在每个组件中快速获得更多容量,您是否只需要花费一些钱就可以获得更多性能(例如,使用SSD驱动器而不是HD)?或者,如果不重新构建,您会达到无法移动的限制吗?同时考虑到你有什么资源可用,你是否有很多熟练的程序员时间,数据库管理员或一堆现金?如果您拥有大量资源,当您沿着体验曲线移动时,您可以更轻松,更快地减少这些限制。

不要忘记外部组件,防火墙的持续流量的限制可能会低于预期。

对不起,我不能给你真正的数字,我们的工作量使用自定义服务器,高内存缓存和其他技巧,而不是使用你列出的所有产品。但是,我会把注意力集中在IO/SQL查询和可能的网络IO上,因为这些比CPU /内存更硬,但我相信其他人会有不同的看法。

0

显然,这个问题是这样的,没有一个“正确”的答案,但我想将其关闭,并给一些反馈。客户会议已经发生,表现的确是一个大问题,他们的托管平台竟然是在亚马逊云:)

从研究我独立完成的:

  • 内存缓存是必须的;
  • MySQL(或任何您正在运行的持久性存储实例)通常是第一个要去的地方。解决方案包括运行多个虚拟实例并在它们之间复制数据,分配负载;
  • http://highscalability.com/是一个很好的阅读:)
相关问题