Nginx cannot assign requested address
Материал из noname.com.ua
Nginx
Ошибка
connect() to 127.0.0.1:8081 failed (99: Cannot assign requested address) while connecting to upstream
При нагрузочном тестировании: ab -c 45 -n 1000000 http://domain.ru/
Как симптом море TIME_WAIT ов:
netstat -an |grep TIME_WAIT
Фиксить нужно так:
Нужно увеличить число исходящих портов. Как это сделать в Линуксе - не знаю. -- Игорь Сысоев
Но проблема в том, что пул этих адресов итак огромен:
sysctl -a|grep range net.ipv4.ip_local_port_range = 32768 61000
Далее идет вот такое обсуждение перенастройки на 1024-65535:
now my benchmark test works fine. are there any other problems when i run debian with this large port range? No, there should no be problems. You may set 1024-65535.
Есть еще вариант:
sysctl -a | grep recycl net.ipv4.tcp_tw_recycle = 0 sysctl -a | grep reuse net.ipv4.tcp_tw_reuse = 0
Итого, резюмируя, лично я делаю так (18000 потому, что с 21 по 17900 у меня висят различные демоны):
echo "net.ipv4.ip_local_port_range = 18000 61000" >> /etc/sysctl.conf sysctl -p
И не забываем перезаупстить Nginx:
/etc/init.d/nginx restart
Итого, мы где-то на 15 000 портов расширили интервал исходящих портов и ошибка должна исчезнуть.
Источник: