swift-bench keeps EADDRNOTAVAIL error with a highly concurrency setting and multiple swift-bench clients.
Ubuntu 13, Swift single machine installation (refer SAIO), swift-client runs local with no-proxy mode.
- EADDRNOTAVAIL stands for either unavailability of ephemeral ports and a known kernel bug.
- Check your range of ports: $cat /proc/sys/net/ipv4/ip_local_port_range
- swift-bench in no-proxy mode uses direct client class based on Python’s HTTPLib. I saw that code for object write and read did not have connection close call. So, I added that. Please refer swift/common/direct_client.py.
- The kernel bug is based on usage of bind() call during a connection setup from client. swift-bench so not use bind. So this possibility is ruled out.
- Swift administration guide advises of following setting:
net.ipv4.tcp_tw_reuse=1# disable syn cookies
net.ipv4.tcp_syncookies = 0
The above mentioned solutions reduced the problem significantly. If there is a better solution, let me know.