MySQL 错误“连接过多”

2024-06-04

我正在将 MySQL 5.0 用于由 GoDaddy (linux) 托管的网站。

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

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

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

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

Thanks.

EDIT:

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

 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(); ?>

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

EDIT:

好的,我刚刚和 GoDaddy 通了电话。显然,对于我的经济套餐,我一次只能连接 50 个。虽然我今天的问题发生在只有我访问该网站的情况下,但他们说他们之前遇到了一些服务器问题。然而,考虑到我的网络应用程序将拥有 84 个用户,我可能应该升级到“豪华”,它一次允许 100 个连接。在某一天,可能有大约 30 个用户同时访问我的网站,因此我认为 100 个用户会是更安全的选择。你们同意吗?


共享托管提供商通常允许同一用户同时进行少量连接。

你的代码的作用是:

  • 打开与 MySQL 服务器的连接
  • 做它的事情(生成页面)
  • 在页面末尾关闭连接。

最后一步,在页面末尾完成时不是强制的:(引用mysql_close http://php.net/mysql_close的手册):

通常不使用 mysql_close() 必要的,作为非持久开放 链接会自动关闭 脚本执行结束。

但请注意,无论如何您可能不应该使用持久连接......

两个提示:

  • use mysql_connect代替mysql_pconnect (对你来说已经可以了)
  • 将mysql_connect的第四个参数设置为false(对你来说已经没问题了,因为它是默认值):(引用手册):

如果第二次拨打电话 mysql_connect() 与此相同 参数,不会有新的链接 已建立,但链接 已打开链接的标识符 将被退回。

新的_链接 参数修改此行为并且 使 mysql_connect() 总是打开一个 新链接,即使 mysql_connect() 是 之前用同样的方式调用过 参数。


那么什么可能导致问题呢?

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

如果您有许多用户同时使用该网站并且之间的代码mysql_connect并且关闭连接需要很长时间,这意味着同时打开许多连接......并且您将达到限制:-(

尽管如此,由于您是该应用程序的唯一用户,考虑到您最多允许同时连接 200 个,所以会发生一些奇怪的事情......


嗯,想想“太多联系" and "max_connections"...

如果我没记错的话max_connections不限制连接数you可以打开MySQL服务器,但是连接总数可以打开该服务器,由任何连接到它的人.

引用 MySQL 的文档太多联系 http://dev.mysql.com/doc/refman/5.0/en/too-many-connections.html :

如果您收到“连接数过多” 当您尝试连接到时出错 mysqld 服务器,这意味着所有 可用连接正在被使用 其他客户。

允许的连接数为 由 max_connections 控制 系统变量。它的默认值为 100. 如果需要支持更多的连接,应该设置更大的值 该变量的值。

所以,实际上,问题可能不是来自你或你的代码(实际上看起来不错):可能“只是”您不是唯一尝试连接该 MySQL 服务器的人(记住,“共享主机”),而且有太多人同时使用它......

... And 如果我是对的那就是,您无法解决该问题:只要该服务器上有太多数据库/用户,并且该服务器上有太多数据库/用户max_connection设置为200,你将继续受苦......


作为旁注:在返回 GoDaddy 询问他们这个问题之前,如果有人能够验证我刚才所说的话,那就太好了 ^^

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 错误“连接过多” 的相关文章

随机推荐

  • 如何在Codeblocks中调试?

    我刚刚完成了程序编码 但面临一些逻辑错误 我想调试程序 我正在使用Codeblocks 那么我需要做什么才能在程序运行时查看每个变量的状态和值 并逐行浏览程序 我基本上想做你在 Visual Studio 中做的事情 当你逐行浏览时 每个变
  • 在 Ruby 中,如何指定另一个目录中的文件作为输入?

    这可能有一个简单的答案 但我正在开发一个测试套件 它需要位于不同文件夹中的输入文件 我想使用相对路径 如下所示 graph Graph new lib test input txt 但鲁比不喜欢这样 使用这样的相对文件路径的最佳方法是什么
  • 如何将坐标传递给arviz / pymc3函数plot_posterior(类似于xarray.Dataset.sel)

    我正在 pymc3 中进行一些贝叶斯建模 并想使用plot posterior 来自 arviz 包 绘制后验分布 生成的图在水平轴上尴尬地未对齐 我想将其移动到 3 和 3 之间精确绘制 不幸的是 我无法弄清楚应该传递给函数的内容来指定这
  • NS_ENUM 和 NS_OPTIONS 有什么区别?

    我在 Xcode5 中用 clang 预处理了以下代码 typedef NS ENUM NSInteger MyStyle MyStyleDefault MyStyleCustom typedef NS OPTIONS NSInteger
  • 将列添加到新的数据行

    是否可以创建一个新的 DataRow 对象并在运行时向其中添加列 How can I specify column names for this data row object DataRow row new DataRow 不 DataR
  • 在 R 中将时间从数字转换为时间格式

    我从 xls 文件中读取数据 显然 时间格式不正确 如下 举例 0 3840277777777778 0 3847222222222222 0 3854166666666667 确实 他们应该是 09 12 09 13 09 13 我不知道
  • 无法将 intellij 的 scenebuilder 与 jfoenix 一起使用

    我使用 java 9 0 4 创建了一个 javafx 项目 该代码可以编译并运行 我可以使用内部场景构建器 但是当我从 Jfoenix 9 0 1 库导入元素时 我无法再使用 sceneBuilder 我收到此错误 java lang U
  • 每次按下按键时 Vaadin TextField 都会执行操作

    Vaadin 7 中没有KeyListener in TextField仅在EnterKey press 我正在寻找一个包含以下内容的附加组件SuperImmediateTextField https vaadin com director
  • Android C++/C 调试器中的错误,参数值不正确

    我最近在 Android Studio 中调试 C C 应用程序时遇到了一个非常奇怪的问题 我在用Android Studio 3 0 这是我的JNI Call JNIEXPORT jshortArray JNICALL Java net
  • 在 React Native (iOS) 中支持动态类型

    有谁知道如何在 React Native 中实现对动态类型的支持 理想情况下 我们希望监听何时有人更改了系统字体的大小 并执行某种类型的回调 或者更好的是 阻止在某些组件上实现字体缩放 好吧 事实证明你可以申请 allowFontScali
  • 将spark.local.dir设置为不同的驱动器

    我正在尝试在 Windows 10 上设置独立 Spark 我想设置spark local dir to D spark tmp tmp 目前它似乎正在使用C Users
  • 很棒的字体图标没有出现在 Angular 5 中

    我按照说明安装了它 首先我输入了 npm install save font awesome angular font awesome 并且一切都正确安装了 然后我换了 angular cli json包含这样的 css styles st
  • 包含详细信息的列表视图

    我有一个显示客户端列表的Listview 我在Listview中添加了一个onClickListner 以便我可以获得单击客户端的详细信息 ListView l ListView findViewById R id jl l setOnIt
  • 概念 - 查询数据库和页面提供有限的属性

    我正在尝试通过 REST API 访问我的 Notion 中的单个数据库 在 Notion 中查询或列出我的数据库时 我仅收到预期属性的子集 正如您在最后一个屏幕截图中看到的那样 我访问的数据库中有 23 个属性 因此 有 7 个未显示 因
  • 从 URL 生成报告 - SQL Server Reporting Services 2008

    我有 SQL Server Reporting Services 2008 当我打开以下 URL 时 http localhost Reports Pages Report aspx someReport 我正在进入报告屏幕 在其中填写参数
  • yii2 行为 ActiveRecord::EVENT_BEFORE_INSERT 不起作用

    我的模型中的行为函数如下 public function behaviors return timestamp gt class gt yii behaviors TimestampBehavior attributes gt Active
  • 消除滑动切换时的弹跳球效应

    看起来好像有些循环 然后稳定下来 这个人在这个视频中也遇到了类似的问题 http www youtube com watch v KCFeImyBzfE http www youtube com watch v KCFeImyBzfE 另外
  • 控制台项目中的 WPF 窗口?

    我最近启动了一个 C 项目 VS 2008 作为 控制台 项目 我在其中编写了一些库 测试程序等 现在我想添加几个 WPF 窗口 但看起来控制台项目不会让我这样做 我来自 Java 所以这有点奇怪 如何添加 WPF 表单 我将从 主 类中实
  • Flask 和其他 Python 框架中的多个 URL 段

    我正在 Bottle 和 Flask 中构建一个应用程序 看看我更喜欢哪一个 因为 Django 的 包含电池 太多了 我已经阅读了两者的路由文档 它非常清晰易懂 但我正在努力寻找一种处理未知的 可能无限数量的 URL 段的方法 IE ht
  • MySQL 错误“连接过多”

    我正在将 MySQL 5 0 用于由 GoDaddy linux 托管的网站 我正在对我的网络应用程序进行一些测试 突然我注意到页面刷新速度非常慢 最后 经过漫长的等待 我到达了一个页面 上面写着 MySQL 错误 连接太多 它指向我连接到