I'm running a relay on a 1Gbps connection. However, my relay averages around 3Mbps up/down each after several months. After substantial investigation, I found the cause: my relay sets up TCP sessions with clients and other relays, and NEVER closes them (it simply waits 24 hours for them to expire). I quickly hit my router's NAT session limit and can't build any more circuits. At any given time 99% of my connections are using zero bandwidth, and I can't build more connections because of my router's limitation.
Is this a design decision in tor that has some security properties? It just seems extremely inefficient, like mallocing all your memory and never freeing it, why not end sessions that have not been used in an operator configurable amount of time, e.g. 30 minutes.
The only downside I see is that clients who idle for a very long time (AFK? not recommended using tor!) may have an extra second of load time inbetween idle periods. But by definition, this wouldn't affect people who are actually using tor.
On the upside, it would allow some relay operators (like myself) to increase their bandwidth by factors of hundreds.