Can we benchmark server with NGINX and Gatling

Can we benchmark local server with help of NGINX server and gatling.
scenario: NGINX running on local machine and I want to know how many HTTPS requests (transactions per second) the machine can perform.

Any help will be appreciated.

Yes, but generating the load using the same computer that hosts the system under test (your nginx) is seldom a good idea.

Hi Hakan,

Thanks for your reply.

As of now I just want to understand the integration part of Gatling with NGINX, so that I can see the GUI graphs.

I used to use ab client which gives me the numbers of HTTPS transactions, but gives digits.

I want to see how it scales in course of time in graphs.

any help how to config the gatling.conf so that it use 127.0.0.1:443 (on which NGINX is running) will be appreciated.

To a large extent, the HTML and JSON reports from Gatling provide the same type of values you’d get from Apache Bench, i.e response time percentiles compared to load.

The Gatling reports are generated after the simulation has completed. The JSON is quite terse while the HTML report will produce all sorts of interactive graphs by default, no configuration needed.

If you want to have pretty graphs in real-time it is possible (and very straight forward) to hook Gatling up to InfluxDB and Grafana. See https://gatling.io/docs/current/realtime_monitoring/

The Gatling reports are generated after the simulation has completed.

Considering this is the requirement. Ho can we use gatling to send HTTPS traffic to NGINX in order to see the HTTPS transactions after the simulation.

I cant figure it out.

Sorry, I missed the part about gatling.conf.

Gatling is not Apache Bench. Gatling doesn’t really generate random requests, you need to define the requests you want to make. The documentation is pretty clear on this, and the examples are pretty good.

Consider the very basic example script here: https://gatling.io/docs/current/quickstart/#gatling-scenario-explained
In the Scenario definition you have the request defined. You do not need to specify a baseURL in the httpProtocol configuration part, you can use something like this instead:

.exec(http(“https_request”).get(“https://127.0.0.1:443”))

In the setUp part of the example script you define the load.

Read the docs, find some basic examples (did BBC’s Gatling repo go private?) and best of luck.