This repo contains:
- a simple server that handles large payloads
- a script that uses
autocannon
to load test the server. - a
Dockerfile
that does the following:- clone the Node.js repository
- configure the pointer compression flag
- build the
node
binary
Three routes are exposed:
- one for processing large payloads
- one for generating large payloads
- one for retrieving v8 heap statistics
- Node.js
npm start
to start the servernpm run bench
to start autocannon
curl -X POST -H "Content-Type: application/json" -d '{"data": "your_large_payload_here"}' http://localhost:3000/large-payload
{
"message": "Payload processed successfully"
}
This route generates a large payload filled with 'A's and returns it as a base64-encoded string. The size of the generated payload can be specified using the size query parameter (in bytes).
curl http://localhost:3000/generate-large-payload?size=1024
{
"message": "Generated a large payload of size 1024 bytes",
"payload": "QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU"
}
This route calls v8.getHeapStatistics()
and returns the response.
curl http://localhost:3000/stats
{
"total_heap_size": 52191232,
"total_heap_size_executable": 786432,
"total_physical_size": 45961216,
"total_available_size": 4322552968,
"used_heap_size": 21825888,
"heap_size_limit": 4345298944,
"malloced_memory": 139368,
"peak_malloced_memory": 2957344,
"does_zap_garbage": 0,
"number_of_native_contexts": 1,
"number_of_detached_contexts": 0,
"total_global_handles_size": 8192,
"used_global_handles_size": 3424,
"external_memory": 1172400
}