<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0
    現(xiàn)象:
    [1]多線程啟動頻繁操作MSSQL,拋出

    到主機(jī)  的 TCP/IP 連接失敗。 java.net.BindException: Address already in use: connect

    [2]在服務(wù)器上,執(zhí)行netstat -a,可以看到很多TCP  TIME_WAIT
    很多端口被占用
    類似下面的:
    TCP    127.0.0.1:1025         127.0.0.1:1433         TIME_WAIT
    TCP    127.0.0.1:1026         127.0.0.1:1433         TIME_WAIT
    TCP    127.0.0.1:1027         127.0.0.1:1433         TIME_WAIT
    TCP    127.0.0.1:1028         127.0.0.1:1433         TIME_WAIT
    ......
    TCP    127.0.0.1:4998         127.0.0.1:1433         TIME_WAIT
    TCP    127.0.0.1:4999         127.0.0.1:1433         TIME_WAIT
    TCP    127.0.0.1:5000         127.0.0.1:1433         TIME_WAIT

    開始,我跑2個線程都有問題,過一會程序就拋上面的異常。

    我現(xiàn)在用了一個可行的方案,不是最好的方案。
    兩步操作:
    [1]通過修改注冊表

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:
    添加或者修改下面兩項
    MaxUserPort       = dword:00004e20 (20,000 decimal)
    TcpTimedWaitDelay = dword:0000001e (30 decimal)

    我的值設(shè)置
    MaxUserPort值修改為十進(jìn)制60000
    TcpTimedWaitDelay值修改為十進(jìn)制10

    MaxUserPort是最大的可用端口,最大值也就是65535了
    TcpTimedWaitDelay就是默認(rèn)的TimeWait時間,默認(rèn)是30,改小了,可以提高響應(yīng)速度。

    經(jīng)過實踐,修改此兩項參數(shù)是很有效的方法。

    [2]修改程序
    在對線程控制上,需要頻繁對數(shù)據(jù)庫操作的地方,實現(xiàn)讓線程休眠一段時間


    for(int i = 0;i<100000;i++){

               TestThread t = new TestTread();//頻繁對數(shù)據(jù)庫操作
               t.start();   

                try {
                    this.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
    }


    原因分析:
    JDBC Connection 關(guān)閉后,釋放了對數(shù)據(jù)庫連接的資源,但是對與服務(wù)器的Socket連接并沒有完全釋放。TCP在處理一個新的請求的時候,會創(chuàng)建新的連接,TIME_WAIT狀態(tài)的連接在4分鐘后釋放。所以,如果在4分鐘內(nèi)就把連接端口資源用完的話,就會出現(xiàn)上面的異常。如果4分鐘后,前面用去的端口得到釋放,取得和釋放達(dá)到一個平衡,就不會再出現(xiàn)此異常了。

    默認(rèn)的MaxUserPort是5000,這個值對于多線程來說,很容易就達(dá)到了。所以,如果線程跑的多,很容易就跑死了。

    根本解決:
    還是要從程序上下功夫。
    [1]避免頻繁操作問題
    如果是檢索,不要一個一個檢索,一次檢索到列表里面再進(jìn)行處理。
    如果數(shù)據(jù)量很大,那就用分頁操作進(jìn)行處理。

    如果是其他的操作,添加,刪除,修改的話,就可以使用批量操作來進(jìn)行。這樣,可以少去頻繁取連接。就可以避免上面的問題。

    [2]資源釋放要快
    數(shù)據(jù)庫資源要及時釋放。

    包括Resulset,Statement,Connection
    要及時關(guān)閉

    如果數(shù)據(jù)庫操作特別頻繁,可以考慮使用連接共用。
    這樣,雖然連接占用的時間長點,但是,不會出現(xiàn)上面的問題。
    在數(shù)據(jù)導(dǎo)入的程序里面還是很有用的。

    [3]可以考慮使用連接池來提升系統(tǒng)共享上的性能。



















    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2010-04-14 11:46 zhyiwww 閱讀(3164) 評論(6)  編輯  收藏 所屬分類: j2ee

    FeedBack:
    # re: 多線程頻繁操作MSSQL導(dǎo)致java.net.BindException異常的解決方法
    2010-04-14 11:48 | fzming
    聽說過長連接嗎  回復(fù)  更多評論
      
    # re: 多線程頻繁操作MSSQL導(dǎo)致java.net.BindException異常的解決方法[未登錄]
    2010-04-14 13:46 |
    可能是socket沒有完全關(guān)閉導(dǎo)致的。
    建議你嘗試下回收mysql的連接,不要用完就關(guān)閉,這樣會比較浪費資源。而且頻繁啟動新連接,也不是一種很有效率的做法。  回復(fù)  更多評論
      
    # re: 多線程頻繁操作MSSQL導(dǎo)致java.net.BindException異常的解決方法
    2010-04-14 16:29 | 稅國政
    說到關(guān)閉連接, 我以被他掛了兩次了  回復(fù)  更多評論
      
    # re: 多線程頻繁操作MSSQL導(dǎo)致java.net.BindException異常的解決方法
    2010-04-14 18:21 | 隔葉黃鶯
    第一個反應(yīng)就是使用連接池  回復(fù)  更多評論
      
    # re: 多線程頻繁操作MSSQL導(dǎo)致java.net.BindException異常的解決方法
    2010-04-17 11:38 | 俏物悄語
    可能是socket沒有完全關(guān)閉導(dǎo)致  回復(fù)  更多評論
      
    # re: 多線程頻繁操作MSSQL導(dǎo)致java.net.BindException異常的解決方法
    2010-04-21 11:01 | zhyiwww
    已經(jīng)關(guān)閉了連接,也釋放了所有的資源。
    在JDBC中是關(guān)閉不到Socket的。
      回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲18在线天美| 日韩视频免费在线观看| 九九精品免费视频| 国产成人免费a在线视频app| 亚洲国产人成在线观看| 精品女同一区二区三区免费站| 亚洲美女aⅴ久久久91| 91精品全国免费观看含羞草| 亚洲国产成人久久综合野外| 亚洲精品视频久久| 四虎国产精品永免费| 国产一卡二卡≡卡四卡免费乱码| 美女视频黄a视频全免费网站色 | 亚洲天堂电影在线观看| 18禁黄网站禁片免费观看不卡| 亚洲一级片内射网站在线观看| 亚洲成av人片不卡无码| 一个人看www在线高清免费看| 亚洲码和欧洲码一码二码三码| 两个人的视频www免费| 国产精品免费视频网站| 老司机精品视频免费| 在线亚洲精品自拍| 亚洲精品美女久久7777777| 在线永久免费观看黄网站| 成人免费视频一区二区| 亚洲精品免费观看| 大地资源二在线观看免费高清| 黄网站色成年片大免费高清 | 99久9在线|免费| 久久久亚洲裙底偷窥综合| 亚洲一级片在线播放| 爱爱帝国亚洲一区二区三区| 亚欧国产一级在线免费| 黄色网页在线免费观看| 亚洲中文字幕无码爆乳AV| 亚洲精品人成网在线播放影院| 国产亚洲精品国产福利在线观看| 久久精品网站免费观看 | 亚洲精品无AMM毛片| 亚洲国产另类久久久精品黑人 |