0

如果我有一个页面,其内容是从 MySQL 数据库生成的(显示单元格内容的简单查询,HTML 内容),有多少用户可以一次访问该页面而不会导致数据库崩溃?

我必须在多个域中显示相同的数据,因此我不会在三个域上复制页面,而是将其加载到 mysql 中并使用此路由显示它。但是,我想知道在不使数据库崩溃的情况下我可以处理多少并发连接。

谁能指出我正确的方向来找出这个问题?我假设这个小查询不应该是一个巨大的负载,但如果 10,000 名访问者同时点击它,那会怎样?

4

2 回答 2

0

您需要检查您的 max_connections 设置,您可以通过查看以下链接获取更多信息:http ://www.electrictoolbox.com/update-max-connections-mysql/

你在使用任何框架吗?如果是这样,大多数都内置了缓存,这应该可以解决问题,假设信息没有随时更新。即使是这样,也请尝试缓存您认为不会经常更改的页面的任何部分。

于 2012-04-11T15:59:23.630 回答
0

有多少用户可以一次访问该页面而不会导致数据库崩溃?

他们全部。

这是一个糟糕的问题。

数据库不应该因为用户正在尝试连接而崩溃。有多少 php 客户端可以打开与数据库的并发连接有很多限制。实际上,您应该正确配置 DBMS,以便它可以优雅地处理这种情况 - 即 max_connections 应该限制客户端的数量 - 而不是 DBMS 可用的内存量。

如果您的意思是可以支持多少个并发连接而不会拒绝/排队连接,那是非常不同的。这几乎是一个明智的问题。

在这种情况下,这将取决于您拥有的内存量、您如何配置 DBMS、CPU 的速度、内容的大小、内容项的数量、PHP 如何连接到DBMS,PHP离DBMS有多远……

在您在 DBMS 上点击它们之前,您更有可能在网络服务器上遇到连接限制 - 但确定这些限制的方法对于两者来说是相同的 - 生成受控数量的连接并测量它使用的内存 - 重复对于不同的数字,获取大量数据。绘制图表,查看线与资源限制相交的位置。

所以我不会在三个域上复制页面,而是将其加载到 mysql 中

域的数量几乎无关紧要 - 除非您正在寻找一种避免 ESI 的方法。

但如果有 10,000 名访客

真的吗?在一个典型的站点上,这可能意味着一百万个并发 HTTP 会话。

于 2012-04-11T17:01:16.663 回答