【问题标题】:What does max_connections really mean?max_connections 的真正含义是什么?
【发布时间】:2012-01-30 23:01:32
【问题描述】:

我正在尝试为共享主机上所需的 MySQL 和资源设置理想的性能设置。

我的问题是,max_connections 的真正含义是什么?

是向服务器发出的唯一并发请求数吗? 因此,如果有两个用户,1 个打开 1 个选项卡,另一个打开 4 个选项卡......并且同时按下所有选项卡重新加载,是否会与 MySQL DB 建立 5 个连接?因此,如果我们将这种情况撞到:10 个人有 2 个标签,31 个人有一个标签同时按刷新……我们的 max_connections 为 50,每个人都会被锁定吗?

我问的原因是因为我一直看到该站点进入 cpu 节流模式,所以我想为低 max_connections 拍摄以保守内存资源

感谢您的帮助

【问题讨论】:

    标签: mysql drupal


    【解决方案1】:

    是的,每个页面都打开了一个单独的连接。但是,假设您没有做任何数据库密集型操作,连接将是短暂的,一旦页面被提供给客户端,连接就会自行关闭。

    如果您确实超过了最大连接数,任何后续连接尝试都将失败。

    【讨论】:

    • max_connections的值设置有限制吗?例如,如果我将其设置为 200,000 甚至更多会发生什么?
    • 每个连接都使用操作系统和服务器进程中的内存。最终,您将达到您的盒子可以处理的最大连接数的限制。这已经很老了,但是C10K problem 给出了一些关于与单个服务器的大量连接所面临的问题的想法。
    【解决方案2】:

    允许的连接数由 max_connections 系统变量控制。当 MySQL 与 Apache Web 服务器一起使用时,默认值为 151 以提高性能。 (以前,默认值为 100。)如果您需要支持更多的连接,您应该为此变量设置更大的值。

    mysqld 实际上允许 max_connections+1 个客户端进行连接。额外的连接保留给拥有 SUPER 权限的帐户使用。通过将 SUPER 权限授予管理员而不是普通用户(他们不应该需要它),即使连接了最大数量的非特权客户端,管理员也可以连接到服务器并使用 SHOW PROCESSLIST 来诊断问题。请参阅第 12.7.5.30 节,“显示 PROCESSLIST 语法”。

    MySQL 可以支持的最大连接数取决于给定平台上线程库的质量、可用 RAM 量、每个连接使用多少 RAM、每个连接的工作负载以及所需的响应时间. Linux 或 Solaris 通常能够支持 500 到 1000 个同时连接,如果您有许多 GB 的可用 RAM 并且每个连接的工作负载很低或响应时间目标要求不高,那么它应该能够支持多达 10,000 个连接。由于该平台上使用了 Posix 兼容层,Windows 被限制为(打开的表 × 2 + 打开的连接)

    可能需要增加打开文件的限制。另请参阅第 2.5 节,“在 Linux 上安装 MySQL”,了解如何提高操作系统对 MySQL 可以使用的句柄数的限制。

    发件人:MySQL 5.6 Reference Manual:: C.5.2.7 Too many connections

    【讨论】:

      【解决方案3】:

      max_connections 是一个全局变量,可以有一个最小值值为1和一个最大值值为100000。然而,众所周知,设置max_connections到一个疯狂的高值对性能来说并不是太好。一代又一代的系统管理员都遵循这个规则。

      当涉及到性能时,max_connections 值总是受限于服务器规格,如果不使用,不会出现性能问题。

      Please use this for more information.

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 2012-03-30
        • 2011-10-10
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        相关资源
        最近更新 更多