MySQL并发连接 - 从数据库加载文本

时间:2012-04-11 15:32:02

标签: php mysql concurrency

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

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

有人能指出我找到正确的方向吗?我假设这个小问题不应该是一个巨大的负载,但如果有10,000个访问者同时点击它,那么呢?

2 个答案:

答案 0 :(得分:0)

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

您使用的是任何框架吗?如果是这样的话,大多数都会在其中构建缓存,这应该可以解决问题,假设信息不是在不时更新的基础上。即使它是,尝试缓存您认为不会经常改变的页面的任何部分。

答案 1 :(得分:0)

  

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

所有这些。

这是一个糟糕的问题。

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

如果您的意思是在没有连接被拒绝/排队的情况下可以支持多少并发连接,那就非常不同了。这几乎是一个明智的问题。

在这种情况下,它将取决于您获得的内存量,您如何配置DBMS,CPU的速度,内容的大小,有多少内容项,PHP如何连接到DBMS,PHP与DBMS的距离......

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

  

所以我不打算在三个域上复制页面,而是将它加载到mysql

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

  

但如果有10,000名访客

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