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

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

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

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    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:
    添加或者修改下面兩項(xiàng)
    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í)踐,修改此兩項(xiàng)參數(shù)是很有效的方法。

    [2]修改程序
    在對線程控制上,需要頻繁對數(shù)據(jù)庫操作的地方,實(shí)現(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ù)庫操作特別頻繁,可以考慮使用連接共用。
    這樣,雖然連接占用的時間長點(diǎn),但是,不會出現(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èi)資源。而且頻繁啟動新連接,也不是一種很有效率的做法。  回復(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ù)  更多評論
      
    主站蜘蛛池模板: 亚洲精品黄色视频在线观看免费资源| 久久国产免费观看精品| 国产黄色一级毛片亚洲黄片大全| 亚洲国产黄在线观看| 国产成人无码区免费内射一片色欲 | 2048亚洲精品国产| 性无码免费一区二区三区在线| 亚洲а∨天堂久久精品9966| 亚洲午夜久久久久久噜噜噜| 无码区日韩特区永久免费系列| 免费无毒a网站在线观看| 亚洲福利秒拍一区二区| 国产一区二区三区在线免费| 久久久久久AV无码免费网站| 亚洲精品色在线网站| 四虎影视大全免费入口| 中文在线观看国语高清免费| 久久夜色精品国产噜噜亚洲a| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产成人亚洲综合无码精品| 最近中文字幕免费mv视频8| 中文在线免费不卡视频| jlzzjlzz亚洲jzjzjz| 国产成人综合亚洲AV第一页 | 黄色一级视频免费观看| 亚洲精品亚洲人成在线麻豆| 亚洲精品和日本精品| 噼里啪啦电影在线观看免费高清 | 亚洲狠狠久久综合一区77777| 国产成人免费永久播放视频平台| 91福利免费视频| 久久国产一片免费观看| 精品无码专区亚洲| 亚洲国产成人精品久久| 亚洲区小说区图片区QVOD| 四虎永久免费地址在线网站| 18禁无遮挡无码网站免费| 中文字幕免费视频一| 两个人的视频www免费| 黄色毛片视频免费| 亚洲精品蜜夜内射|