No matter if you’re using Express as your backend framework, or any other, it is important to know what’s happening under the hood. Knowing the performance of your application can be the link between success and failure. In this blog post, we will discuss how to write a performance profiler for your Express server.
When we talk about performance, the most important metrics to check are request latency and throughput. They are the two primary metrics that determine the performance of your site.
HTTP request latency is a measure of the time taken for the server to process a request and respond with the requested data. Throughput on the other hand, is a measure of the amount of requests that the server can handle at once.
Request latency is affected largely by the overhead of creating a request object, parsing the routes and looking for the corresponding route handler. To measure it, we can use the hrtime function, which provides us with the time in nanoseconds since system boot.
const startTime = proces.hrtime(); // Perform some operations const endTime = process.hrtime(startTime); const timeTaken = endTime[0] * 1000 + endTime[1] / 1000000; // in milliseconds
We can then store this value as the request latency of that particular request.
Another way to measure the performance of your server is to measure the throughput. This can be done using the node-rate-limiter, which allows you to measure the number of requests the server can handle.
const limiter = require('node-rate-limiter'); limiter.start(function(numReqs) { console.log('The server can handle ' + numReqs ' requests'); });
Using this, you can measure the total throughput of the server over a certain period of time and use that to fine-tune your application.
That is about it for performance profiling your Express server. As you can see, it is quite simple to do, and with these metrics, you can ensure that your server is capable of handling a large workload with low latency.