php – MySQL错误“连接太多”

我正在使用MySQL 5.0作为由GoDaddy(linux)托管的网站。

我在我的网络应用程序上进行了一些测试,突然间我注意到这些页面真的很清爽。最后,经过漫长的等待,我得到了一个页面,说明了“MySQL错误,连接数太多…”的一些内容,它指向了连接到数据库的config.php文件。

它刚刚连接到数据库,没有其他用户。在我的每个页面上,我将config.php文件放在顶部,并关闭页面末尾的mysql连接。之间可能有几个查询。我担心我没有足够关闭mysql连接(mysql_close())。

但是,当我在运行查询后尝试关闭它,我在页面上收到连接错误。我的网页是PHP和HTML。当我尝试关闭一个查询,似乎下一个不会连接。为了连接,我需要在关闭后再次添加config.php?

这个错误让我感到害怕,因为在2周内,大约有84人开始使用这个Web应用程序。

谢谢。

编辑:

这是我的页面的一些伪代码:

 require_once('../scripts/config.php');

 <?php
    mysql_query..

    if(this button is pressed){
       mysql_query...
    }
    if(this button is pressed){
       mysql_query...
    }
    if(this button is pressed){
       mysql_query...
    }
 ?>
 some html..
 ..
 ..
 ..
 ..
 <?php
   another mysql_query...
 ?>
 some more html..
 ..
 ..
 <?php mysql_close(); ?>

我认为这样,每次页面打开时,连接打开,然后连接在页面加载完成时关闭。然后,当有人点击页面上的按钮时,连接再次打开,依此类推…

编辑:

好的,所以我刚刚和GoDaddy下了电话。显然,随着我的经济套餐,我一次限制在50个连接。虽然今天的问题只发生在我访问该网站,他们说,他们早些时候有一些服务器问题。不过,看到如何为我的网络应用程序拥有84个用户,我应该升级到“Deluxe”,一次允许100个连接。在某一天,一共有大约30位用户访问我的网站,所以我认为100将是一个更安全的赌注。你们同意吗

共享主机提供商通常允许相同用户的相当少量的同时连接。

你的代码是什么?

>打开到MySQL服务器的连接
做它的东西(生成页面)
>关闭页面末尾的连接。

最后一步在页面末尾完成不是强制性的:(引用mysql_close的手册):

Using mysql_close() isn’t usually
necessary, as non-persistent open
links are automatically closed at the
end of the script’s execution.

但是请注意,您可能不应该使用持久连接

两个提示:

>使用mysql_connect insead的mysql_pconnect(已经可以为你)
>将mysql_connect的第四个参数设置为false(对你来说已经可以,因为它是默认值):(引用手册):

If a second call is made to
mysql_connect() with the same
arguments, no new link will be
established, but instead, the link
identifier of the already opened link
will be returned.

The new_link
parameter modifies this behavior and
makes mysql_connect() always open a
new link, even if mysql_connect() was
called before with the same
parameters.

那可能会导致问题呢?

也许您正在尝试并行访问多个页面(例如,在浏览器中使用多个选项卡),这将同时模拟几个用户使用该网站?

如果您有很多用户同时使用该站点,并且mysql_connect和连接关闭之间的代码需要很多时间,这将意味着许多连接正在同时打开…您将达到极限: – (

不过,由于您是应用程序的唯一用户,考虑到您最多可以同时连接200个连接,所以有一些奇怪的事情…

那么,考虑“连接太多”和“max_connections”…

如果我记得正确,max_connections不会限制您可以打开到MySQL服务器的连接数,而是连接到该服务器的任何连接可以通过该服务器打开的总数。

引用MySQL的文档Too many connections

If you get a Too many connections
error when you try to connect to the
mysqld server, this means that all
available connections are in use by
other clients.

The number of connections allowed is
controlled by the max_connections
system variable. Its default value is
100. If you need to support more connections, you should set a larger
value for this variable.

所以实际上,这个问题可能不是来自你,也可能不是你的代码(实际上看起来不错):它可能只是你不是唯一一个想连接MySQL服务器的人(记住,“共享主机”)并且有太多的人同时使用它…

…如果我是对的,那就是解决这个问题,你无法做到这一点:只要服务器上有太多的数据库/用户,并且max_connection设置为200,你将继续遭受痛苦。 。

作为旁注:在回到GoDaddy询问他们之前,如果有人可以验证我刚刚说的话,这将是很好的^^

http://stackoverflow.com/questions/1202322/mysql-error-too-many-connections

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:php – MySQL错误“连接太多”