如何在mysql中量化“同时客户端连接”

时间:2011-07-28 00:12:46

标签: mysql

对于newb因素感到抱歉,但我正在阅读有关mysql的“Too many connections”。

http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

如何在mysql中量化“并发客户端连接”?

例如,如果有2千万人使用gmail(假设他们只使用mysql,只有1个表来存储所有内容),并且所有这些人同时都点击了一封电子邮件打开,这是否意味着有由于所有用户都连接到同一个桌面,因此有2000万个同时连接或只有一个连接?

编辑:我试图理解“客户”这个词的含义。是“客户”是使用该应用程序的人,还是“客户端”是连接到数据库的应用程序(例如php脚本)的一部分?

2 个答案:

答案 0 :(得分:1)

当访问者访问您的网站并且服务器端脚本连接到数据库时,它是1个连接 - 您可以在连接到任意数量的表/数据库期间根据需要进行尽可能多的查询 - 并且在脚本终止时连接结束。如果31个人请求一个页面(因此是一个数据库连接)并且你的限制是30,那么第31个人将会收到错误。

您可以升级服务器硬件,以便MySQL可以有效地处理大量连接或将负载分散到多个数据库服务器上。您的服务器端脚本环境可以与MySQL保持持久连接,在这种情况下,所有脚本都通过该单一连接进行查询。这可能会对正确排队查询及其在高负载下维持可用速度的顺序产生负面影响,并最终无法通过处理大量查询来解决CPU /内存/磁盘瓶颈问题。

对于webmail应用程序,检查新消息的查询运行得如此之快(以毫秒为单位),除非是大规模的,否则不太可能达到服务器限制。

谷歌的应用程序规模达到了前所未有的水平。查看docs on MapReduce, GoogleFS, etc。太棒了。

回答您的编辑 - 在这种情况下,任何直接连接到MySQL的内容都被视为客户端。连接到MySQL的每个PHP脚本都是客户端,命令行上的MySQL控制台也是如此。

希望有所帮助

答案 1 :(得分:0)

提到的连接是服务器连接。每个客户都有一个或多个。例如,如果你的php脚本连接了mysql,那么一次可能会有更多的web请求,因此有更多的连接到db。

有时你可能会用完它们,因为它们在没用之后就没有正常关闭。

我认为Gmail的存储方式与一个大型mysql数据库存储方式不同:]