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

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

          一個開發者的疑問:
          應用程序會調用TOP的API去執行任務,首先根據單個任務執行時間很長,其次在用戶量增加的時候線程并發量很大,出現連接重置等網絡問題。


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

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 遂平县| 万安县| 瑞金市| 吉木乃县| 双柏县| 长宁县| 全椒县| 江口县| 正镶白旗| 荆门市| 朝阳区| 杭州市| 响水县| 兰考县| 开封县| 邵东县| 宾川县| 白河县| 华阴市| 株洲市| 沙洋县| 武邑县| 南木林县| 临湘市| 浙江省| 丹阳市| 宜良县| 青田县| 鲁甸县| 南昌市| 申扎县| 徐州市| 饶平县| 天津市| 永安市| 永福县| 昭觉县| 革吉县| 定日县| 商南县| 瑞丽市|