From dca085e50301d4cb3be0236e1220f6b30926dcd6 Mon Sep 17 00:00:00 2001 From: odidev Date: Mon, 25 Aug 2025 09:47:26 +0000 Subject: [PATCH 1/2] Deploy Envoy on Google Axion C4A Arm virtual machine Signed-off-by: odidev --- .../envoy-gcp/_index.md | 57 + .../envoy-gcp/_next-steps.md | 8 + .../envoy-gcp/background.md | 23 + .../envoy-gcp/baseline-testing.md | 141 ++ .../envoy-gcp/benchmarking.md | 1163 +++++++++++++++++ .../envoy-gcp/deploy.md | 57 + .../envoy-gcp/image1.png | Bin 0 -> 58872 bytes .../envoy-gcp/instance.md | 30 + 8 files changed, 1479 insertions(+) create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/_next-steps.md create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/background.md create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/baseline-testing.md create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/benchmarking.md create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/deploy.md create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/image1.png create mode 100644 content/learning-paths/servers-and-cloud-computing/envoy-gcp/instance.md 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..81bb86d21e --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md @@ -0,0 +1,57 @@ +--- +title: Deploy Envoy on Google Axion processors + +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 0000000000000000000000000000000000000000..2a65bdcde8f415dd4cd48a36d1e05a2081af1296 GIT binary patch literal 58872 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 literal 0 HcmV?d00001 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. From 1998ca59d8ae2c6245a93763bae53f6c67759af8 Mon Sep 17 00:00:00 2001 From: pareenaverma Date: Fri, 5 Sep 2025 19:19:30 -0400 Subject: [PATCH 2/2] Update _index.md --- .../servers-and-cloud-computing/envoy-gcp/_index.md | 4 ++++ 1 file changed, 4 insertions(+) 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 index 81bb86d21e..710d54fcf6 100644 --- a/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/envoy-gcp/_index.md @@ -1,5 +1,9 @@ --- title: Deploy Envoy on Google Axion processors + +draft: true +cascade: + draft: true minutes_to_complete: 30