乙個開發者的疑問:
應用程式會呼叫top的api去執行任務,首先根據單個任務執行時間很長,其次在使用者量增加的時候執行緒併發量很大,出現連線重置等網路問題。
回答:1.合理切割任務,將任務粒度放小,減小事務時間,提高事務執行成功率,降低回滾代價。
2.合併任務中重複的內容,在時間間隔容許的範圍內,減少可能重複的操作。
3.看是否有批量操作介面,減少單個迴圈呼叫次數。
4.控制工作執行緒池執行緒個數,根據實際效能和對方伺服器處理能力設定並行任務個數。
第四點在說明一下:
執行緒併發開的越多未必成功率越高:
首先本地資源有限(開的越多執行緒,本地gc**頻率越高,影響執行速度,效率反而降低)
其次,對方可能會由於你的ip連線數過多主動拒絕連線。(dos保護)
再次,通道無法復用。(當前1.6jdk版本已經能夠較好的復用tcp通道,併發瞬間開大量的tcp通道本身就是一種損耗,有時候部分序列化,某種程度上會減少產生tcp通道的數目合理利用通道,提高效率和成功率,客戶端做好流控也很重要。)
對於高併發呼叫TOP的回答
乙個開發者的疑問 應用程式會呼叫top的api去執行任務,首先根據單個任務執行時間很長,其次在使用者量增加的時候執行緒併發量很大,出現連線重置等網路問題。回答 1.合理切割任務,將任務粒度放小,減小事務時間,提高事務執行成功率,降低回滾代價。2.合併任務中重複的內容,在時間間隔容許的範圍內,減少可能...
javaweb對於高併發策略 快取
前言 在系統開發過程中,經常遇到資料重複插入 重複更新 訊息重發傳送等等問題,因為應用系統的複雜邏輯以及網路互動存在的不確定性,會導致這一重複現象,但是有些邏輯是需要有冪等特性的,否則造成的後果會比較嚴重,例如訂單重複建立,這時候帶來的問題可是非同一般啊。什麼是系統的冪等性 冪等是資料中得乙個概念,...
java 對於高併發的一些理解
併發是什麼 就是多個執行緒同時處理不同的操作 高併發 就是很多使用者同時訪問,導致系統資料不正確,出現髒讀等情況.常見的解決放法 硬體來說使用集群技術,更好的伺服器以及資料庫 從技術層面來說 使用快取,最常見的是redis,一般來說,可以允許丟失,變更頻率較低,全專案通用的,實際上還是要根據相應的業...