如果刷新页面,则不会关闭mySql连接

如果刷新页面,则不会关闭mySql连接,mysql,web,Mysql,Web,如果我的网页在加载完成之前被反复刷新,那么MySQL连接不会关闭,最终当它超过150个进程时,它会抛出“太多连接错误” 我没有使用持久连接,脚本末尾有一个mysql\u close(),尽管我意识到我不需要它,因为它会关闭 我怎样才能阻止这种事情发生?我以前从未在使用过的任何服务器上体验过这种情况 为了稳定我的站点,我创建了一个PHP脚本,每分钟都会杀死超过120秒的旧进程。这是有帮助的,但当我向我的站点发送更多流量时就没有了。一旦获得数据,连接应该关闭。任何网页都是无状态的,因此它不需要与数据

如果我的网页在加载完成之前被反复刷新,那么MySQL连接不会关闭,最终当它超过150个进程时,它会抛出“太多连接错误”

我没有使用持久连接,脚本末尾有一个
mysql\u close()
,尽管我意识到我不需要它,因为它会关闭

我怎样才能阻止这种事情发生?我以前从未在使用过的任何服务器上体验过这种情况


为了稳定我的站点,我创建了一个PHP脚本,每分钟都会杀死超过120秒的旧进程。这是有帮助的,但当我向我的站点发送更多流量时就没有了。

一旦获得数据,连接应该关闭。任何网页都是无状态的,因此它不需要与数据库的固定连接,就在发生自动回发时,打开连接并再次关闭。将数据存储在datatable容器中,然后对其进行处理。您使用什么语言开发网页?

看起来数据库无法及时处理所有请求

当用户访问您的网站时,您的脚本将建立到数据库服务器的连接,执行查询,获取并显示结果,关闭到数据库服务器的连接

如果进入的查询太多,或者查询的执行时间太长,队列会不断增长,直到服务器崩溃

你说你杀死了旧进程-那些不是旧的,它们只是还没有完成,请求的Web服务器进程可能已经超时了

你可以做的事情:

  • 优化数据库结构
  • 优化您的查询
  • 扩展您的硬件(向上扩展,或者最好向外扩展)
  • 使用缓存
  • 优化服务器设置
最简单、耗时较少但非常有效的改进可能是输出缓存

您只需保护热站点的html输出,并直接交付它,直到缓存过期并刷新缓存

Nginx可以为您做到这一点


如果您提供有关网站架构/和正在使用的软件堆栈的更多信息,我可以为您提供更详细的帮助。

我刚刚将所有代码上载到另一台服务器,问题不存在。因此,我现在想知道是MySQL有问题还是设置不正确我刚刚注意到codeigniter数据库类中使用的MySQL_connect()有一个true作为新的_link参数。我删除了这个,现在一切都好了:)谢谢你的回复和一些很好的建议。我刚刚将我所有的代码上传到另一台服务器,问题并不存在。因此,我现在想知道我是否有一个错误的MySQL或一个设置是不正确的,它不太可能是一个错误的服务器。您上面描述的行为在未优化环境中的“高”流量情况下并不罕见。可能会改进服务器设置,如innodb缓冲区大小、空闲会话超时、最大连接数等。此值和其他优化在很大程度上取决于您的硬件、通信量、软件堆栈、使用的编程语言、使用的框架、当前配置、实际通信量、,数据库大小等。有太多的变量需要进一步的建议。我真的建议将nginx视为反向代理。简单快速。