0

我知道我的问题的标题相当模糊,所以我会尽量澄清。请随时调整这个问题,使其对社区更有用。

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

注意:我知道细节很大程度上取决于项目的细节,即优化 MySQL 查询、索引内容、最小化文件系统命中 - 假设 web 开发人员做了专业的工作 - 我真的在寻找一个非常粗略的访问数字每天,高峰访问时间的流量,(事务)MySQL 之前有多少记录,等等。

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

我想从有第一手经验的人那里得到一组数据,例如“我们运行了这样那样的设置,它至少处理了这么多负载[在这样那样之后问题开始浮出水面]”。我也对我可以做的任何有说服力的(我的时间很短)阅读非常感兴趣,以更好地理解这件事。

PS 我明天要见一位客户讨论他的项目,如果他的项目结果类似于 FourSquare,我想准备好推理性能。

4

2 回答 2

2

正如您所指出的,如果没有具体细节,很难回答。如果我的任务是你必须做的事情,我会依次处理每个组件(网络接口、CPU/内存、物理 IO 负载、SMP 锁定等)并获得最大可用容量,除以每个请求的粗略估计使用量。

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

对每个组件重复上述操作,也许稍微改变你的数字,你将快速了解可能存在的问题。然后,考虑一下如何在每个组件中快速获得更多容量,您是否可以只使用 $$ 并获得更多性能(例如,使用 SSD 驱动器而不是 HD)?或者你会达到一个不重新架构就无法移动的限制吗?还要考虑您有哪些可用资源,您是否有大量熟练的程序员时间、DBA 或大量现金?如果您拥有大量资源,您可以在沿着经验曲线移动时更轻松、更快地减少这些限制。

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

对不起,我不能给你真实的数字,我们的工作负载使用自定义服务器、高内存缓存和其他技巧,而不是使用你列出的所有产品。但是,我将主要关注 IO/SQL 查询和可能的网络 IO,因为这些往往是比 CPU/内存更硬的限制,尽管我相信其他人会有不同的看法。

于 2013-02-26T09:30:00.613 回答
0

显然,这个问题没有“正确”的答案,但我想关闭它并提供一些反馈。客户会议已经举行,性能确实很重要,他们的托管平台竟然在亚马逊云上:)

根据我独立完成的研究:

  • Memcache 是必须的;
  • MySQL(或您正在运行的任何持久存储实例)通常是第一个使用的。解决方案包括运行多个虚拟实例并在它们之间复制数据,分配负载;
  • http://highscalability.com/是一个很好的阅读:)
于 2013-02-28T17:04:08.397 回答