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