无法更改mysql连接限制

时间:2012-11-20 17:54:40

标签: mysql connection limit

我在Linux机器上运行只有8核和16GB内存的mysql。所有连接都来自运行php with codeigniter的同一网络中另一台机器上的Web服务器。

我无法在mysql上获得超过150个连接。

我的my.cnf是:

[mysqld]
user=mysql
port            = 3306
socket          = /tmp/mysql.sock
datadir = /usr/local/mysql/var/
skip-external-locking
max_connections=500
max_user_connections=500
open-files-limit = 500
key_buffer_size = 2048M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 128M
thread_cache_size = 250
table_definition_cache = 1024

query_cache_size = 32M
query_cache_limit = 32M
table_cache=1024
max_heap_table_size=1024M
key_buffer=2048M
wait_timeout=60
thread_concurrency = 16
long_query_time = 1
tmp_table_size=256M

show status返回max_connections和max_user_connections为500。

由于mysql说连接限制是500,我认为PHP,apache或codeigniter中还有其他设置限制了对mysql的请求,但我找不到任何设置。我搜索谷歌几天试图找到答案没有任何运气。

是否对上述任何软件设置了限制?如有必要,我会发布配置文件。

谢谢。

2 个答案:

答案 0 :(得分:0)

检查httpd.conf中的最大Apache工作进程数(ServerLimit和MaxClients)。假设每个工作者有一个固定数量的连接,那么你可能会最大化你的工作者数量,所以没有任何东西要求新的MySQL连接。

答案 1 :(得分:0)

抱歉,您刚在Google上找到此邮件,但您的配置是foobar

max_connections=500
open-files-limit = 500
table_open_cache = 512
table_definition_cache = 1024

open-files-limit:500#;不好!<​​/ p>

table_open_cache:512 ... * 2+每个表打开文件= 1024个最小打开文件

max_connections:500个每个打开的连接启动一个新的文件句柄来缓冲。

你的mysql只会启动130个表(核心表),只剩下240个文件句柄,可以在数据查询和连接之间共享。对于具有表查询的每个连接,消耗3个以上的文件句柄(连接,数据表,索引文件)。在获得150个连接之前,这会使您的打开文件最多。对于那种数据库使用情况,open-files-limit需要启动&gt; 2048。

更多帮助:

show global status like '%open%';
show global status like '%onnect%';

自己查看实际使用的文件/连接数。某些操作系统(Windows XP)硬限制文件/网络连接。尝试谷歌搜索“mysql'YOUR-OS'150个连接”,看看这是否是限制因素。