max_user_connection在实时聊天时发生错误

问题描述:

我使用长轮询创建了实时聊天。它的工作原理如下:max_user_connection在实时聊天时发生错误

首先,用户向服务器发送请求。服务器获取请求并等待新消息。

如果发出新消息,它会将消息推送到用户的浏览器(如果请求关闭,浏览器将重新发送)。如果服务器等待超过3分钟,则请求将被取消,并且新的请求将被发送。

在服务器上,我使用了PHP。在PHP中,我每隔600毫秒检查一次消息数。如果它大于以前的计数,服务器将收到新消息并将其作为响应发送给浏览器。

问题是我得到了max_user_connection错误,即使我在数据库中的每次SQL检查之后关闭mysqli连接。

如果我不关闭mysqli,错误会更频繁地发生。

我该如何解决这个问题? (现在我的主机是HostGator和计划共享)

登录到MySQL服务器并运行此命令,并找出有多少最大连接设置?

mysql>show variables like "max_connections"; 
+-----------------+-------+ 
| Variable_name | Value | 
+-----------------+-------+ 
| max_connections | 100 | 
+-----------------+-------+ 

如果它小于此时请求的连接数,则更新连接数。

mysql>set global max_connections = 200; 

这应该可以解决您的问题。记住max_connections是动态的,你不必停止,或者重新启动mysql服务器。您可以直接更新连接数量。

+1

为什么存在max_connection限制?它有什么好处?为什么主机这样做?是不是危险增加max_connection llimit? – Alex

+0

不,它不危险,mysql有默认的限制,你可以随时增加动态如果你想。此操作不会锁定任何内容。但不要增加太多。此线程可能会有所帮助,http://dba.stackexchange.com/questions/23498/what-should-i-set-max-connections-to-for-mysql – Jordon

+1

谢谢你的信息,这很有用,不幸的是,我不能增加它太多了,我想知道ajax长轮询的问题是什么?当我做简单的ajax轮询时,它的工作完美,但当我长时间轮询时,带宽增加非常多,但是这个问题发生了。我该怎么办? – Alex