2

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

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

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会不准确。使用更多线程可能会变得更糟。

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

4

0 回答 0