Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions frameworks/morojs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MoroJS on its native HTTP engine, clustered by the framework itself.

- **Language:** JavaScript
- **Runtime:** Node.js 26
- **Framework:** [MoroJS 1.8](https://github.com/Moro-JS/moro) on `@morojs/engine` 1.1.16, its own native HTTP engine
- **Framework:** [MoroJS 1.8](https://github.com/Moro-JS/moro) on `@morojs/engine` 1.1.17, its own native HTTP engine
- **Build:** Multi-stage on `node:26.13-trixie-slim` (pinned by minor: the compression middleware's reused
brotli encoder needs Node 26.11 or later, and the bench host builds against whatever `node:26` it
has cached); the engine ships prebuilt binaries, so no toolchain
Expand Down Expand Up @@ -66,7 +66,11 @@ MoroJS on its native HTTP engine, clustered by the framework itself.
- `json-tls`, `static-tls` and `8gbit` listen on `8081` behind the engine's own TLS listener
(TLS 1.3, ALPN `http/1.1`), when `/certs/server.crt` and `/certs/server.key` are mounted. Moro
locks one configuration per process, so that listener is a second process running the same file
with `MORO_ROLE=tls`, clustered the same way; it is not started when the certificates are absent.
with `MORO_ROLE=tls`, clustered the same way; it is not started when the certificates are absent. The
engine terminates TLS on its own OpenSSL BIOs (1.1.17): one copy in, ciphertext appended straight
into the buffer it sends from, and a body over 8 KiB encrypted from the caller's bytes rather than
copied behind the head first. Measured at one worker on these three request mixes, CPU per request
fell by a fifth on the static files, a seventh on the JSON bodies and a sixth on the 100 KB echo.
- `tls_check` is opted into: a third process of the same file (`MORO_ROLE=tlscheck`) listens on
`9000` reading `/certs-tls`, with `server.ssl.watch: true`, so a pair replaced on disk is
validated and swapped onto the running listener without a restart and without touching
Expand Down
2 changes: 1 addition & 1 deletion frameworks/morojs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "httparena-morojs",
"private": true,
"dependencies": {
"@morojs/moro": "^1.8.20",
"@morojs/moro": "^1.8.21",
"ejs": "^3.1.10",
"pg": "^8.16.3",
"redis": "^5.0.0"
Expand Down
48 changes: 24 additions & 24 deletions site/data/results/morojs.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@
"8gbit-512": {
"framework": "morojs",
"language": "JS",
"rps": 49365,
"avg_latency": "108.7us",
"p99_latency": "157.0us",
"cpu": "323.7%",
"rps": 49301,
"avg_latency": "110.8us",
"p99_latency": "141.0us",
"cpu": "298.7%",
"memory": "9.3GiB",
"connections": 512,
"threads": 64,
"duration": "5s",
"pipeline": 1,
"bandwidth": "511.37MB/s",
"input_bw": "482.08MB/s",
"bandwidth": "510.71MB/s",
"input_bw": "481.46MB/s",
"reconnects": 0,
"status_2xx": 246889,
"status_2xx": 246579,
"status_3xx": 0,
"status_4xx": 0,
"status_5xx": 0,
"cpu_usec": 17507161,
"cpu_per_req_us": 70.9111,
"cpu_usec": 16278174,
"cpu_per_req_us": 66.0161,
"target_rate": 50000,
"rate_ratio": 0.9873,
"p99_9_latency": "2785.0us"
"rate_ratio": 0.986,
"p99_9_latency": "7434.0us"
},
"async-32000": {
"framework": "morojs",
Expand Down Expand Up @@ -529,18 +529,18 @@
"json-tls-4096": {
"framework": "morojs",
"language": "JS",
"rps": 925942,
"avg_latency": "4.40ms",
"p99_latency": "46.70ms",
"cpu": "6611.1%",
"memory": "9.1GiB",
"rps": 1045809,
"avg_latency": "3.89ms",
"p99_latency": "42.10ms",
"cpu": "6580.6%",
"memory": "8.9GiB",
"connections": 4096,
"threads": 64,
"duration": "5s",
"pipeline": 1,
"bandwidth": "3.13GB",
"bandwidth": "3.53GB",
"reconnects": 0,
"status_2xx": 4721874,
"status_2xx": 5333484,
"status_3xx": 0,
"status_4xx": 0,
"status_5xx": 0
Expand Down Expand Up @@ -745,18 +745,18 @@
"static-tls-1024": {
"framework": "morojs",
"language": "JS",
"rps": 364052,
"avg_latency": "2.88ms",
"p99_latency": "31.04ms",
"cpu": "6433.8%",
"rps": 781829,
"avg_latency": "1.31ms",
"p99_latency": "18.52ms",
"cpu": "6533.2%",
"memory": "8.6GiB",
"connections": 1024,
"threads": 64,
"duration": "5s",
"pipeline": 1,
"bandwidth": "5.61GB",
"bandwidth": "12.04GB",
"reconnects": 0,
"status_2xx": 1856620,
"status_2xx": 3986968,
"status_3xx": 0,
"status_4xx": 0,
"status_5xx": 0
Expand Down