我正在构建一个程序,试图模拟真实客户端请求来衡量服务的“质量”。我正在尝试测量最大可接受的客户端数量。换句话说,我的网络服务器能够同时服务多少客户端。 我使用每个请求的响应时间和重新加载的数量来衡量“质量”。然后,我有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将不准确。更多线程可能会变得更糟。
如何获得不受线程切换影响的确切时间?