【问题标题】:Java: Network Statistics of running Java App from inside App itselfJava:从应用程序内部运行 Java 应用程序的网络统计信息
【发布时间】:2017-10-22 03:53:15
【问题描述】:
有没有办法从 java 程序本身监控网络流量(传输的字节数、数据包计数)?
我想对第三方应用程序 (IBM Domino DIIOP) 进行基准测试。无法将自定义网络套接字等传递给库。基准应用程序在 Windows/Linux 上运行。现在我正在使用 Wireshark 进行监控,但它既复杂又耗时。 Wireshark 会对网络性能产生负面影响,因此它不是基准测试的完美选择。
是否有适用于 Windows 和/或 Linux 的纯 Java 解决方案?
【问题讨论】:
标签:
java
networking
benchmarking
【解决方案1】:
有没有办法从 java 程序内部监控网络流量?
有几种方法:
- 您可以监控套接字。请参考以下article。互联网上还有许多图书馆。
- 您可以通过 AspectJ 使用运行时编织来拦截 AOP 调用并计算统计信息。
您仍然应该记住,并非所有统计信息都可以从应用程序中收集。网络通信被委托给操作系统,应用程序通常不知道传输细节。
传输的字节数
您可以计算应用读取和写入的字节数,但不能计算通过网络传输的实际字节数。
包数
应用程序不提供数据包计数,因为网络协议驱动程序负责形成和传递数据包。