简体   繁体   中英

Why are clinic.js and Autocannon returning 0 2xx responses, 36164 non 2xx responses?

I've a nodejs webservice, which I want to use clinic.js to analyze it's performance ans find bottlenecks.

So when I issue this command:

clinic doctor --on-port 'autocannon localhost:$PORT --connections 5 -m "POST" -i my-data.json -H "Authorization":"Bearer xxx" ' -- node ./dist/custom/index.js

I get the next logs:

Running 10s test @ http://localhost:443
5 connections

┌─────────┬──────┬──────┬───────┬──────┬──────┬───────┬──────┐
│ Stat    │ 2.5% │ 50%  │ 97.5% │ 99%  │ Avg  │ Stdev │ Max  │
├─────────┼──────┼──────┼───────┼──────┼──────┼───────┼──────┤
│ Latency │ 0 ms │ 0 ms │ 0 ms  │ 0 ms │ 0 ms │ 0 ms  │ 0 ms │
└─────────┴──────┴──────┴───────┴──────┴──────┴───────┴──────┘
┌───────────┬─────┬──────┬─────┬───────┬─────┬───────┬─────┐
│ Stat      │ 1%  │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────┼──────┼─────┼───────┼─────┼───────┼─────┤
│ Req/Sec   │ 0   │ 0    │ 0   │ 0     │ 0   │ 0     │ 0   │
├───────────┼─────┼──────┼─────┼───────┼─────┼───────┼─────┤
│ Bytes/Sec │ 0 B │ 0 B  │ 0 B │ 0 B   │ 0 B │ 0 B   │ 0 B │
└───────────┴─────┴──────┴─────┴───────┴─────┴───────┴─────┘

Req/Bytes counts sampled once per second.

63k requests in 11.01s, 0 B read
63k errors (0 timeouts)
USMCDANCN2Z76AB:172542_alexa_skills_template xzxqdy$ clinic doctor --on-port 'autocannon localhost:$PORT --connections 5 -m "POST" -i my-data.json -H "Authorization":"Bearer xxx" ' -- node ./dist/custom/index.js
Running 10s test @ http://localhost:443
5 connections

running [                    ] 0%
┌─────────┬──────┬──────┬───────┬──────┬─────────┬─────────┬───────┐
│ Stat    │ 2.5% │ 50%  │ 97.5% │ 99%  │ Avg     │ Stdev   │ Max   │
├─────────┼──────┼──────┼───────┼──────┼─────────┼─────────┼───────┤
│ Latency │ 1 ms │ 1 ms │ 2 ms  │ 3 ms │ 1.07 ms │ 0.48 ms │ 20 ms │
└─────────┴──────┴──────┴───────┴──────┴─────────┴─────────┴───────┘
┌───────────┬─────────┬─────────┬─────────┬─────────┬─────────┬────────┬─────────┐
│ Stat      │ 1%      │ 2.5%    │ 50%     │ 97.5%   │ Avg     │ Stdev  │ Min     │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┼─────────┤
│ Req/Sec   │ 2427    │ 2427    │ 3821    │ 3939    │ 3616.8  │ 440.53 │ 2427    │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┼─────────┤
│ Bytes/Sec │ 2.14 MB │ 2.14 MB │ 3.36 MB │ 3.47 MB │ 3.18 MB │ 388 kB │ 2.14 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴─────────┴────────┴─────────┘

Req/Bytes counts sampled once per second.

0 2xx responses, 36164 non 2xx responses
36k requests in 10.01s, 31.8 MB read
Analysing data
Generated HTML file is 

So why am I getting?: 0 2xx responses, 36164 non 2xx responses When I try it in postman with the same headers and body it returns 200.

Thanks in advance for your help

Greetings

I am having the same problem. It seems that the headers are not handled correctly when you run autocannon as an inner command. I tried many different syntaxes.

What worked for me though: Running node clinic doctor/flame and autocannon in separate terminals

First run in terminal A:

clinic doctor -- node ./dist/custom/index.js

In the second terminal B run:

autocannon localhost:<YourPort> --connections 5 -m "POST" -i my-data.json -H "Authorization":"Bearer xxx" 

As soon as autocannon has finished, go back to terminal A and end the clinic node process with CTRL+C. The data will be analyzed and the report printed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM