Profile Image
Sam

a discord multi-tokens music bot

high cpu usage, it jumps from 20% to 80% then goes back to 20% then jumps to 60%.. forever.

threads will stay waiting, forever.

 

Report URL - https://fastthread.io/my-thread-report.jsp?p=c2hhcmVkLzIwMjMvMDUvMjMvanN0YWNrLm91dC0tMTktMTUtNTI=

  • discord

  • highcpuusage

  • multi-tokensmusicbot

  • cpuconsumingthread

Please Sign In or to post your comment or answer

Profile Image

Ram Lakshmanan

Hello Sam!

 

 Inorder to diagnose CPU spike there is two approaches:

  1. Strategic/right approach
  2. Tactical approach

Strategic Approach:

 

 Inorder to accurately point the lines of code causing the CPU spike, you need to analyze not only thread dumps but also 'top -H -p {PID}' command output, where {PID} is your Java application's process Id which is experiencing CPU spike. When you issue this ‘top’ command with given arguments, it will list all the threads running in the application and amount of CPU each one of the thread consume. Once you have both the data, you can identify high CPU consuming thread and lines of code they are executing.

 

 You can use the open source yCrash script which will capture 360-degree application level artifacts (like GC logs, 3 snapshots of thread dumps, heap dumps) and system level artifacts (like top, top -H, netstat, vmstat, iostat, dmesg, diskusage, kernel parameters...). Once you have these data, either you can manually analyze them or upload it to yCrash tool. Tool analyzes all these dataset and generates an instant root cause analysis report pointing out exact line of code causing the CPU spike. Here is more detailed information on how to diagnose high CPU spike.

 

Tactical approach:

 

 fastThread tool uses its heuristics algorithms and shows the potential (but not exact) threads are consuming high cpu in the section 'CPU consuming threads'.  You want to refer to see the threads pointed in this 'CPU consuming threads' section.

 

 In your case, I could following threads reported in ‘CPU consuming threads’ section to be potential suspects for CPU spike:

 

Thread-486
PRIORITY : 7
THREAD ID : 0X00007FA5700CB770
NATIVE ID : 0X15BD
NATIVE ID (DECIMAL) : 5565
STATE : RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at xxx.xxxxx.discord.lavaplayer.udpqueue.natives.UdpQueueManagerLibrary.process(Native Method)
at xxx.xxxxx.discord.lavaplayer.udpqueue.natives.UdpQueueManager.process(UdpQueueManager.java:83)
at xxx.xxxxx.discord.lavaplayer.jdaudp.NativeAudioSendFactory$$Lambda$340/0x00000008012f0838.run(Unknown Source)
at java.lang.Thread.run(java.base@17.0.7/Thread.java:833)
Locked ownable synchronizers:
- None



lava-daemon-pool-playback-1-thread-12
PRIORITY : 5
THREAD ID : 0X00007FA5403E8A10
NATIVE ID : 0X162B
NATIVE ID (DECIMAL) : 5675
STATE : RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoderLibrary.encode(Native Method)
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoder.encode(OpusEncoder.java:43)
at xxx.xxxxx.discord.lavaplayer.format.transcoder.OpusChunkEncoder.encode(OpusChunkEncoder.java:39)
at xxx.xxxxx.discord.lavaplayer.filter.BufferingPostProcessor.process(BufferingPostProcessor.java:34)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.dispatch(FinalPcmAudioFilter.java:157)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.process(FinalPcmAudioFilter.java:129)
at xxx.xxxxx.discord.lavaplayer.filter.AudioPipeline.process(AudioPipeline.java:33)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.passDownstream(OpusPacketRouter.java:160)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:96)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack$$Lambda$345/0x00000008012fd320.performRead(Unknown Source)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e4c7bdf0> (a xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:58)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e7e67d48> (a com.github.topisenpai.lavasrc.spotify.SpotifyAudioTrack)
at com.github.topisenpai.lavasrc.mirror.MirroringAudioTrack.process(MirroringAudioTrack.java:90)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:361)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager$$Lambda$325/0x00000008012e7aa0.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.7/ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.7/ThreadPoolExecutor.java:635)
at java.lang.Thread.run(java.base@17.0.7/Thread.java:833)
Locked ownable synchronizers:
- <0x00000000e4c7be90> (a java.util.concurrent.ThreadPoolExecutor$Worker)




lava-daemon-pool-playback-1-thread-29
PRIORITY : 5
THREAD ID : 0X00007FA5600B4320
NATIVE ID : 0X16E5
NATIVE ID (DECIMAL) : 5861
STATE : RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoderLibrary.encode(Native Method)
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoder.encode(OpusEncoder.java:43)
at xxx.xxxxx.discord.lavaplayer.format.transcoder.OpusChunkEncoder.encode(OpusChunkEncoder.java:39)
at xxx.xxxxx.discord.lavaplayer.filter.BufferingPostProcessor.process(BufferingPostProcessor.java:34)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.dispatch(FinalPcmAudioFilter.java:157)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.process(FinalPcmAudioFilter.java:129)
at xxx.xxxxx.discord.lavaplayer.filter.AudioPipeline.process(AudioPipeline.java:33)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.passDownstream(OpusPacketRouter.java:160)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:96)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack$$Lambda$345/0x00000008012fd320.performRead(Unknown Source)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e33a2ae0> (a xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:58)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e3d73ab8> (a com.github.topisenpai.lavasrc.spotify.SpotifyAudioTrack)
at com.github.topisenpai.lavasrc.mirror.MirroringAudioTrack.process(MirroringAudioTrack.java:90)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:361)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager$$Lambda$325/0x00000008012e7aa0.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.7/ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.7/ThreadPoolExecutor.java:635)
at java.lang.Thread.run(java.base@17.0.7/Thread.java:833)
Locked ownable synchronizers:
- <0x00000000e4734da0> (a java.util.concurrent.ThreadPoolExecutor$Worker)




lava-daemon-pool-playback-1-thread-30
PRIORITY : 5
THREAD ID : 0X00007FA5500BD700
NATIVE ID : 0X16E7
NATIVE ID (DECIMAL) : 5863
STATE : RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoderLibrary.encode(Native Method)
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoder.encode(OpusEncoder.java:43)
at xxx.xxxxx.discord.lavaplayer.format.transcoder.OpusChunkEncoder.encode(OpusChunkEncoder.java:39)
at xxx.xxxxx.discord.lavaplayer.filter.BufferingPostProcessor.process(BufferingPostProcessor.java:34)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.dispatch(FinalPcmAudioFilter.java:157)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.process(FinalPcmAudioFilter.java:129)
at xxx.xxxxx.discord.lavaplayer.filter.AudioPipeline.process(AudioPipeline.java:33)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.passDownstream(OpusPacketRouter.java:160)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:96)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack$$Lambda$345/0x00000008012fd320.performRead(Unknown Source)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e33d1338> (a xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:58)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e8d17a30> (a com.github.topisenpai.lavasrc.spotify.SpotifyAudioTrack)
at com.github.topisenpai.lavasrc.mirror.MirroringAudioTrack.process(MirroringAudioTrack.java:90)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:361)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager$$Lambda$325/0x00000008012e7aa0.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.7/ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.7/ThreadPoolExecutor.java:635)
at java.lang.Thread.run(java.base@17.0.7/Thread.java:833)
Locked ownable synchronizers:
- <0x00000000e474e658> (a java.util.concurrent.ThreadPoolExecutor$Worker)



lava-daemon-pool-playback-1-thread-72
PRIORITY : 5
THREAD ID : 0X00007FA5413FF4A0
NATIVE ID : 0X1A10
NATIVE ID (DECIMAL) : 6672
STATE : RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoderLibrary.encode(Native Method)
at xxx.xxxxx.discord.lavaplayer.natives.opus.OpusEncoder.encode(OpusEncoder.java:43)
at xxx.xxxxx.discord.lavaplayer.format.transcoder.OpusChunkEncoder.encode(OpusChunkEncoder.java:39)
at xxx.xxxxx.discord.lavaplayer.filter.BufferingPostProcessor.process(BufferingPostProcessor.java:34)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.dispatch(FinalPcmAudioFilter.java:157)
at xxx.xxxxx.discord.lavaplayer.filter.FinalPcmAudioFilter.process(FinalPcmAudioFilter.java:129)
at xxx.xxxxx.discord.lavaplayer.filter.AudioPipeline.process(AudioPipeline.java:33)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.passDownstream(OpusPacketRouter.java:160)
at xxx.xxxxx.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:96)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack$$Lambda$345/0x00000008012fd320.performRead(Unknown Source)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249)
at xxx.xxxxx.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e2d98588> (a xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:58)
at xxx.xxxxx.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:50)
at xxx.xxxxx.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
- locked <0x00000000e90d9560> (a com.github.topisenpai.lavasrc.spotify.SpotifyAudioTrack)
at com.github.topisenpai.lavasrc.mirror.MirroringAudioTrack.process(MirroringAudioTrack.java:90)
at xxx.xxxxx.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:361)
at xxx.xxxxx.discord.lavaplayer.player.DefaultAudioPlayerManager$$Lambda$325/0x00000008012e7aa0.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.7/ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.7/ThreadPoolExecutor.java:635)
at java.lang.Thread.run(java.base@17.0.7/Thread.java:833)
Locked ownable synchronizers:
- <0x00000000e38fb590> (a java.util.concurrent.ThreadPoolExecutor$Worker)

Got something else on mind? Post Your Question

Not the answer you're looking for? Browse other questions tagged
  • discord

  • highcpuusage

  • multi-tokensmusicbot

  • cpuconsumingthread