我一直在研究这个问题,但没有得到令人信服的答案。
从mysql教程中,默认连接数小于200,并且只要你有足够的资源,就可以在Linux框中将max_connection_num设置为2000。我认为这个数字在现实世界部署中远远不够,因为可能有数百万人同时访问您的网站。
有几篇文章讨论如何优化以减少每个查询的时间成本。但他们都没有告诉我这个问题是由root引起的。我认为必须有一些机制,如队列,以防止大规模连接同时发生。否则你最终会得到“太连接”的例外。
任何人都有这方面的专业知识吗?谢谢。
答案 0 :(得分:2)
有几种选择。
答案 1 :(得分:0)
通常,您的应用程序应该重用已建立的连接。但是,您选择实现应用程序的语言会带来一些限制。如果您使用Java或.Net,则可以拥有连接池。对于PHP情况并非如此,您可以查看this discussion
答案 2 :(得分:0)
如果超过max_connection_num,则会出现太多连接错误。但是,如果您的Web服务器上确实有100万用户同时使用,那么无论如何都无法处理一台服务器,100万并发连接确实需要一个非常大的服务器场来处理。
但是,数据库的客户端是一个webapp,webapp通常通过称为connection pool的抽象连接到数据库,这会限制客户端数据库的连接数量,只要所有数据库连接通过同一个池。