Most operating systems limit an amount of TCP sockets that can be used simultaneously. It is possible for a busy Tor relay to run into these limits, thus being unable to fully utilize the bandwidth resources it has at its disposal. Following system-specific tips might be helpful to alleviate the aforementioned problem. Linux ----- Use 'ulimit -n' to raise an allowed number of file descriptors to be opened on your host at the same time. FreeBSD ------- Tune the followind sysctl(8) variables: * kern.maxfiles - maximum allowed file descriptors (for entire system) * kern.maxfilesperproc - maximum file descriptors one process is allowed to use * kern.ipc.maxsockets - overall maximum numbers of sockets for entire system * kern.ipc.somaxconn - size of listen queue for incoming TCP connections for entire system See also: * https://www.freebsd.org/doc/handbook/configtuning-kernel-limits.html * https://wiki.freebsd.org/NetworkPerformanceTuning Mac OS X -------- Since Mac OS X is BSD-based system, most of the above hold for OS X as well. However, launchd(8) is known to modify kern.maxfiles and kern.maxfilesperproc when it launches tor service (see launchd.plist(5) manpage). Also, kern.ipc.maxsockets is determined dynamically by the system and thus is read-only on OS X. Disclaimer ---------- Do note that this document is a draft and above information may be technically incorrect and/or incomplete. If so, please open a ticket on https://trac.torproject.org or post to tor-relays mailing list. Are you running a busy Tor relay? Let us know how you are solving the out-of-sockets problem on your system.