Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
http input puma to netty rewrite
% siege -c 10 -t 5m http://127.0.0.1:8080
** SIEGE 4.0.4
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions: 4200822 hits
Availability: 100.00 %
Elapsed time: 299.37 secs
Data transferred: 8.01 MB
Response time: 0.00 secs
Transaction rate: 14032.21 trans/sec
Throughput: 0.03 MB/sec
Concurrency: 9.56
Successful transactions: 4200822
Failed transactions: 0
Longest transaction: 0.29
Shortest transaction: 0.00
/tmp/benchies/new/logstash-6.4.0 % bin/logstash -e "input { http { id => netty port => 8080 }} output {}"
Sending Logstash logs to /tmp/benchies/new/logstash-6.4.0/logs which is now configured via log4j2.properties
[2018-08-20T11:23:41,088][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2018-08-20T11:23:42,478][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"6.4.0"}
[2018-08-20T11:23:46,635][INFO ][logstash.pipeline ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
[2018-08-20T11:23:47,429][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x75e668ee run>"}
[2018-08-20T11:23:47,444][INFO ][logstash.inputs.http ] Starting http input listener {:address=>"0.0.0.0:8080", :ssl=>"false"}
[2018-08-20T11:23:47,560][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2018-08-20T11:23:48,059][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
% siege -c 10 -t 5m http://127.0.0.1:8081
** SIEGE 4.0.4
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions: 3308343 hits
Availability: 100.00 %
Elapsed time: 299.89 secs
Data transferred: 6.31 MB
Response time: 0.00 secs
Transaction rate: 11031.85 trans/sec
Throughput: 0.02 MB/sec
Concurrency: 4.67
Successful transactions: 3308298
Failed transactions: 0
Longest transaction: 0.33
Shortest transaction: 0.00
/tmp/benchies/old/logstash-6.4.0 % bin/logstash-plugin install --version "3.0.10" logstash-input-http
Validating logstash-input-http-3.0.10
Installing logstash-input-http
Installation successful
/tmp/benchies/old/logstash-6.4.0 % bin/logstash -e "input { http { id => puma port => 8081 }} output {}"
Sending Logstash logs to /tmp/benchies/old/logstash-6.4.0/logs which is now configured via log4j2.properties
[2018-08-20T11:23:53,969][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/tmp/benchies/old/logstash-6.4.0/data/queue"}
[2018-08-20T11:23:53,981][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/tmp/benchies/old/logstash-6.4.0/data/dead_letter_queue"}
[2018-08-20T11:23:54,124][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2018-08-20T11:23:54,176][INFO ][logstash.agent ] No persistent UUID file found. Generating new UUID {:uuid=>"58053e6e-e88a-4ec2-af67-9d16ceeb9754", :path=>"/tmp/benchies/old/logstash-6.4.0/data/uuid"}
[2018-08-20T11:23:54,840][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"6.4.0"}
[2018-08-20T11:23:56,759][INFO ][logstash.pipeline ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
[2018-08-20T11:23:57,067][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x5b197127 run>"}
[2018-08-20T11:23:57,148][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2018-08-20T11:23:57,438][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9601}
@jsvd

This comment has been minimized.

Copy link
Owner Author

jsvd commented Aug 20, 2018

This benchmark was run with logstash build candidate for 6.4.0

With older HTTP Input version 3.0.10 - 11031.85 trans/sec
With new HTTP Input version 3.2.0 - 14032.21 trans/sec

Overall improvement on basic http requests with empty payload: 21%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.