2012-11-20 45 views
1

我在linux上运行的只有8核和16GB RAM的mysql。所有连接都来自运行php和codeigniter的同一网络中另一台计算机上的Web服务器。无法更改mysql连接限制

我无法在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 

显示状态返回MAX_CONNECTIONS与MAX_USER_CONNECTIONS是500

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

上述任何软件是否存在限制?如有必要,我会发布配置。

谢谢。

+0

我以为我只能使用150个客户端,因为我使用的是名为Siege的负载测试软件。但是当我用200个并发连接使用ab时,会发生同样的事情。我只有150个mysql连接。但奇怪的是,其他使用浏览器的客户端可以建立150以外的mysql连接。因此,我对这篇文章的问题可能是“**我如何使用负载测试软件测试超过150个并发连接的Web应用程序负载,比如ab ?**“ – user1839694

回答

0

检查httpd.conf中最大数量的Apache工作进程(ServerLimit和MaxClients)。假设每个工作人员有固定数量的连接,则可能会使您的工作人员数量达到最大,因此没有要求新的MySQL连接。

+0

这里是我的worker.c config httpd.conf ' 将ServerLimit 60个 StartServers的2周 的MaxClients 1500 MinSpareThreads 25个 MaxSpareThreads 75 ThreadsPerChild是25 MaxRequestsPerChild 1000 ' 对不起,不知道该如何答复格式。我不认为我的设置将mysql连接限制为150. – user1839694

+0

@ user1839694如果您只能拥有60个工作进程,请根据您在脚本中创建的数量来确定可能有多少个连接。如果它创建了2或3个连接,那么你最好有150个最大的SQL连接。尝试创建一个循环的单个php页面,并创建连接到数据库200次,而不会关闭任何每个之间500毫秒的睡眠。当你达到2分钟时,检查你的数据库连接mysql连接的数量是否超过150? – Ray

+0

My ThreadsPerChild是25. 60个工人X 25 = 1500,这是MaxClients。我会尝试创建建议的脚本。 – user1839694

0

对不起,刚刚发现这对谷歌,但你的配置是foobar的

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

开放文件限制:500#;不好!

table_open_cache:512 ... * 2 +每桌开放式的文件= 1024开放式文件中使用最少

MAX_CONNECTIONS:500每个打开的连接开始一个新的文件句柄来缓冲。

你的mysql将会打开130个表来启动(核心表),只有240个文件句柄可以在数据查询和连接之间共享。对于具有表查询的每个连接,消耗3个以上的文件句柄(连接,数据表,索引文件)。这可以在您获得150个连接之前使您的打开文件达到最大。对于那种数据库使用,开放文件限制需要开始> 2048。

更多的帮助:

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

看到自己有多少个文件/连接在实际使用。一些操作系统(Windows XP)硬限制文件/网络连接。尝试使用谷歌搜索“mysql”您的操作系统'150连接“,看看这是否是限制因素。

+0

必须清除的下一个障碍是当您设置open-files-limit = 2048并检查打开的文件时,只发现您仍然限制为150,因为mysql忽略了设置 – ppostma1