fiber-http

command module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2020 License: Apache-2.0 Imports: 17 Imported by: 0

README

fiber-http

A minimalist Golang web application for testing Opsani optimizations with high throughput, predictable performance, and metrics instrumentation.

Built with Fiber and FastHTTP.

Exposed endpoints

  • / - Returns a 200 (Ok) text/plain response of "move along, nothing to see here".
  • /metrics - Metrics in Prometheus format for scraping.
  • /cpu{?operations,duration} - Consume CPU resources for a given number of operations (fixed work), a given duration (fixed time), or whichever comes first. The operations query parameter is parsed as an unsigned integer with zero interpretted as unlimited and the duration parameter is parsed as a Golang Duration string. Default: operations=0&duration=100ms
  • /memory{?size} - Consume memory resources by allocating a byte array of the given size (in human readable byte string format). Default: size=10MB
  • /time{?duration} - Consume time by sleeping for the given duration (in Golang Duration string format). Default: duration=100ms
  • /request{?url} - Proxy an HTTP GET request to a URL and return the status code & message body retrieved..

The resource endpoints of cpu, memory, and time are useful for triggering the artificial consumption of resources for testing autoscale behaviors, error handling, response to latency, etc.

The request endpoint enables testing of service dependencies and can be reentrantly chained. For example, when running an instance locally on port 8480 a request made to http://localhost:8480/request?url=http://localhost:8480/time?duration=45ms would simulate an upstream service with a 45ms latency.

Instrumentation

The application includes support for instrumentation with metrics systems for testing optization with different measurement backends.

A Prometheus metrics endpoint is exposed at /metrics that can be scraped.

New Relic instrumentation can be activated by setting the NEW_RELIC_LICENSE_KEY environment variable to a valid New Relic license key. The middleware will activate and log a status message after initialization.

Set NEW_RELIC_APP_NAME to define the corresponding New Relic APM identifier (default: fiber-http).

Listening ports

By default, the server listens on HTTP port 8480 and HTTPS port 8843 (N + 8400). The port can be changed via the HTTP_PORT and HTTPS_PORT environment variables, respectively.

Initial memory allocation

An initial resident memory allocation be created by setting the INIT_MEMORY_SIZE environment variable (in human readable byte string format, e.g., 256MB).

Docker images

Docker images are published to Docker Hub.

$ docker pull opsani/fiber-http:latest

Tasks for working with the container image are in the Makefile.

License

Distributed under the terms of the Apache 2.0 license.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL