-
Notifications
You must be signed in to change notification settings - Fork 6
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
Set default wait time to 0 (no wait) to enqueue tcp events #27
base: main
Are you sure you want to change the base?
Conversation
8e21c1d
to
a049251
Compare
@me-no-dev @vortigont fyi ;-) |
a049251
to
8521c8f
Compare
and more about autocannon - it is a very strange tool indeed
Looks like it completely ignores the integrity of a reply at all. Here it reports |
@vortigont : yes this one is not done to test request results. it is done for perf test (req / sec) and mostly assume the com stack works OK. you can addd |
- Add logs for pcb was closed before reaching LwIP task
just for the history - after many tests I've found that if LWIP is block-waiting on a full queue to enqueue a new event in that time the AsyncTCP task is also blocks on a very basic things like serving SENT/RECV event, even when callback code is very simple and does not delay executions. I.e., yes it leaves us no choice but to use |
8521c8f
to
127eeac
Compare
127eeac
to
13c3fcc
Compare
Added a check to prevent accepting if the queue is nearly full, to test the behaviour. Lines 1646 to 1649 in 13c3fcc
Baseline: 16 conc. req 10 sec ![]() 32 concur req 10 sec ![]() slow chunk request + autocannon (poll event coalescing and throthling)
![]() slow onBody handler + autocannon (test pause in request parsing)
![]() slow chunk callback + slow onBody parsing
![]() slow request is aborted. I am running with |
This PR is based on #24.
The added commit in this PR:
Currently in main, the WD is triggered in case of a slow onBody callback, in the similar way it was problematic with the chunk callback.
This can be reproduced with the PerfTest in main, doing:
autocannon -c 32 -w 32 -a 96 -t 30 --renderStatusCodes -m POST -H "Content-Type: application/json" -b '{"foo": "bar"}' http://192.168.4.1/delay
curl -v http://192.168.4.1
In main, this crashes quickly with:
With this PR, it does not crash anymore. Both autocannon and the curl request can complete (autocannon requests are dropped) because of connection timeouts
And the curl request finishes.
There is also no memory leak and the WD does not trigger.