<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://www.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ù)  更多評論
      
    主站蜘蛛池模板: 久久99久久成人免费播放| 野花高清在线电影观看免费视频| 亚洲s色大片在线观看| 18禁止观看免费私人影院| mm1313亚洲国产精品无码试看 | 亚洲中文字幕无码日韩| 精品无码无人网站免费视频| 亚洲精品无码专区久久| 精品亚洲综合久久中文字幕| 久久不见久久见中文字幕免费| 一级成人a做片免费| 亚洲制服丝袜在线播放| 亚洲综合区小说区激情区| 成人无码区免费A片视频WWW| 亚洲日韩乱码中文无码蜜桃臀网站 | 小草在线看片免费人成视久网| 亚洲视频无码高清在线| 亚洲一区AV无码少妇电影☆| 成人AV免费网址在线观看| 国产在线精品观看免费观看| 亚洲真人无码永久在线观看| 亚洲精品美女久久777777| 日本免费人成黄页网观看视频| 无码中文字幕av免费放dvd| 黄色免费在线网址| 亚洲人成影院77777| 亚洲精品乱码久久久久久按摩 | 在线观看免费大黄网站| 久久成人无码国产免费播放| 性色av极品无码专区亚洲| 亚洲精品日韩专区silk| 伊伊人成亚洲综合人网7777| 国产成人无码a区在线观看视频免费 | 国产精品免费看久久久无码| 久久久久av无码免费网| 97在线视频免费公开视频| 激情小说亚洲色图| 亚洲日本成本人观看| 亚洲成a人片在线观看中文!!!| 亚洲成A人片777777| 亚洲女同成人AⅤ人片在线观看|