-
Notifications
You must be signed in to change notification settings - Fork 912
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
Slow Subscriber over udp #697
Comments
You are experiencing loss. See the NAKs sent/received and retransmits. You can look in the loss report to see more details. |
Thanks for the tip. Can you recommend something to mitigate the loss? |
If you are going over the general Internet, you will probably want to use Cubic Congestion Control so that you share correctly with other TCP connections. This will probably not drastically increase the throughput, but may help slightly. It will definitely help other competing connections, though. Which can have other effects to make more effective use of resources in the path. If not doing congestion control, rate controlling the sending based rate to a known limit will reduce loss (as long as you pick a rate that can be maintained). Implementing a rate control is straight forward. Send some, wait for an interval, send some more, wait for an interval. etc. Beyond that, if it is a dedicated network and not the general Internet, then you should look into capacity planning the network, etc. Once capacity planned, you will want to rate control the sending rate as mentioned above. |
Thank you Todd. I will try and play with the mentioned parameters. So, generally speaking, it's pretty hard(even impossible) to achieve high rates on the Internet? |
No. It's just a limitation on the general Internet. You are, essentially, blasting data out as fast as possible. The routers in the path will drop your data and as it isn't reacting to loss.... probably biasing against it. Congestion control will reduce more appropriately and get more bandwidth overall. But it will not get you the 200MBps as that is just not achievable on that link.... if it were, you wouldn't have loss. Using TCP-like congestion control (as Cubic will do) means you are limited to what TCP will achieve in the same situation. You won't go faster than that AND share bandwidth with competing TCP streams. As you have control in Aeron and can implement your own congestion control, you can squeeze out some more bandwidth with a BBR type congestion control mechanism. We've not had sponsorship to implement it as of yet. But even BBR will not get what is just not there. |
Thank you. |
Hi. Not sure whether it's an issue or not but will post here. Any feedback is welcome.
Using samples, sending 2Gb file locally, works fine - I managed to achieve almost 200MB per second. Once I move to the Digital ocean machine, the maximum rate I could achieve is 2 Megabyte per second.
Aeron init on server side
FileReceiver equals to https://github.com/real-logic/aeron/blob/master/aeron-samples/src/main/java/io/aeron/samples/FileReceiver.java
FileSender is run in this fashion:
Could anyone tell me why the rate is so drastically different from the local machine?
Receiver log:
Sender log:
The machine is in Do, France. I am in Baltic.
The text was updated successfully, but these errors were encountered: