放翁(文初)的一畝三分地

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            210 隨筆 :: 1 文章 :: 320 評論 :: 0 Trackbacks

          一個開發(fā)者的疑問:
          應用程序會調(diào)用TOP的API去執(zhí)行任務,首先根據(jù)單個任務執(zhí)行時間很長,其次在用戶量增加的時候線程并發(fā)量很大,出現(xiàn)連接重置等網(wǎng)絡問題。


          回答:
          1.合理切割任務,將任務粒度放小,減小事務時間,提高事務執(zhí)行成功率,降低回滾代價。
          2.合并任務中重復的內(nèi)容,在時間間隔容許的范圍內(nèi),減少可能重復的操作。
          3.看是否有批量操作接口,減少單個循環(huán)調(diào)用次數(shù)。
          4.控制工作線程池線程個數(shù),根據(jù)實際性能和對方服務器處理能力設置并行任務個數(shù)。

          第四點在說明一下:
          線程并發(fā)開的越多未必成功率越高:
          首先本地資源有限(開的越多線程,本地GC回收頻率越高,影響執(zhí)行速度,效率反而降低)
          其次,對方可能會由于你的ip連接數(shù)過多主動拒絕連接。(DOS保護)
          再次,信道無法復用。(當前1.6JDK版本已經(jīng)能夠較好的復用TCP信道,并發(fā)瞬間開大量的TCP信道本身就是一種損耗,有時候部分串行化,某種程度上會減少產(chǎn)生TCP信道的數(shù)目合理利用信道,提高效率和成功率,客戶端做好流控也很重要。)

          posted on 2010-06-07 21:22 岑文初 閱讀(1770) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 锡林浩特市| 建湖县| 舒城县| 丹巴县| 蓬莱市| 清镇市| 台湾省| 肇州县| 康保县| 穆棱市| 庐江县| 阳新县| 千阳县| 阳东县| 江油市| 五华县| 靖江市| 札达县| 隆昌县| 诸城市| 哈巴河县| 温宿县| 宜川县| 云阳县| 龙海市| 吐鲁番市| 堆龙德庆县| 龙山县| 漳浦县| 松潘县| 玉田县| 武汉市| 神木县| 安泽县| 云安县| 晋中市| 怀来县| 行唐县| 阿坝| 武安市| 甘德县|