Java 低CPU高IO应用程序的负载峰值

Java 低CPU高IO应用程序的负载峰值,java,multithreading,asynchronous,io,cpu-load,Java,Multithreading,Asynchronous,Io,Cpu Load,我正在运行一个每秒进行数百次http调用的应用程序,并在redis中解析和存储数据。I/O操作是异步的,但我仍然得到一致的负载峰值。从其他文章中,我读到CPU很低(主要等待I/O),但负载平均峰值(等待处理的调用)不确定挂起的位置,因为只有在活动线程数低于线程池的大小时才会产生新线程。任何建议都将不胜感激,我已经在下面列出了我所看到的行为的图表: 您是否记录垃圾收集?主要垃圾收集循环和峰值之间是否存在对应关系?这可能是任何情况,包括外部因素、同一物理机器上的其他VM、每X分钟运行一次的后台任务…

我正在运行一个每秒进行数百次http调用的应用程序,并在redis中解析和存储数据。I/O操作是异步的,但我仍然得到一致的负载峰值。从其他文章中,我读到CPU很低(主要等待I/O),但负载平均峰值(等待处理的调用)不确定挂起的位置,因为只有在活动线程数低于线程池的大小时才会产生新线程。任何建议都将不胜感激,我已经在下面列出了我所看到的行为的图表:


您是否记录垃圾收集?主要垃圾收集循环和峰值之间是否存在对应关系?这可能是任何情况,包括外部因素、同一物理机器上的其他VM、每X分钟运行一次的后台任务……我是否正确理解此图以及负载是否与IO相关?这是一台Windows计算机,正在交换。你正在刷新磁盘吗?Redis由文件存储支持吗?@realpoint我没有发现垃圾收集和这些峰值之间有任何关联。@john16384可能是同一物理机器或后台任务上的其他VM,但我希望在应用程序不运行的情况下看到这些负载峰值。如果没有,那么我希望我的应用程序中有什么东西导致了这个问题。