Address already in use: connect先说一下我的代码的具体情况吧。我的代码是每隔一小时就采集中国2400家企业的股价,然后把采集的结果一条一条地插入到数据库中,每采集到一家公司就会直接插入表中,所以会产生很多连接,代码是运行在TOMCAT下的,在本机测试时,每次插入表中四五百条记录后就报错,如标题所示错误代码。当然了,我的代码里没有特别地弄一个连接池,但我是把获取数据库连接对象写在一个方法内的,如方法内这样写
conntection conn = null;
.
.
conn = DBUtil.getConntection();
所以,每次插入表时会把原创建的数据库连接对象引用置空,然后新建一个数据库连接对象,所以,我想在我这功能中应该是满足需求了,但是没想到的时才处理几百条就报错了,然后停了几分钟又自动跑了。然后今天整个下午一直在百度谷歌,查出的原因,是本机或我的TOMCAT下设置的连接最大数过小,而在我们把数据库引用对象置为null时,它并不会马上被垃圾收集器回收,看了下网上说的只是先把它设为timewait状态,240秒后才回收,大概就是这样的,我想问下不修改我的代码的情况下我怎么修改这个连接最大数,让它变得更大一点,本人对WEB不熟悉,可以说是第一次弄吧,所以按网上说的在配置文件server.xml中添加minProcessors、maxProcessors这两个属性并给个更大的值就好了。因为我下的TOMCAT,server.xml文件上是找不到这两个属性的,所以网上说了我就添加上去了,然后把maxProcessors设为3000,想着我只采集2400家股票,应该足够了,结题修改后重新启动,还是和原来一样没有变化在这请教下大额怎么解决怎么修改这个连接数,因为网上资料是好多,但我看了一下下午还是弄不了了,是不是我操作错了还是方式不对,或者大家对我这代码修改有什么好建议的也可以说说。
conntection conn = null;
.
.
conn = DBUtil.getConntection();
所以,每次插入表时会把原创建的数据库连接对象引用置空,然后新建一个数据库连接对象,所以,我想在我这功能中应该是满足需求了,但是没想到的时才处理几百条就报错了,然后停了几分钟又自动跑了。然后今天整个下午一直在百度谷歌,查出的原因,是本机或我的TOMCAT下设置的连接最大数过小,而在我们把数据库引用对象置为null时,它并不会马上被垃圾收集器回收,看了下网上说的只是先把它设为timewait状态,240秒后才回收,大概就是这样的,我想问下不修改我的代码的情况下我怎么修改这个连接最大数,让它变得更大一点,本人对WEB不熟悉,可以说是第一次弄吧,所以按网上说的在配置文件server.xml中添加minProcessors、maxProcessors这两个属性并给个更大的值就好了。因为我下的TOMCAT,server.xml文件上是找不到这两个属性的,所以网上说了我就添加上去了,然后把maxProcessors设为3000,想着我只采集2400家股票,应该足够了,结题修改后重新启动,还是和原来一样没有变化在这请教下大额怎么解决怎么修改这个连接数,因为网上资料是好多,但我看了一下下午还是弄不了了,是不是我操作错了还是方式不对,或者大家对我这代码修改有什么好建议的也可以说说。
解决方案 »
- 关于调用外部class文件的问题
- axis2的客户端使用Proxy方式时,Proxy使用对象池是否可行
- 怎么在JAVA中实现关键字过滤?
- 救命呀,关于Java里的16进制串,byte等问题。
- java生成WORD的问题
- hibernate 关联查询报错:org.hibernate.hql.ast.QuerySyntaxException: unexpected token
- hibernate一对多、多对一的映射问题
- 关于struts中valildate出error mseeage的不换行的问题。
- 诚聘:开发工程师
- 关于自定义异常的问题
- "1071499017000" 时间格式转换本地时间,顶起!
- Spring security获取在线的用户
http://blog.csdn.net/tas/article/details/4350845
http://blog.csdn.net/tas/article/details/4350845
刚查了没有占用哦
这个不仅是回收对象的问题,Connection的close方法还会通知数据库释放资源,数据库连接又不是只有程序的事情。
我实在不明白你为什么不用连接池,明明是并发插入,你非要每次插入都重新创建新的连接,这样的消耗非常浪费。而且你还没关闭连接,这样的做法如果让DBA看到了,杀了你的心思都有了。
这个不仅是回收对象的问题,Connection的close方法还会通知数据库释放资源,数据库连接又不是只有程序的事情。
我实在不明白你为什么不用连接池,明明是并发插入,你非要每次插入都重新创建新的连接,这样的消耗非常浪费。而且你还没关闭连接,这样的做法如果让DBA看到了,杀了你的心思都有了。受教了,我有空修改下,弄个连接池吧,这代码其实不是我写的,是我刚交接过来的,是人家写好的,我交接过来后只是简单修改了下采集的信息处理,这东西折腾了我两三天,就因为这连接数超限的问题
解决方案:
1,在你的tomcat 里面找到 confg/server.xml中找到:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
修改你的端口号:prot="9090"或者你自己弄
2,按 启动任务管理器--->进程----->找到javax.exe结束进程 重启Tomcat就ok了。
我一般用第二种