diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md new file mode 100644 index 0000000000..710d54fcf6 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md @@ -0,0 +1,61 @@ +--- +title: Deploy Envoy on Google Axion processors + +draft: true +cascade: + draft: true + +minutes_to_complete: 30 + +who_is_this_for: This introductory topic is for software developers interested in migrating their Envoy workloads from x86_64 platforms to Arm-based platforms, specifically on Google Axion–based C4A virtual machines. + +learning_objectives: + - Start an Arm virtual machine on Google Cloud Platform (GCP) using the C4A Google Axion instance family with RHEL 9 as the base image + - Install and configure Envoy on Arm-based GCP C4A instances + - Validate Envoy functionality through baseline testing + - Benchmark Envoy performance on Arm + +prerequisites: + - A [Google Cloud Platform (GCP)](https://cloud.google.com/free?utm_source=google&hl=en) account with billing enabled + - Familiarity with networking concepts and the [Envoy architecture](https://www.envoyproxy.io/docs/envoy/latest/). + +author: Pareena Verma + +##### Tags +skilllevels: Advanced +subjects: Web +cloud_service_providers: Google Cloud + +armips: + - Neoverse + +tools_software_languages: + - Envoy + - Siege + +operatingsystems: + - Linux + +# ================================================================================ +# FIXED, DO NOT MODIFY +# ================================================================================ +further_reading: + - resource: + title: Google Cloud official documentation + link: https://cloud.google.com/docs + type: documentation + + - resource: + title: Envoy documentation + link: https://www.envoyproxy.io/docs/envoy/latest/about_docs + type: documentation + + - resource: + title: The official documentation for Siege + link: https://www.joedog.org/siege-manual/ + type: documentation + +weight: 1 # _index.md always has weight of 1 to order correctly +layout: "learningpathall" # All files under learning paths have this same wrapper +learning_path_main_page: "yes" # Indicates this should be surfaced when looking for related content. Only set for _index.md of learning path content. +--- diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_next-steps.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_next-steps.md new file mode 100644 index 0000000000..c3db0de5a2 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_next-steps.md @@ -0,0 +1,8 @@ +--- +# ================================================================================ +# FIXED, DO NOT MODIFY THIS FILE +# ================================================================================ +weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation. +title: "Next Steps" # Always the same, html page title. +layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing. +--- diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/background.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/background.md new file mode 100644 index 0000000000..97dafae372 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/background.md @@ -0,0 +1,23 @@ +--- +title: Getting started with Envoy on Google Axion C4A (Arm Neoverse-V2) + +weight: 2 + +layout: "learningpathall" +--- + +## Google Axion C4A Arm instances in Google Cloud + +Google Axion C4A is a family of Arm-based virtual machines built on Google’s custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications. + +The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud. + +To learn more about Google Axion, refer to the [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu) blog. + +## Envoy for service proxying and traffic management on Arm + +Envoy is an open-source, high-performance edge and service proxy designed for cloud-native applications. + +It handles service-to-service communication, traffic routing, load balancing, and observability, making microservices more reliable and secure. + +Envoy is widely used in service meshes, API gateways, and modern cloud environments. Learn more from the [Envoy official website](https://www.envoyproxy.io/) and its [official documentation](https://www.envoyproxy.io/docs/envoy/latest/). diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/baseline-testing.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/baseline-testing.md new file mode 100644 index 0000000000..16b53ba8c6 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/baseline-testing.md @@ -0,0 +1,141 @@ +--- +title: Envoy baseline testing on Google Axion C4A Arm Virtual machine +weight: 5 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + + +Since Envoy is installed successfully on your GCP C4A Arm virtual machine, follow these steps to validate that the Envoy is running. + +## Validate Envoy installation with a baseline test + +In this section, we covered how to create a minimal Envoy config, start Envoy with it, and verify functionality using `curl`. +The test confirmed that Envoy listens on port **10000**, forwards requests to `httpbin.org`, and returns a successful **200 OK** response. + +### Create a Minimal Configuration File + +Using a file editor of your choice, create a file named `envoy_config.yaml`, and add the below content to it. This file configures Envoy to listen on port **10000** and forward all traffic to `http://httpbin.org`. The host_rewrite_literal is essential to prevent 404 Not Found errors from the upstream server. + +```YAML +static_resources: + listeners: + - name: listener_0 + address: + socket_address: + protocol: TCP + address: 0.0.0.0 + port_value: 10000 + filter_chains: + - filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: ingress_http + route_config: + name: local_route + virtual_hosts: + - name: backend + domains: ["*"] + routes: + - match: + prefix: "/" + route: + cluster: service_httpbin + host_rewrite_literal: httpbin.org + http_filters: + - name: envoy.filters.http.router + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + clusters: + - name: service_httpbin + connect_timeout: 0.5s + type: LOGICAL_DNS + dns_lookup_family: V4_ONLY + lb_policy: ROUND_ROBIN + load_assignment: + cluster_name: service_httpbin + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: httpbin.org + port_value: 80 +``` +- **Listeners:** Envoy is configured to accept incoming HTTP requests on port **10000** of your VM. +- **HTTP Connection Manager:** A filter processes the incoming requests, directing them to the appropriate backend. +- **Routing:** All traffic is routed to the `service_httpbin` cluster, with the `Host` header rewritten to `httpbin.org`. +- **Clusters:** The `service_httpbin` cluster defines the upstream service as `httpbin.org` on port **80**, which is where requests are ultimately forwarded. + +### Run and Test Envoy + +This is the final phase of functional validation, confirming that the proxy is operational. +Start the Envoy proxy using your configuration file. This command will keep the terminal occupied, so you will need a new terminal for the next step. + +```console + envoy -c envoy_config.yaml --base-id 1 +``` +The output should look similar to: + +```output +[2025-08-21 11:53:51.597][67137][info][config] [source/server/configuration_impl.cc:138] loading 1 listener(s) +[2025-08-21 11:53:51.597][67137][info][config] [source/server/configuration_impl.cc:154] loading stats configuration +[2025-08-21 11:53:51.598][67137][warning][main] [source/server/server.cc:928] There is no configured limit to the number of allowed active downstream connections. Configure a limit in `envoy.resource_monitors.downstream_connections` resource monitor. +[2025-08-21 11:53:51.598][67137][info][main] [source/server/server.cc:969] starting main dispatch loop +[2025-08-21 11:53:51.599][67137][info][runtime] [source/common/runtime/runtime_impl.cc:614] RTDS has finished initialization +[2025-08-21 11:53:51.599][67137][info][upstream] [source/common/upstream/cluster_manager_impl.cc:240] cm init: all clusters initialized +[2025-08-21 11:53:51.599][67137][info][main] [source/server/server.cc:950] all clusters initialized. initializing init manager +[2025-08-21 11:53:51.599][67137][info][config] [source/common/listener_manager/listener_manager_impl.cc:930] all dependencies initialized. starting workers +``` + +Now, **Send a test request** from another terminal window to the Envoy listener using `curl`. + +```console +curl -v http://localhost:10000/get +``` +The `-v` flag provides verbose output, showing the full request and response headers. A successful test will show a **HTTP/1.1 200 OK** response with a JSON body from httpbin.org. + +The output should look similar to: + +```output +* Trying 127.0.0.1:10000... +* Connected to 127.0.0.1 (127.0.0.1) port 10000 (#0) +> GET /get HTTP/1.1 +> Host: 127.0.0.1:10000 +> User-Agent: curl/7.76.1 +> Accept: */* +> +* Mark bundle as not supporting multiuse +< HTTP/1.1 200 OK +< date: Fri, 22 Aug 2025 11:20:35 GMT +< content-type: application/json +< content-length: 301 +< server: envoy +< access-control-allow-origin: * +< access-control-allow-credentials: true +< x-envoy-upstream-service-time: 1042 +< +{ + "args": {}, + "headers": { + "Accept": "*/*", + "Host": "httpbin.org", + "User-Agent": "curl/7.76.1", + "X-Amzn-Trace-Id": "Root=1-68a85282-10af9cfe0385774600509ddd", + "X-Envoy-Expected-Rq-Timeout-Ms": "15000" + }, + "origin": "34.63.220.63", + "url": "http://httpbin.org/get" +} +* Connection #0 to host 127.0.0.1 left intact +``` +#### Summary of the curl Output + +- **Successful Connection:** The **curl** command successfully connected to the Envoy proxy on **localhost:10000**. +- **Correct Status Code:** Envoy successfully forwarded the request and received a healthy **200 OK** response from the upstream server. +- **Host Header Rewrite:** The **Host** header was correctly rewritten from **localhost:10000** to **httpbin.org** as defined in the configuration. +- **End-to-End Success:** The proxy is fully operational, proving that requests are correctly received, processed, and forwarded to the intended backend. + +This confirms the end-to-end flow is working correctly. diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/benchmarking.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/benchmarking.md new file mode 100644 index 0000000000..530ee5ce12 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/benchmarking.md @@ -0,0 +1,1163 @@ +--- +title: Envoy performance benchmarks on Arm64 and x86_64 in Google Cloud +weight: 6 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## How to run Envoy benchmarks with Siege on Arm64 in GCP + +**Siege** is a lightweight HTTP load testing and benchmarking tool that simulates concurrent users making requests to a target service. It is useful for **Envoy benchmarking** because it measures availability, throughput, response time, and failure rates under load—helping evaluate Envoy’s performance as a proxy under real-world traffic conditions. + +Follow the steps outlined to run Envoy benchmarks using the Siege. +### Install Siege(Build from Source) + +1. Install required build tools + +```console +sudo dnf groupinstall -y "Development Tools" +sudo dnf install -y wget make gcc +``` +2. Download, extract and build Siege source + +```console +wget http://download.joedog.org/siege/siege-4.1.6.tar.gz +tar -xvzf siege-4.1.6.tar.gz +cd siege-4.1.6 +./configure +make +sudo make install +``` +These commands prepare Siege for your system, build (compile) it, and then install it so you can run it from anywhere. + +3. Verify installation + +```console +siege --version +``` +This checks if Siege is installed properly and shows the version number. +```output +SIEGE 4.1.6 + +Copyright (C) 2023 by Jeffrey Fulmer, et al. +This is free software; see the source for copying conditions. +There is NO warranty; not even for MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. +``` +### Envoy Benchmarking + +1. Ensure Envoy is Running + +To make sure your Envoy proxy is up with your config file (listening on port 10000 for example): + +```console +envoy -c envoy_config.yaml --base-id 1 +``` +This runs the Envoy proxy with your configuration file (envoy_config.yaml) so it can start listening for requests. + +2. Verify with curl from the another terminal: + +``` +curl -v http://127.0.0.1:10000/get +``` +Running from another terminal returns a **200 OK** status, confirming that Envoy is running and successfully proxying requests. + +3. Run a Time-based Load Test + +Benchmark for a fixed time instead of request count: + +```console +siege -c30 -t10S http://127.0.0.1:10000/get +``` +This runs a load test where 30 users hit Envoy continuously for 10 seconds. After this, Siege will show performance results. + +The output should look similar to: + +```output +** SIEGE 4.1.6 +** Preparing 30 concurrent users for battle. +The server is now under siege... +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.17 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.21 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.35 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.19 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.45 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.42 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.55 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.30 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.68 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.27 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.56 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.47 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.40 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.86 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.92 secs: 383 bytes ==> GET /get +HTTP/1.1 502 0.07 secs: 122 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.29 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.77 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.79 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.24 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.80 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.99 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.74 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.38 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.44 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.43 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.21 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.68 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.95 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.91 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.17 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.19 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.38 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.87 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.26 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.61 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.40 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.42 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.52 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.52 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.37 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.61 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.96 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.47 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.83 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.65 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.88 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.59 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.41 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.21 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.55 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.90 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.70 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.98 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.64 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.30 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.22 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.43 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.70 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.42 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.79 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.15 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.67 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.59 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.69 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.86 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.55 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.43 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.15 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.55 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.58 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.63 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.27 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.45 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.67 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.43 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.27 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.15 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.12 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.63 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.58 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.65 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.98 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.63 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.21 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.00 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.11 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.49 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.11 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.38 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.41 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.60 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.82 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.89 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.38 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.51 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.80 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.44 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.63 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.37 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.61 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.83 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.49 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.22 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.19 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.52 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.63 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.19 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.19 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.80 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.68 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.80 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.83 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.29 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.49 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.58 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.19 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.43 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.45 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.15 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.29 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.58 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.75 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.60 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.68 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.11 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.78 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.96 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.41 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.29 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.47 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.42 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.75 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.84 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.60 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.95 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.59 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.12 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.76 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.15 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.84 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.50 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.11 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.76 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.56 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.69 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.68 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.56 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.58 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.64 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 502 0.36 secs: 122 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.12 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.69 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.49 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.79 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.78 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.69 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.72 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.40 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.62 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.93 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.59 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.17 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.43 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.51 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.11 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.29 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.75 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.64 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.15 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.84 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.58 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.54 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.59 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.93 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.93 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.51 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.96 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.44 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.89 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.60 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.44 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.35 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.74 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.24 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.42 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.09 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.12 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.23 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.21 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.56 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.92 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.68 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.16 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.34 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.27 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.65 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.18 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.25 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.66 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.36 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.47 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.59 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.40 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.22 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.17 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.74 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.32 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.06 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.24 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.69 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.35 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.83 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.67 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.55 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.60 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.73 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.28 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.56 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.73 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.33 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.12 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.78 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.57 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.61 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.49 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.90 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.13 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.26 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.45 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.98 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.10 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.27 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.45 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.74 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.31 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.39 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.48 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.99 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.26 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.12 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.80 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.67 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.37 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.07 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.26 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.21 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.38 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.64 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 2.89 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.20 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.04 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.08 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.64 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.46 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.51 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.61 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.35 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.91 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.35 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.91 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.05 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.53 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.51 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.37 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.02 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.42 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.03 secs: 383 bytes ==> GET /get +HTTP/1.1 200 1.17 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.81 secs: 383 bytes ==> GET /get +HTTP/1.1 200 0.14 secs: 383 bytes ==> GET /get + +Lifting the server siege... +Transactions: 1019 hits +Availability: 99.80 % +Elapsed time: 10.38 secs +Data transferred: 0.37 MB +Response time: 0.29 secs +Transaction rate: 98.17 trans/sec +Throughput: 0.04 MB/sec +Concurrency: 28.07 +Successful transactions: 1019 +Failed transactions: 2 +Longest transaction: 2.89 +Shortest transaction: 0.02 +``` + +### Understanding Envoy benchmark metrics and results with Siege + +- **Transactions**: Total number of completed requests during the benchmark. +- **Availability**: Percentage of requests that returned a successful response. +- **Elapsed Time**: Total time taken to run the benchmark test. +- **Data Transferred**: Total amount of data exchanged during the test. +- **Response Time**: Average time taken for the server to respond to each request. +- **Transaction Rate**: Number of requests processed per second. +- **Throughput**: Volume of data transferred per second. +- **Concurrency**: Average number of simultaneous connections maintained. +- **Successful Transactions**: Total number of requests completed successfully. +- **Failed Transactions**: Total number of requests that failed. +- **Longest Transaction**: Maximum response time observed for a single request. +- **Shortest Transaction**: Minimum response time observed for a single request. + +### Benchmark summary on x86_64: +The following benchmark results were collected by running the same benchmark on a c3-standard-4 (4 vCPU, 2 core, 16 GB Memory) x86_64 virtual machine in GCP, running RHEL 9. + +| Metric | Value | Metric | Value | +|-------------------------|--------------|---------------------------|-----------------| +| Transactions | 720 hits | Availability | 98.90 % | +| Elapsed time | 10.98 secs | Data transferred | 0.26 MB | +| Response time | 0.44 secs | Transaction rate | 65.57 trans/sec | +| Throughput | 0.02 MB/sec | Concurrency | 28.66 | +| Successful transactions | 720 | Failed transactions | 8 | +| Longest transaction | 4.63 secs | Shortest transaction | 0.02 secs | + +### Benchmark summary on Arm64: +Results from the earlier run on the c4a-standard-4 (4 vCPU, 16 GB memory) Arm64 VM in GCP (RHEL 9): + +| Metric | Value | Metric | Value | +|-------------------------|---------------|---------------------------|-----------------| +| Transactions | 1019 hits | Availability | 99.80 % | +| Elapsed time | 10.38 secs | Data transferred | 0.37 MB | +| Response time | 0.29 secs | Transaction rate | 98.17 trans/sec | +| Throughput | 0.04 MB/sec | Concurrency | 28.07 | +| Successful transactions | 1019 | Failed transactions | 2 | +| Longest transaction | 2.89 secs | Shortest transaction | 0.02 secs | + +### Envoy performance benchmarking comparison on Arm64 and x86_64 +When you compare the benchmarking results you will notice that on the Google Axion C4A Arm-based instances: + +- Achieved **1019 successful transactions** with only **2 failures**, ensuring **99.80%** availability. +- Delivered a strong **transaction rate of 98.17 trans/sec** and throughput of **0.04 MB/sec**. +- Maintained low **response times (0.29 secs average)**, with a shortest transaction of **0.02 secs**. +- Demonstrated **stable concurrency handling (28.07)** and controlled latency, with the longest transaction completing in **2.89 secs.** diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/deploy.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/deploy.md new file mode 100644 index 0000000000..72adb14d9f --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/deploy.md @@ -0,0 +1,57 @@ +--- +title: How to deploy Envoy on Google Axion C4A Arm virtual machines +weight: 4 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + + +## How to deploy Envoy on a Google Axion C4A Arm virtual machine +This guide shows you how to install Envoy Proxy v1.30.0 on a Google Cloud Axion C4A virtual machine running RHEL 9. You’ll install the basic tools, download the official static Arm64 Envoy binary, give it executable permissions, and check the version. By the end, Envoy will be installed and ready to use on your GCP virtual machine — without needing Docker or building from source. + +1. Install Dependencies + +```console +sudo dnf install -y \ + autoconf \ + curl \ + libtool \ + patch \ + python3 \ + python3-pip \ + unzip \ + git +pip3 install virtualenv +``` + +2. Install Envoy (Static Arm64 Binary) + +This step downloads and installs the Envoy binary. +Download the binary directly to **/usr/local/bin/envoy**. The `-L` flag is crucial as it follows any redirects from the download URL. + +```console +sudo curl -L \ + -o /usr/local/bin/envoy \ + https://github.com/envoyproxy/envoy/releases/download/v1.30.0/envoy-1.30.0-linux-aarch_64 +``` +Make it executable so the system can run the binary as a command. + +```console +sudo chmod +x /usr/local/bin/envoy +``` +Verify the installation by checking its version. + +```console +envoy --version +``` +This confirms the binary is correctly placed and executable. + +You should see an output similar to: + +```output +envoy version: 50ea83e602d5da162df89fd5798301e22f5540cf/1.30.0/Clean/RELEASE/BoringSSL +``` +This confirms the binary is correctly placed and executable. + +Envoy installation is complete. You can now proceed with the baseline testing ahead. diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/image1.png b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/image1.png new file mode 100644 index 0000000000..2a65bdcde8 Binary files /dev/null and b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/image1.png differ diff --git a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/instance.md b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/instance.md new file mode 100644 index 0000000000..aa39cf2bf1 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/instance.md @@ -0,0 +1,30 @@ +--- +title: How to create a Google Axion C4A Arm virtual machine on GCP +weight: 3 + +### FIXED, DO NOT MODIFY +layout: learningpathall +--- + +## How to create a Google Axion C4A Arm VM on Google Cloud + +In this section, you learn how to provision a **Google Axion C4A Arm virtual machine** on Google Cloud Platform (GCP) using the **c4a-standard-4 (4 vCPUs, 16 GB memory)** machine type in the **Google Cloud Console**. + +For background on GCP setup, see the Learning Path [Getting started with Google Cloud Platform](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/google/). + +### Create a Google Axion C4A Arm VM in Google Cloud Console + +To create a virtual machine based on the C4A Arm architecture: +1. Navigate to the [Google Cloud Console](https://console.cloud.google.com/). +2. Go to **Compute Engine > VM Instances** and select **Create Instance**. +3. Under **Machine configuration**: + - Enter details such as **Instance name**, **Region**, and **Zone**. + - Set **Series** to `C4A`. + - Select a machine type such as `c4a-standard-4`. + + ![Create a Google Axion C4A Arm virtual machine in the Google Cloud Console with c4a-standard-4 selected alt-text#center](./image1.png "Google Cloud Console – creating a Google Axion C4A Arm virtual machine") + +4. Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. + For this Learning Path, use **Red Hat Enterprise Linux 9**. Ensure you select the **Arm image** variant. Click **Select**. +5. Under **Networking**, enable **Allow HTTP traffic**. +6. Click **Create** to launch the instance.