【问题标题】:What max_connection should I set for MySQL?我应该为 MySQL 设置什么 max_connection?
【发布时间】:2012-08-31 11:26:27
【问题描述】:

我在 Linux Centos 上使用 MySQL 5.1.35 数据库。

Linux 服务器具有 2GB RAM 和 14GB 磁盘空间

我使用 Java 中的 Restlet 框架创建了 Web 服务,该框架具有 个用户访问权限。

我想将 max_connection 设置为最大并发连接数。

那么请建议我应该设置什么max_connection

提前致谢。

【问题讨论】:

  • 如果您没有遇到任何问题,为什么还要设置它?

标签: mysql connection


【解决方案1】:

您需要计算 MySQL 引擎所需的内存。见手册here

如果您使用的是 MISAM 表,那么您可以使用以下公式计算内存需求:

key_buffer_size + (read_buffer_size + sort_buffer_size) * max_connections = K bytes of memory 

理想情况下,这不应超过 2 GB。

配置参数取决于您的应用程序和查询的类型,但您的标准值可能是:

key_buffer_size = 1024MB + (read_buffer_size = 1MB + sort_buffer_size = 4MB) * 200 ~= 2GB

key_buffer_size 是全局变量,而read_buffer_size and sort_buffer_size 是会话级参数。

【讨论】:

  • 感谢 Omesh 的好建议。我计算了变量 - key_buffer_size : 402653184 bytes read_buffer_size : 65536 bytes sort_buffer_size : 262144 bytes max_connections : 500 我得到了 553216 KB 的值,那么 max_connection 对我有什么好处呢?
  • 5GB 在正常负载下是可以的,但如果你得到的所有数据库请求等于最大连接数,那么 MySQL 可能会崩溃,所以尝试将这些变量设置为 2GB 以下。将 read_buffer_sizesort_buffer_size 的大小减少到 1MB 和 4MB 可能有助于提高性能。试试吧。
  • 嗨 Omesh 我会试试这个。但它是 5GB 还是 540 MB?我有点困惑。
【解决方案2】:

这取决于您拥有的内存量以及其他设置的配置方式。您可以使用MySQL Calculator

【讨论】:

    【解决方案3】:

    您需要提供如下信息:

    1. 有多少用户在使用该应用程序?
    2. 有多少应用程序连接到数据库?
    3. 负载是多少以及如何给出查询?

    服务器配置:

    1. 最好为 Apache/PHP 和 MySQL 配备 2 个单独的服务器,并使用您选择的 Linux。
    2. 尽量不要在任何一个盒子上跑太多;将资源留给 Apache/PHP 和 MySQL。

    您可以通过Tuning MySQL获取更多信息。

    【讨论】:

    • 您好 Praveenthanx 快速回复,可能有 100000 lac 并发用户,我创建了 16 个 web 服务都访问数据库。
    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2019-07-31
    • 2013-10-27
    相关资源
    最近更新 更多