Perfomance regression node 16.20.0 -> 18.16.0
Open
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 399
- Forks
- 11
- Avg merge
- 29m
- Merged PRs (30d)
- 1
Description
Running a simple HTTP graphql server and following the guide https://nodejs.org/en/docs/guides/simple-profiling
- What factors or changes could be taken into consideration to account for this perfomance regression?
- Internal profilings show no significant difference and its mostly notable on request/response times
------------- NODE 16----------------
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Finished 250 requests
Server Software:
Server Hostname: localhost
Server Port: 3100
Document Path: /graphql
Document Length: 34 bytes
Concurrency Level: 20
Time taken for tests: 3.203 seconds
Complete requests: 250
Failed requests: 0
Keep-Alive requests: 250
Total transferred: 75000 bytes
Total body sent: 367750
HTML transferred: 8500 bytes
Requests per second: 78.06 [#/sec] (mean)
Time per request: 256.227 [ms] (mean)
Time per request: 12.811 [ms] (mean, across all concurrent requests)
Transfer rate: 22.87 [Kbytes/sec] received
112.13 kb/s sent
135.00 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 186 224 60.2 208 451
Waiting: 186 224 60.2 208 451
Total: 186 224 60.4 208 452
Percentage of the requests served within a certain time (ms)
50% 208
66% 213
75% 215
80% 217
90% 224
95% 424
98% 440
99% 447
100% 452 (longest request)
-------------NODE 18----------------
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Finished 250 requests
Server Software:
Server Hostname: localhost
Server Port: 3100
Document Path: /graphql
Document Length: 34 bytes
Concurrency Level: 20
Time taken for tests: 29.894 seconds
Complete requests: 250
Failed requests: 0
Keep-Alive requests: 250
Total transferred: 75000 bytes
Total body sent: 367750
HTML transferred: 8500 bytes
Requests per second: 8.36 [#/sec] (mean)
Time per request: 2391.480 [ms] (mean)
Time per request: 119.574 [ms] (mean, across all concurrent requests)
Transfer rate: 2.45 [Kbytes/sec] received
12.01 kb/s sent
14.46 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 191 345 1682.1 219 26814
Waiting: 191 345 1682.0 219 26813
Total: 191 345 1682.1 219 26814
Percentage of the requests served within a certain time (ms)
50% 219
66% 226
75% 229
80% 235
90% 257
95% 470
98% 473
99% 473
100% 26814 (longest request)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Node.js simple profiling guide and reproduce the ApacheBench comparison against the /graphql endpoint on Node 16.20.0 and 18.16.0. Compare request/response timings with the reported profiling results; done means identifying a reproducible regression or documenting which environmental or configuration factors account for it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- graphql, node.js
- Domain
- api, backend, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100