我对并发MySQL连接感到困惑

时间:2011-03-20 14:04:27

标签: mysql

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

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

6 个答案:

答案 0 :(得分:12)

20k用户在同一时间加载页面?这是非常多的 - 你的网络服务器可能不会接受那么多并发请求本身(例如,Apache通常只接受200到400个并行请求)

连接限制是可以连接到数据库的最大用户数完全相同 - 如果每个页面需要生成100毫秒,则只会连接一个用户不到100毫秒。
如果您在需要进行第一次SQL查询时连接到数据库,并在最后一次SQL查询后立即断开连接,这可以减少Web服务器连接到数据库的时间。

如果您有用户阅读您网站上的内容,您可以考虑:

  • 加载页面(可能是服务器上的100毫秒)
  • 什么都不做,只读几分钟(绝对没有资源在您的服务器上)


作为旁注:在获得20k并发连接之前相当长的时间(这意味着大约每秒约20,000个连接!),你可能不得不处理几个与缩放相关的问题... < / p>

答案 1 :(得分:3)

如果在尝试连接到mysqld服务器时出现Too many connections错误,则表示其他客户端正在使用所有可用连接。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

阅读后我发现了这个片段

  

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

答案 4 :(得分:1)

数据库非常适合瓶颈。如果您的服务器上有如此大的流量,您应该专注于降级到数据库的连接数。页面和数据缓存可以在这件事上做奇迹 - 它确实在我的情况下......

答案 5 :(得分:1)

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

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

从Web服务器的角度来看,重要的性能数字是每秒要求它执行的操作数。例如,如果您有一个博客网站,那么用户通常会在点击之间读取一分钟,那么10,000个活跃用户可能会生成10,000 / 60 = 166个请求/秒的请求率,这通常都在Apache的功能范围内。 (您必须从Web服务器的角度考虑应用程序的性能组合:CPU时间,网络带宽,磁盘带宽,内存消耗等...以获得更完整,更准确的Web应用程序在单个Web服务器。)

如果您有足够的负载,那么您需要多个Web服务器,例如:在前面的负载均衡器,然后每个Web服务器将是一个数据库用户。如果您已经扩展到需要10,000个Web服务器来为您的客户群提供服务,那么您通常不得不求助于其他技术来解决其他数据库性能扩展问题。

相关问题