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

            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 岑文初 閱讀(1765) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 嵩明县| 五河县| 兴仁县| 来宾市| 班戈县| 满城县| 安阳市| 灌阳县| 郎溪县| 辽阳市| 宽甸| 壤塘县| 德惠市| 临洮县| 阳东县| 承德市| 石渠县| 姜堰市| 原阳县| 贡嘎县| 高清| 确山县| 雷山县| 澎湖县| 平谷区| 宝丰县| 邹平县| 盐边县| 岑溪市| 四会市| 和平县| 西宁市| 曲水县| 江油市| 宝鸡市| 淮滨县| 连城县| 报价| 府谷县| 东明县| 临漳县|