在R中使用多线程对数据库进行写入,在本地linux环境下,总是出现线程不够用的问题。而在windows环境下,却不会出现。
个人猜想是由于window下的odbc已经限制的最大连接数,所以不会超过数据库的最大连接数,因此在window下多线程运行不会出现问题。
在本地linux下的时候,由于是本地直连,没有限制。程序在阻塞的时候会不停生成新的线程对数据库进行连接,很容易就达到了数据库的MAX_connection, 导致服务器本地跑脚本的时候线程不足。
后续考虑对脚本的线程数进行限制,达到某个值时不再生成新的线程;
另一方面也可以考虑对生成的连接数进行限制。然后再看下会不会再出现这个问题。
限制连接数的方案,参考Mariadb查看系统连接的命令:
http://www.linuxidc.com/Linux/2016-05/131027.htm
时间: 2024-10-04 17:48:27