-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Include "connection reset by peer" errors in the summary #527
Comments
I think Vegeta does continue as you expect, but sending 500 requests that return immediately because they fail to establish a connection takes very little time. |
The reason I think Vegeta does not continue is that the total count of requests does not match |
Here's a result demonstrating this:
|
Interesting. Did you omit stack traces? Can you show those?
Sent via Superhuman iOS ( https://sprh.mn/?vip=tsenart@gmail.com )
…On Sun, Jul 12 2020 at 10:01 AM, Yonatan Goldschmidt < ***@***.*** > wrote:
Here's a result demonstrating this: echo 'GET http://localhost:8000/' |
./vegeta attack -duration 5s -rate 100
stacktraces...
...
...
Requests [total, rate, throughput]
178, 100.56, 47.04
Duration [total, attack, wait] 3.657s,
1.77s, 1.887s
Latencies [min, mean, 50, 90, 95, 99, max] 485.427_s,
65.066ms, 640.125_s, 846.552_s, 1.181ms, 1.924s, 1.936s
Bytes In
[total, mean] 197456, 1109.30
Bytes Out [total,
mean] 0, 0.00
Success [ratio]
96.63%
Status Codes [code:count] 0:6 200:172
Error Set:
Get "http://localhost:8000/": read tcp
127.0.0.1:55655->127.0.0.1:8000: read: connection reset by peer
Get
"http://localhost:8000/": read tcp 127.0.0.1:50491->127.0.0.1:8000: read:
connection reset by peer
Get "http://localhost:8000/": read tcp
127.0.0.1:34533->127.0.0.1:8000: read: connection reset by peer
Get
"http://localhost:8000/": read tcp 127.0.0.1:52321->127.0.0.1:8000: read:
connection reset by peer
Get "http://localhost:8000/": read tcp
127.0.0.1:39267->127.0.0.1:8000: read: connection reset by peer
Get
"http://localhost:8000/": read tcp 127.0.0.1:32869->127.0.0.1:8000: read:
connection reset by peer
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub (
#527 (comment) ) , or
unsubscribe (
https://github.com/notifications/unsubscribe-auth/AAAQPDZLYSVHHFE5P452CQLR3FUUPANCNFSM4OQ4FF3Q
).
|
There are tons of goroutines -> tons of stack traces, and there are many that are actually different... I spent some time looking at some of them, also looked in the code and I see it should handle So... I reached the top of the very long error message printed by Go, to find this bit first:
Sigh. Very unexpected that Go needs so much My Thanks, and sorry for the misleading bug report. I'm closing this but still thinking it's a good idea to improve Go-runtime related errors :) |
Proposal
Vegeta should not stop on
read tcp ... read: connection reset by peer
errors, but continue and include them in the final summary.Background
I'm trying to use Vegeta to test the downtime effect of an application restart. If I run
while the app is not listening, I'll get
as expected. But if the app is running when Vegeta is started, and I quickly kill the app and restart it, Vegeta stops when its existing connections receive
ECONNRESET
, and prints a set ofGet "http://localhost:8080/": read tcp ... read: connection reset by peer
. If I reset the app nicely (not killing any already-open connections) then nothing bad happens (only a few "connection refused" errors during the downtime).I'd expect it to "catch" the errors, include them in the summary and continue. I think it already includes those errors in the summary, but it still bails out and prints a bunch of stacktraces. Just like Vegeta counts "connection refused" errors and continues on, it should count "connection reset" errors and continue on.
Workarounds
Didn't think of any currently.
The text was updated successfully, but these errors were encountered: