【问题标题】:What is meant by Net IO in JProfiler?JProfiler中的Net IO是什么意思?
【发布时间】:2018-10-07 20:21:57
【问题描述】:

JProfiler 中的 Net IO time 是什么意思?

JProfilerguide 说如下,但我不知道它到底是什么意思?是花在网络上的时间还是在网络上等待的时间?如果净 io 时间很长,该如何解决?

在网络操作期间,Java 标准库中的许多调用 可以阻止,因为他们正在等待更多数据。这种 阻塞在 JProfiler 中称为“Net I/O”。 JProfiler 知道的列表 JRE 中导致网络 I/O 阻塞的方法并对其进行检测 在加载时。

【问题讨论】:

    标签: jprofiler


    【解决方案1】:

    Net I/O 是套接字等待数据的时间。

    • 等待连接的服务器套接字处于网络 I/O 线程状态。这并不表示存在性能问题。

    • 等待数据库返回结果的 JDBC 调用处于净 I/O 状态。在这种情况下,您可以在调用树中看到关联的 SQL 字符串。

    【讨论】:

    • @ Ingo Kegel - 就我而言,查询在几毫秒内执行良好,但净 IO 时间仍然很长吗?在 2.5 小时的总时间中,可运行时间仅为 12 分钟,而净 IO 时间为 2.5 小时。
    • 你能告诉我究竟什么是可运行时间吗?是花时间在 CPU 上执行代码吗?
    • it it time spent executing the code on CPU? -> 不,“可运行”仅包括线程不处于任何其他线程状态的时间,即它想要执行指令。但是,它并不总是由操作系统安排运行。
    • 至于您的其他评论,您可能正在查看“可运行”时间,您应该切换到“所有线程状态”以查看挂钟时间。
    • @ Ingo Kegel - 那么什么样的视图会真正告诉我在 CPU 上花费了多少时间?当我加起来 runnable + net io time 时,它​​加起来等于捕获快照的时间。因此,如果在可运行线程中没有执行并且刚刚准备好,那么代码何时执行以及该时间记录在哪里?
    【解决方案2】:

    “Net I/O”状态跟踪线程等待网络数据的时间。这对于分析服务器和数据库驱动程序很重要,因为该时间可能与性能分析相关,例如调查慢速 SQL 查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多