-
Notifications
You must be signed in to change notification settings - Fork 17
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
Upload test in Safari overloads buffer #44
Comments
Proposed solution: use a smaller maximum message size and a less aggressive send() loop that doesn't fill the buffer as quickly. |
Moving comment from another issue to this one: Hey guys, just wanted to share some findings on this issue. For some background, we've been using ndt for speedtests for a little over a year. We forked the ndt7-js client to add some custom logic. We noticed that ndt7 seemed to fail on safari so, until now, our solution has been to run the ndt5 client for safari and ndt7 for all non-safari. Recently we had some extra dev time so we tried to figure out why ndt5 seemed to work fine on safari and ndt7 seemed to fail. I'll echo some of the above but here's what we were able to discover:
These 3 behaviors seem to create the perfect storm for Safari. The adaptive message size quickly increases the payload size because We are still doing additional validation to confirm our fix, but its shown some success so far. We don't want to create lots of extra conditions by turning adaptive message sizes on or off, so instead we've adapted the upload worker to take in a config with an override for maxMessageSize. This essentially makes the change in upload worker limited to a single line The client consuming the NDT7-js package should determine whether it is being run on safari. If it is, it should pass in a maxMessageSizeOverride that its comfortable with (we are experimenting with 1MB), otherwise it can pass in no config and rely on 16MB maxMessageSize. We are still trying to perform some additional tests on slower connections to determine if the 1MB max size is sufficient to prevent early terminations but we had lots of success with NDT5 (which sends constant 1MB payloads) and hope this will allow the ndt7 client to run on all browsers. Additionally, because |
Symptoms: Client crashes just after the beginning of the upload test
Observations:
bufferedAmount isn't updated immediately after a sock.send() and thus causes:
The text was updated successfully, but these errors were encountered: