如果我的网页在完成加载之前反复刷新,那么 MySQL 连接不会关闭,最终当它超过 150 个进程时会抛出“连接过多错误”。
我没有使用持久连接,并且我mysql_close()
在脚本末尾有一个,即使我意识到我不需要一个,因为它会关闭。
我怎样才能阻止这种情况发生?我以前从未在我使用过的任何服务器上经历过这种情况。
为了稳定我的网站,我创建了一个 PHP 脚本,每分钟都会杀死超过 120 秒的旧进程。这很有帮助,但当我向我的网站发送更多流量时就没有用了。
这看起来像数据库根本无法及时处理所有请求。
当用户访问您的网站时,您的脚本会建立与数据库服务器的连接,执行查询,获取、显示结果,关闭与数据库服务器的连接。
如果进入的查询太多或查询的执行时间过长,则队列会不断增长,直到服务器爆炸。
你说你杀死了旧的进程——那些不是旧的,它们只是还没有完成,请求的网络服务器进程可能已经超时了
你可以做的事情:
最简单且耗时较少但非常有效的改进可能是输出缓存。
您只需保护热门站点的 html 输出并直接传递它,直到缓存过期并刷新缓存。
Nginx 可以为您做到这一点。
如果您提供有关您的网站架构/和您正在使用的软件堆栈的更多信息,我可以为您提供更详细的帮助。
获取数据后应关闭连接。任何网页都是无状态的,因此它不需要与数据库的持续连接,只需在发生自动回发时打开连接并再次关闭它。将数据存储在数据表容器中,然后对其进行处理。你用什么语言开发网页?