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服务器。您可以直接更新连接数量。
为什么存在max_connection限制?它有什么好处?为什么主机这样做?是不是危险增加max_connection llimit? – Alex
不,它不危险,mysql有默认的限制,你可以随时增加动态如果你想。此操作不会锁定任何内容。但不要增加太多。此线程可能会有所帮助,http://dba.stackexchange.com/questions/23498/what-should-i-set-max-connections-to-for-mysql – Jordon
谢谢你的信息,这很有用,不幸的是,我不能增加它太多了,我想知道ajax长轮询的问题是什么?当我做简单的ajax轮询时,它的工作完美,但当我长时间轮询时,带宽增加非常多,但是这个问题发生了。我该怎么办? – Alex