91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中使用Disruptor時需要注意哪些問題

發布時間:2021-07-01 15:03:04 來源:億速云 閱讀:256 作者:Leah 欄目:大數據

本篇文章給大家分享的是有關Java中使用Disruptor時需要注意哪些問題,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

發現占用CPU時間超過100%的進程

首先是在服務器上用top命令查看服務器狀態,發現有一個應用程序占用的CPU時長超過100%,如圖:

Java中使用Disruptor時需要注意哪些問題

我根據進程號查了一下,發現是我的一個Java游戲后臺服務,有一個CPU幾乎被占滿,因此繼續排查究竟是什么代碼導致了這種情況。

top -Hp 27538將這個進程的所有線程顯示出來,按照CPU占用時間排序,看到了這個結果:

Java中使用Disruptor時需要注意哪些問題

27658線程占用了近乎所有的CPU時間,而且一直都是,因此查看這個進程的詳細信息。

jstack pid > pid.log命令將該進程的進程快照輸出到一個文件中,下載下來。

將27658轉換為16進制0x6c0a后在線程快照中查詢(因為線程快照中線程ID都是16進制存放,所以需要轉換):

"disruptor-0" #27 prio=5 os_prio=0 tid=0x00007fa100c58000 nid=0x6c0a runnable [0x00007fa0ae080000]
  java.lang.Thread.State: RUNNABLE
   at com.lmax.disruptor.BusySpinWaitStrategy.waitFor(BusySpinWaitStrategy.java:39)
   at com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)
   at com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:159)
   at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125)
   at java.lang.Thread.run(Thread.java:748)

這是Disruptor的一個堆棧,為了更直觀地查看線程的狀態信息,可以將快照上傳到專門的分析平臺上。

(博主本人對于進程快照分析也是處于新手階段,如果大家有什么建議或者意見,歡迎在下方留言。)

分析Disruptor為何會占用整個CPU

根據上面快照的分析,實際是Disruptor的等待策略相關的線程所導致的,查看BusySpinWaitStrategy類,發現有相關說明:

 * This strategy will use CPU resource to avoid syscalls which can introduce latency jitter.  It is best
* used when threads can be bound to specific CPU cores.

現在終于知道了,原來是因為這個策略就是讓線程綁定了一個CPU核心,自然其CPU占用時間就超過100%了。

以上就是Java中使用Disruptor時需要注意哪些問題,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜山县| 会泽县| 东平县| 虎林市| 兴国县| 南乐县| 松阳县| 宁蒗| 乌什县| 昭通市| 宜城市| 云林县| 白朗县| 鞍山市| 同仁县| 高密市| 松江区| 徐闻县| 夏河县| 博客| 遂昌县| 洛宁县| 波密县| 玉树县| 望都县| 杭锦旗| 随州市| 辽阳县| 买车| 西和县| 资兴市| 望江县| 孝义市| 思南县| 和龙市| 车致| 南平市| 台南县| 吉水县| 柞水县| 洪洞县|