This post is mostly targeted at storj engineers.
I have a 200/20 Mbps internet connection and a 1Gbps LAN.
Since maybe 2 weeks ago (roughly when 28.4 version became live but that might be just coincidental) my node receives high download traffic. However the percentage of failed download attempts is worryingly high as well (it’s now about 46%, roughly 2/3 of them are context cancelled, 1/2 is stream closed). I’ve already ruled out the disk performance and CPU usage, I’m well provisioned there.
Roughly 1 month ago the traffic was about the same with download failure rate <5%. nstat shows that my 20Mbps uplink is saturated >90% of the time and I suspect many simultaneous download attempts fired at roughly the same time make the whole download process slower for all pieces.
It’d be nice if storjnode did not start the download of a new piece until network utilization started to drop below certain configured throughput (I’d set it to 80% of my uplink capacity). This likely hampers this particular download request but gives all other in flight requests much higher chances to succeed.
Here’s the /funcs for the doDownload since yesterday midday:
 storj.io/storj/storagenode/piecestore.(*Endpoint).doDownload parents: 2494327041188198762 current: 2, highwater: 11, success: 8989, errors: 7614, panics: 0 error piecestore protocol: 8 error piecestore: 7606 success times: 0.00: 9.0985ms 0.10: 154.829633ms 0.25: 2.320760288s 0.50: 9.3476224s 0.75: 17.603472384s 0.90: 23.01765632s 0.95: 23.893704806s 1.00: 31.057152s avg: 8.914721887s ravg: 10.359068672s failure times: 0.00: 929.158912ms 0.10: 3.904766592s 0.25: 6.076113536s 0.50: 13.236718592s 0.75: 17.182001664s 0.90: 19.211122688s 0.95: 20.355371315s 1.00: 21.020588032s avg: 12.761584733s ravg: 12.253051904s