繁体   English   中英

使用Java多线程时如何获取http请求的确切响应时间

[英]How to get the exact response time of http request when using Java multi-threads

我正在构建一个程序,该程序试图模拟真实的客户请求以衡量服务的“质量”。 我正在尝试衡量可接受的最大客户数量。 换句话说,我的网络服务器可以同时服务多少个客户端。 我使用每个请求的响应时间和重载次数来衡量“质量”。 然后,我有1万个线程在同时执行,但只是在随机时间内执行请求(以避免同时发送所有这些请求并导致拒绝服务)。

我的问题是如何在不受切换线程影响的情况下获得响应时间? 到目前为止,我发现获得响应时间的唯一方法是:

long starTime = System.nanoTime();
InputStream inputStream = this.conn.getInputStream();
long endTime = System.nanoTime();
double elapsedTime  = TimeUnit.NANOSECONDS.toMillis((endTime - starTime))/1000.0;

其中this.conn对象是HttpURLConnection。

问题在于,在获取inputStream之后可以立即切换线程,并且endTime将不准确。 如果线程更多,可能会变得更糟。

如何获得不受线程切换影响的确切时间?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM