一个社交网站必须提供多少千名注册用户的服务器容量?

一个社交网站必须提供多少千名注册用户的服务器容量?

我参与了一个社交网站的全球发布。我们必须规划多少服务器容量?每千名注册用户的平均比率是多少?使用的假设是什么?注意:该网站基于 MVC PHP/MySQL,Yii 框架

编辑:我正在寻找拥有数万/数十万注册用户的社交网站的真实示例/行业标准。假设代码写得“很好”,MySQL 是非规范化的,并且 SQL 查询保持在最低限度。

答案1

编写代码时,除了网站本身和数据库之外,内容不依赖于磁盘上的文件。
编写代码时,尽可能使内容保持静态,并可以通过 URL 确定。
编写代码时,使其读取和写入的数据库不是硬编码的(由函数返回),也不一定是同一个数据库。
编写代码时,使其使用 MySQL 的自动增量键,而不是代码生成的键。
在编写代码之前,请考虑所有这些。

如果您完成了上述所有操作,请在一台服务器上运行它。然后,如果负载过重,您可以将数据库移至另一台服务器。仍然很重?将数据库复制到另一台服务器上。然后为您的 Web 服务器添加负载均衡器。看看如果您编写的代码很好,之后您可以如何扩展?

大致而言,您需要的服务器数量取决于您的编码能力以及网站可以缓存多少内容。如果网站真的很大,您最终可能会得到:用户->Internet->防火墙(带故障转移)->Varnish 服务器->带故障转移的负载均衡器(可能是 Squid)->具有重复内容的服务器与复制的数据库进行通信。

答案2

通用答案:

  • 全球发布听起来有点夸张。一台服务器就够了。
  • 进行一些服务器压力测试(ab/jmeter)来查看您的网站每秒处理多少个请求。
  • 请求数/秒 * 24 * 60 * 60 秒 / 250 (?) = 用户数
  • xdebug 和 kcachegrind
  • 非规范化数据库

答案3

取决于您需要多大的弹性……什么程度的停机时间是可以接受的?至少,我建议至少使用 MySQL 复制来提供故障转移的两个 Web 服务器和两个数据库服务器……尽管它们可以是相同的两台物理机器。如果您使用的是 memcache,则需要另一台服务器。

评估您的基础设施是否存在任何单点故障,并评估风险或将其作为 SPOF 消除。

然后(正如马里奥所说)进行压力测试,看看在不同级别的请求/秒下获得的响应时间。使用只读和读/写请求进行测试。

监控网络服务器和数据库服务器。

相关内容