MySQL 连接数过多

MySQL 连接数过多

我的服务器上有 7 个数据库。我们的服务器有 512 MB 的 RAM,我今晚要将其升级到 2GB,并且有一个 2.4 单处理器。

我收到一条关于超出连接限制的错误。随着 RAM 的增加,可以增加连接数吗?目前设置为 200,但考虑到 JOIN 等因素,单个页面可能会连接到 3-4 个数据库。

我们设置了这么多数据库只是为了组织。所有数据库中总共有大约 250-300 个表。

任何意见,将不胜感激 :)

更新

事实证明,我拥有的人脉比我想象的要多得多……

使用 2GB RAM 和 2.4 单核,50 个用户连接是否准确,还是我应该增加这个数字?

[mysqld]
safe-show-database

skip-locking
safe-show-database

interactive_timeout=30
wait_timeout=30
connect_timeout=10
max_user_connections=50
max_connections=1000

key_buffer=64M
join_buffer=2M
record_buffer=2M
sort_buffer=4M
max_allowed_packet=24M

query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1

tmp_table_size=128M
table_cache=2048
thread_cache=256
thread_concurrency=1

答案1

您应该能够大幅增加连接数。但是,如果您没有正确调整每个线程的内存使用量,则 MySQL 可能会出现内存不足的情况。MySQL 内存不足可能是一个灾难性的情况,最好避免。

当您没有正确调整时会发生以下情况:

MySQL 因内存不足不断重启

我之前提供的一些调整建议:

如何在 Mysql 中设置 my.cnf 以使其不受连接限制?

链接至InnoDB内存使用情况包括一个计算 InnoDB 内存使用量的公式,您可以将其插入电子表格中来计算每个线程的内存使用量。

以下是有关以下内容的更多信息MySQL 服务器内存使用情况

最终,您的目标应该是根据您的配置计算每个线程的最大内存使用量。计算完成后,您可以将最大连接数设置为适当的值。

答案2

在 1gb 的机器上,我们经常将 max_connections 设置为 750,不会出现问题

答案3

如果您使用 PHP,则编辑 php 配置文件(通常在 /etc/php.ini 中)并将持久性更改为 OFF。

[MySQL] ; 允许或阻止持久链接。mysql.allow_persistent = Off

就这样。重新启动 Apache。

相关内容