I';我对并发MySQL连接感到困惑

I';我对并发MySQL连接感到困惑,mysql,Mysql,所以,我读了一本Mysql的书,书中说可以访问数据库的并发用户数量是有限制的 这是否意味着如果我的web应用程序中有20k用户同时浏览,我的web应用程序将无法加载数据库中的数据?因为每次加载网站时,我的web应用程序都在访问数据库。对我来说,至少这是不可能的,因为执行/处理时间是以毫秒计的20k用户在完全相同的时间加载一个页面?这相当多——而且您的Web服务器本身可能不会接受那么多并发请求(例如,Apache通常只接受200到400个并行请求) 连接限制是可以同时连接到数据库的最大用户数——如

所以,我读了一本Mysql的书,书中说可以访问数据库的并发用户数量是有限制的


这是否意味着如果我的web应用程序中有20k用户同时浏览,我的web应用程序将无法加载数据库中的数据?因为每次加载网站时,我的web应用程序都在访问数据库。

对我来说,至少这是不可能的,因为执行/处理时间是以毫秒计的

20k用户在完全相同的时间加载一个页面?这相当多——而且您的Web服务器本身可能不会接受那么多并发请求(例如,Apache通常只接受200到400个并行请求)

连接限制是可以同时连接到数据库的最大用户数——如果生成每个页面需要100毫秒,则一个用户的连接时间将仅少于100毫秒。
如果在需要执行第一次SQL查询时连接到数据库,并在上一次SQL查询后立即断开连接,则可以缩短Web服务器连接到数据库的时间

如果你有用户从你的网站上阅读内容,你可以认为他们会:

  • 加载页面(在服务器上可能为100毫秒)
  • 只需阅读几分钟(这绝对不占用服务器上的任何资源)


作为旁注:在获得20k个并发连接之前(这意味着每秒大约20000个连接!)有相当长的一段时间,您可能需要处理几个与扩展相关的问题…

在阅读我发现的这段代码后

20000个并发用户是20000个并发数据库查询。。。使用者 在你的网站上阅读帖子,应该 不计入并发用户 号码。。。他已登录到您的 网站,但他不需要任何东西 从数据库中。。。现在,如果他点击 在链接中,数据库将执行 然后,该用户应该是 计入并发用户数 号码。。。仅当20000用户单击 在你的网站上的某个地方 您将有20000个并发的时间 使用者


如果在尝试连接到mysqld服务器时出现
连接太多
错误,这意味着所有可用的连接都被其他客户端使用

允许的连接数由
max\u connections
系统变量控制。其默认值为100。如果需要支持更多连接,则应为此变量设置更大的值


您应该要求系统管理员仅在必要时进行这些更改

数据库是非常好的瓶颈候选数据库。如果您的服务器上有如此大的流量,您应该关注降低到数据库的连接数。页面和数据缓存在这件事上可以创造奇迹——在我的例子中确实如此……

假设您有一个标准的web应用程序体系结构,后面有一个数据库,web服务器从数据库获取数据,那么web服务器的每个实例通常都是一个数据库用户

从应用程序的角度来看,每个远程用户都是用户,但从数据库的角度来看,应用程序是单个用户

从web服务器的角度来看,重要的性能数字是每秒要求它执行的操作数。例如,如果您有一个博客网站,用户通常会在点击之间阅读一分钟,那么10000个活动用户可能会生成每秒10000/60=166个请求的请求速率,这通常在Apache的功能范围内。(您必须从Web服务器的角度考虑应用程序的性能组合:CPU时间、网络带宽、磁盘带宽、内存消耗、……以获得更完整和准确的Web应用程序在单个Web服务器上可伸缩的图片。)
如果您有足够的负载,因此需要多个web服务器,例如前面有一个负载平衡器,那么每个web服务器都将是一个数据库用户。如果您已经扩展到需要10000台web服务器来服务您的客户群的程度,那么您通常不得不求助于其他技术来解决其他数据库性能扩展问题。

据我所知,Linux和Solaris只能同时处理10K连接。您需要研究平衡服务器,可能最终会使用HAProxy在数据库之间进行平衡。即使您的mysql可以同时连接20k,它也无法处理所有查询。我同意您的看法,但我只是回答了这个问题,也许有时候它会帮助更有经验的人。@Pentium10:hehe;-)好的。我想知道像雅虎或谷歌这样的大型网站是如何处理并发连接的。只是为了学术目的。这完全取决于数据库查询是否需要时间。有些网站设计得很糟糕,每次点击都会产生一个(或多个)数据库查询,而且查询速度很慢。在这样的站点上,您可以很容易地到达这样一个点:数据库上的并发请求几乎与并发用户的数量相同。这与应用程序执行的查询有关吗?i、 e假设我的主机最多支持25个并发连接,我只有一个用户,但应用程序执行大约75个MySQL查询。由于MySQL附带许多预配置的ini文件,要确定您正在使用的ini文件以及需要更改的ini文件(在windows中),请右键单击MySQL服务并选择“属性”。path属性将告诉您正在使用哪个ini文件。