我的服务器上有 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 中设置 my.cnf 以使其不受连接限制?
链接至InnoDB内存使用情况包括一个计算 InnoDB 内存使用量的公式,您可以将其插入电子表格中来计算每个线程的内存使用量。
以下是有关以下内容的更多信息MySQL 服务器内存使用情况。
最终,您的目标应该是根据您的配置计算每个线程的最大内存使用量。计算完成后,您可以将最大连接数设置为适当的值。
答案2
在 1gb 的机器上,我们经常将 max_connections 设置为 750,不会出现问题
答案3
如果您使用 PHP,则编辑 php 配置文件(通常在 /etc/php.ini 中)并将持久性更改为 OFF。
[MySQL] ; 允许或阻止持久链接。mysql.allow_persistent = Off
就这样。重新启动 Apache。