【问题标题】:max_user_connection error while real time chat实时聊天时出现 max_user_connections 错误
【发布时间】:2016-11-19 11:07:03
【问题描述】:

我通过长轮询创建了实时聊天。它的工作原理如下:

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

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

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

问题是我收到max_user_connection 错误,即使我在每次检查数据库后关闭 mysqli 连接。

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

我该如何解决这个问题? (目前我的主机是 Hostgator 并且计划是共享的)

【问题讨论】:

    标签: database-connection chat comet long-polling server-sent-events


    【解决方案1】:

    登录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不是很危险吗?
    • 不,不危险,mysql有默认限制,你可以随时动态增加。此操作不会锁定任何内容。但不要增加太多。这个线程可能会有所帮助,dba.stackexchange.com/questions/23498/…
    • 谢谢你提供的信息,不幸的是,我不能增加太多,我想知道ajax长轮询有什么问题?当我做简单的ajax轮询时它工作得很好但是带宽增加了当我做长轮询时,带宽确实减少了很多肌肉,但出现了这个问题。我该怎么办?
    • 目前我无法访问我的主机,但我知道我在 8646 之前提到的 max_connection 限制。我认为是持久连接问题。但是在这种情况下应该使用简单轮询还是长轮询?
    • 谢谢,这些真的很有帮助 我知道我需要非常强大的服务器才能做到这一点,我实际上已经做了很多复杂的优化但没有奏效,因为我的服务器不够好跨度>
    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多