2 lqy893022 lqy893022 于 2016.09.25 13:47 提问

jsoup抓取网页数据,连接数据库之后,运行了一段时间报错如下: 50C

com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:921)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1070)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748)
at com.mysql.jdbc.Connection.(Connection.java:1553)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
也尝试修改了my.ini文件中的max_connections参数,还是不行,求高手指点!

6个回答

qy20115549
qy20115549   2016.09.25 14:31

你是要写操作数据库语句吗,建议用queryrunner。。想看网络爬虫方面的框架,json数据解析,httpclient的使用,网络爬虫将抓去的数据放到数据库,去看我的博客,我写了一系列的java网络爬虫。。。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.09.25 14:54

异常显示你的数据库连接太多,检查下你的代码是不是存在使用完成连接但是没有及时释放连接的情况呢。

qq_22522245
qq_22522245   2016.09.25 16:36

想看网络爬虫方面的框架,json数据解析,httpclient的使用,网络爬虫将抓去的数据放到数据库。

qq_15617533
qq_15617533   2016.09.26 01:01
 因为你的mysql安装目录下的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满
解决方式:针对并发连接数太少,打开MYSQL安装目录my.ini找到max_connections大约93行,把默认值修改为500-1000,重启mysql,如果依然报错则可能是存在大量的沉睡线程mysql所支撑的最大连接数有限如果沉睡线程过多那么将无法创建新的mysql连接,从而爆"Too many connections错误",可以使用show processlist查看mysql状态,如果发现大量的sleep进程那么回到my.ini文件下限制进程的沉睡时间如设置wait-timeout=10线程最多沉睡10s即关闭,此外程序中数据库操作完成之后不要忘记关闭连接是一个好习惯
u011606457
u011606457   2016.09.26 08:42

可能是数据库连接资源泄漏了,检查代码是否有关闭或者释放资源(建议用连接池)。

爬虫的并发量太高了,建议控制并发数,用线程池

quasimodo_es
quasimodo_es   2016.09.26 12:55

应该是应用中数据库连接池的链接没有释放造成的;
jsoup是网页爬取工具,和数据库连接池没关系的,这个是你爬取目标网站给出的错误吗?

Csdn user default icon
上传中...
上传图片
插入图片