根据visualvm的采样器:
我是 Netty 的新手,但是当我分析一个 Java 应用程序时,似乎select()需要 85% 的self time. 但这self time(CPU)只是非常非常小的一部分。所以如果我理解self time和self time(CPU)正确,这意味着一直在select()等待。服务器端代码正常吗?如此多的等待会消耗多少 CPU 使用率?我的服务器有 12 核 CPU,频率为 2.4 GHz。这个 java 应用程序在top(linux 中类似 taskmgr 的工具)中花费了近 200% 。
花费的时间select()是您的应用程序的停机时间。一旦获取数据,该应用程序似乎是多线程的,具有高度并行化和非常高的 CPU 使用率。在时间select(),但表示在您的应用程序时不会有数据,所以它是当它等待网络操作完成封锁。
这与您观察到的大约 200% CPU 使用率使用top. 在 12 核系统上,200% 对应于 2/12,即总可用 CPU 时间的大约 16%。假设您的系统上没有其他任何东西在运行,停机时间为 (100-16),或大约 84% - 即大致上花费的时间select(),如 所示visualvm。
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |