@Test public void testPerf() throws IOException { final HttpGet request = new HttpGet("https://11ro68yamg.execute-api.us-east-1.amazonaws.com/prod/lambda"); final int numRequests = 10000; final int[] histogram = new int[100]; final List latencies = new ArrayList<>(); final CloseableHttpClient client = HttpClients.createDefault(); for (int i = 0; i < numRequests; i++) { final Stopwatch sw = Stopwatch.createStarted(); final CloseableHttpResponse resp = client.execute(request); resp.close(); sw.stop(); long millis = sw.elapsed(TimeUnit.MILLISECONDS); if (millis > 800) { LOG.warn(String.format("Request took %dms" + ", request ID: %s, CF request ID: %s", millis, resp.getFirstHeader("X-Amzn-Requestid"), resp.getFirstHeader("X-Amz-Cf-Id"))); } histogram[((int) (millis / 100))]++; latencies.add((int) millis); } Collections.sort(latencies); final int p50 = latencies.get((50 * (numRequests) / 100) - 1); final int p90 = latencies.get((90 * (numRequests) / 100) - 1); final int p99 = latencies.get((99 * (numRequests) / 100) - 1); final int p100 = latencies.get((100 * (numRequests) / 100) - 1); LOG.info(String.format("Num requests: %d P50: %dms P90: %dms P99: %dms P100: %dms", numRequests, p50, p90, p99, p100)); LOG.info(String.format("Distribution: ")); for (int i = 0; i < histogram.length; i++) { LOG.info(i*100 + "ms - " + (i+1)*100 + "ms: " + histogram[i]); }