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

时间:2013-01-08 23:19:30

标签: mysql web

如果我的网页在加载完成之前反复刷新,那么MySQL连接就不会被关闭,并且当超过150个进程时,它会抛出“Too many connections error”。

我没有使用持久连接,并且我在脚本末尾有一个mysql_close(),即使我意识到我不需要它,因为它会关闭。

如何阻止这种情况发生?我以前从未经历过任何以前使用过的服务器。

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

2 个答案:

答案 0 :(得分:2)

这看起来像数据库根本无法及时处理所有请求。

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

如果有太多查询进入或查询执行时间过长,则队列会增长并增长直到服务器爆炸。

你说你杀了旧进程 - 那些不老,它们还没有完成,请求的webserver进程可能已经超时了

你可以做的事情:

  • 优化您的数据库结构
  • 优化您的查询
  • 扩展您的硬件(向上扩展,或者最好是向外扩展)
  • 使用缓存
  • 优化您的服务器设置

最简单且耗时较少但非常有效的改进可能是输出缓存。

您只需保护热门网站的html输出并直接发送,直到缓存过期并刷新缓存。

Nginx可以为你做到这一点。

http://dangerousprototypes.com/docs/NGINX_reverse_proxy_in_front_of_Apache:_hardened,_high_performance_dedicated_server_setup

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

答案 1 :(得分:0)

获取数据后应关闭连接。任何网页都是无状态的,因此它不需要与数据库的持续连接,只是在发生自动后备时,然后打开连接并再次关闭它。将数据存储在可数据表容器中,然后进行处理。你在用什么语言开发网页?

相关问题