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 портов расширили интервал исходящих портов и ошибка должна исчезнуть.

Источник: