Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点和MySQL—解决一个“问题”;“连接太多”;问题_Javascript_Mysql_Node.js_Express_Node Orm2 - Fatal编程技术网

Javascript 节点和MySQL—解决一个“问题”;“连接太多”;问题

Javascript 节点和MySQL—解决一个“问题”;“连接太多”;问题,javascript,mysql,node.js,express,node-orm2,Javascript,Mysql,Node.js,Express,Node Orm2,我有一个应用程序运行在Node.js和Express上,使用的是MySQL数据库。我使用的驱动程序是。我们的用户不断报告一个“连接太多”错误,我已经诊断出了这个问题,但我不知道如何修复它 基本上,每次新用户访问站点时,驱动程序都会为他们创建一个新的线程/进程。我可以在数据库上执行showprocesslist查询,它将在那里显示时间为0 如果用户执行另一个需要数据库的操作,则重复使用该同一线程,时间返回到0。但是,如果没有,则线程将保持活动状态(使用Sleep的命令),并且时间将停止。db的最大

我有一个应用程序运行在Node.jsExpress上,使用的是MySQL数据库。我使用的驱动程序是。我们的用户不断报告一个“连接太多”错误,我已经诊断出了这个问题,但我不知道如何修复它

基本上,每次新用户访问站点时,驱动程序都会为他们创建一个新的线程/进程。我可以在数据库上执行
showprocesslist
查询,它将在那里显示
时间
0

如果用户执行另一个需要数据库的操作,则重复使用该同一线程
时间
返回到
0
。但是,如果没有,则线程将保持活动状态(使用
Sleep
命令
),并且
时间将停止。db的最大连接限制为
250
,超时为
7200

因此,基本上,如果超过250人在2小时内使用该网站,我们会看到“连接太多”错误

我尝试使用连接池,但这使问题变得更糟。每次新用户使用数据库时,它都会创建10个线程,当达到7200秒超时时,线程会重新启动

我在这里有什么选择?

我当前的方法是每半小时运行一次计划作业,以关闭已打开太长时间的线程,但有更好的方法吗

我正在使用以下设置:

db.settings.set("properties.association_key", "{name}Id");
db.settings.set("instance.autoFetch", true);
db.settings.set("instance.returnAllErrors", true);
db.settings.set("instance.cache", false);

连接池可能值得重新访问。连接池的一个卖点是,您可以将它们配置为在一定时间后回收空闲或卡住的连接。因此,即使应用程序泄漏连接,数据库也会受到保护

我知道这并不能解决线程的根本问题,但在任何情况下回收连接都可能是明智的