All Projects → condy0919 → moros

condy0919 / moros

Licence: MIT license
A modern http(s) benchmark tool

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to moros

httpit
A rapid http(s) benchmark tool written in Go
Stars: ✭ 156 (+1014.29%)
Mutual labels:  benchmark, https
Agoo
A High Performance HTTP Server for Ruby
Stars: ✭ 679 (+4750%)
Mutual labels:  benchmark, https
Awesome Http Benchmark
HTTP(S) benchmark tools, testing/debugging, & restAPI (RESTful)
Stars: ✭ 2,236 (+15871.43%)
Mutual labels:  benchmark, https
hurl
http(s)+h2 server load tester
Stars: ✭ 143 (+921.43%)
Mutual labels:  https
websegura
Analizamos y mostramos seguridad HTTPS de sitios web públicos, como medida para visualizar aquellos que pueden suponer un riesgo para sus usuarios.
Stars: ✭ 27 (+92.86%)
Mutual labels:  https
Atomic
An android restful api/networking library using okhttp library as backbone.
Stars: ✭ 13 (-7.14%)
Mutual labels:  https
dnstrace
Command-line DNS benchmark
Stars: ✭ 68 (+385.71%)
Mutual labels:  benchmark
react-redux-passport-uikit-express-boiler
A React+Redux boilerplate using Express as backend, UIKit for frontend, MongoDB for storage & Passport for auth.
Stars: ✭ 59 (+321.43%)
Mutual labels:  https
network exporter
ICMP & MTR & TCP Port & HTTP Get - Network Prometheus exporter
Stars: ✭ 162 (+1057.14%)
Mutual labels:  https
springboot-rest-api-angularjs-https
REST API https with Spring Boot and Angular JS. Use MySQL, Hibernate and Spring Security.
Stars: ✭ 38 (+171.43%)
Mutual labels:  https
webhook-tunnel
A little HTTP proxy suitable to create tunnels for webhook endpoints protected behind a firewall or a VPN
Stars: ✭ 63 (+350%)
Mutual labels:  https
tlsassistant
Fully-featured tool that combines state-of-the-art TLS analyzers with a report system that suggests appropriate mitigations and shows the full set of viable attacks.
Stars: ✭ 24 (+71.43%)
Mutual labels:  https
libmicrohttpd-http2
HTTP/2 support for libmicrohttpd
Stars: ✭ 21 (+50%)
Mutual labels:  https
aio-doh
Asynchronous DNS-over-HTTPS client for Python
Stars: ✭ 14 (+0%)
Mutual labels:  https
docker-letsencrypt-django-nginx-proxy-uwsgi-postgres
Docker + Letsencrypt + Django + Nginx-Proxy + uWSGI 教學
Stars: ✭ 26 (+85.71%)
Mutual labels:  https
tipi
Tipi - the All-in-one Web Server for Ruby Apps
Stars: ✭ 214 (+1428.57%)
Mutual labels:  https
azure-relay
☁️ Azure Relay service issue tracking and samples
Stars: ✭ 81 (+478.57%)
Mutual labels:  https
ez-s
⚠️ [discontinued] Run a green-badge local HTTPS server with zero configuration; no certificate creation, no tunnels and no hassle.
Stars: ✭ 10 (-28.57%)
Mutual labels:  https
azure-relay-dotnet
☁️ .NET Standard client library for Azure Relay Hybrid Connections
Stars: ✭ 35 (+150%)
Mutual labels:  https
min
A decorator web framework for deno
Stars: ✭ 21 (+50%)
Mutual labels:  https
CI Host OS Build Status
CircleCi Debian 9 CircleCI

moros

moros is a modern HTTP benchmark tool capable of generating significant load even when using single thread.

An optional plugin(using shared library) can perform HTTP request generating, response processing and more on.

Basic

moros http://localhost/a.zip

This runs a benchmark with the following default setting:

threads:        1
connections:    10
duration:       10s
timeout:        2s

Output:

Running 10s test @ http://localhost/a.zip
  1 thread(s) and 10 connection(s) each
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency      0ms        0ms     5ms     99.9979%
    Req/Sec   46.53K      3.23K  51.17K          61%
  473743 requests in 10s, 3.72GB read
Requests/sec: 47374.3
Transfer/sec: 380.56MB

Command Line Options

-p, --plugin:       Load plugin
-H, --Header:       HTTP header
-t, --threads:      The number of HTTP benchers
-c, --connections:  The number of HTTP connections per bencher
-d, --duration:     Duration of the benchmark
-T, --timeout:      Mark HTTP request timeouted if HTTP response is not
                    received within this amount of time
-l, --latency:      Print latency distribution

Tips

Make sure file descriptors is enough. Use ulimit -n unlimitedto handle this.

Installation

Arch Linux

yay -S moros-git

The other can build from source.

morosdepends onboost.program_optionsandopenssllibrary.

Install these 2 packages first.

git clone https://github.com/condy0919/moros

cd moros
git submodule update --init --recursive # nodejs/http-parser

cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build

Themorosbinary will be placed in moros/bin/.

Plugin Interface

  • setup()

    setup begins before the target address has been resolved and all benchers uninitialized.

  • init()

    init begins after each bencher initialized.

  • request(schema, host, port, serivce, query_string, headers[])

    request generates a new HTTP request each time, which is expensive.

    Generating lots of HTTP requests one time and amortizing the cost is a good solution.

  • response(status, headers[], body, body_len)

    response is called with HTTP response status, headers[], body.

    In default, only status is valid.

    Making want_response_headers and want_response_body symbols

    visible in plugin to process headers and body.

  • summary()

    summary can report some data collected in above functions.

TODO

  • follow 302
  • async dns resolve
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].