No results for

Powered byAlgolia

Overview

HTTP/2.0 is the latest version of the HTTP protocol. It improves significantly upon HTTP/1. Most importantly, it introduces a binary wire protocol with multiplexed streams over a single TCP connection. This solves a long-standing performance issue with HTTP/1.1: head-of-line blocking.

Well, it at least partially solves it. The TCP congestion control mechanisms can interfere with the intended independent nature of the multiplexed streams in cases of lost/dropped packets and retransmission/reassembly. The full solution is to run HTTP/2.0 over UDP, as Google implemented with QUIC.

Additional features of HTTP/2.0

  • Builtin compression of HTTP headers
  • Server push
  • Pipelining of requests
  • Prioritization of requests

Load testing HTTP/2 with k6

When you make HTTP requests in k6, k6 automatically upgrades the connection to HTTP/2.0 if the server supports it, just like your web browser would.

To check what protocol was used for a particular request, refer to the proto property of the response object.

Check if protocol used for request is HTTP/2.0
1import http from 'k6/http';
2import { check, sleep } from 'k6';
3
4export default function () {
5 const res = http.get('https://test-api.k6.io/');
6 check(res, {
7 'protocol is HTTP/2': (r) => r.proto === 'HTTP/2.0',
8 });
9 sleep(1);
10}

To see the values that the r.proto field can have, refer to the documentation for k6 HTTP.