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家股票,应该足够了,结题修改后重新启动,还是和原来一样没有变化在这请教下大额怎么解决怎么修改这个连接数,因为网上资料是好多,但我看了一下下午还是弄不了了,是不是我操作错了还是方式不对,或者大家对我这代码修改有什么好建议的也可以说说。

解决方案 »

  1.   

    是不是你的mysql使用的端口号被占用了,把那个占用端口的进程杀掉。
      

  2.   

     Address already in use: connect  应该是端口被占用的情况,但是你说插入几百条才开始报错,你是不是链接没有关闭呀?  又没有释放,超过最大数之后没有拿到连接很正常了
      

  3.   


    http://blog.csdn.net/tas/article/details/4350845
      

  4.   

    我连接没有直接关闭,但我每次操作完一条记录就会把连接前面生成的conn=null;,所以应该也有关闭的意思了
      

  5.   


    http://blog.csdn.net/tas/article/details/4350845
    刚查了没有占用哦
      

  6.   

    建议你改写你的db连接获取类,用ThreadLocal共享你db连接把。
      

  7.   

    一定要close吧?不一定吧,把引用置NULL了也差不多的,置NULL后,JVM垃圾收集器会自动收拾处理被弃的连接对象
      

  8.   

    一定要close吧?不一定吧,把引用置NULL了也差不多的,置NULL后,JVM垃圾收集器会自动收拾处理被弃的连接对象等你服务器死透了它也不会回收的,因为“没到时候”,什么时候回收它说了算。
      

  9.   

    一定要close吧?不一定吧,把引用置NULL了也差不多的,置NULL后,JVM垃圾收集器会自动收拾处理被弃的连接对象
    这个不仅是回收对象的问题,Connection的close方法还会通知数据库释放资源,数据库连接又不是只有程序的事情。
    我实在不明白你为什么不用连接池,明明是并发插入,你非要每次插入都重新创建新的连接,这样的消耗非常浪费。而且你还没关闭连接,这样的做法如果让DBA看到了,杀了你的心思都有了。
      

  10.   

    一定要close吧?不一定吧,把引用置NULL了也差不多的,置NULL后,JVM垃圾收集器会自动收拾处理被弃的连接对象
    这个不仅是回收对象的问题,Connection的close方法还会通知数据库释放资源,数据库连接又不是只有程序的事情。
    我实在不明白你为什么不用连接池,明明是并发插入,你非要每次插入都重新创建新的连接,这样的消耗非常浪费。而且你还没关闭连接,这样的做法如果让DBA看到了,杀了你的心思都有了。受教了,我有空修改下,弄个连接池吧,这代码其实不是我写的,是我刚交接过来的,是人家写好的,我交接过来后只是简单修改了下采集的信息处理,这东西折腾了我两三天,就因为这连接数超限的问题
      

  11.   

    楼上说的对啊!端口被占用了。。
    解决方案:
    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了。
    我一般用第二种