gpt4 book ai didi

php - MySQL 错误 "Too many connections"

转载 作者:IT老高 更新时间:2023-10-28 23:50:29 24 4
gpt4 key购买 nike

我在 GoDaddy (linux) 托管的网站上使用 MySQL 5.0。

我正在对我的网络应用程序进行一些测试,突然我发现页面刷新非常缓慢。最后,经过漫长的等待,我到达了一个页面,上面写着“MySQL 错误,连接太多...”,它指向我连接到数据库的 config.php 文件。

只有我连接到数据库,没有其他用户。在我的每个页面上,我在顶部包含 config.php 文件,并在页面末尾关闭 mysql 连接。中间可能有几个查询。我担心我没有充分关闭 mysql 连接 (mysql_close())。

但是,当我在运行查询后尝试关闭它们时,我在页面上收到连接错误。我的页面是 PHP 和 HTML。当我尝试关闭一个查询时,下一个查询似乎无法连接。我是否必须在关闭后再次包含 config.php 才能连接?

这个错误吓坏了我,因为在 2 周内,大约有 84 人开始使用这个网络应用程序。

谢谢。

编辑:

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

 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 个。虽然我今天的问题发生在只有我访问该站点时,但他们说他们早些时候遇到了一些服务器问题。但是,考虑到我的 Web 应用程序将如何拥有 84 个用户,我可能应该升级到“豪华版”,它一次允许 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_pconnect 中使用 mysql_connect (你已经可以了)
  • 将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服务器的连接数,而是连接总数 可以打开到该服务器,任何连接到它的人

Too many connections 上引用 MySQL 的文档:

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 询问他们之前,如果有人可以验证我刚才所说的话,那就太好了^^

关于php - MySQL 错误 "Too many connections",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com