утечка коннектов?

Alex Vorona voron at amhost.net
Fri Jul 11 10:51:48 MSD 2008


Alex Vorona пишет:
> Привет
> 
> Сегодня первый раз пронаблюдал в error.log следующее
> 
> 2008/07/10 00:00:48 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:00:49 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:00:49 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:00:58 [alert] 81003#0: send() failed (64: Host is down)
> 2008/07/10 00:00:58 [alert] 81003#0: send() failed (64: Host is down)
> 2008/07/10 00:01:06 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:01:08 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:01:12 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:01:14 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:01:23 [alert] 81002#0: send() failed (64: Host is down)
> 2008/07/10 00:01:40 [alert] 81002#0: unexpected response for domain.com
> 
> После этих ошибок у nginx начался рост writting connections, дошёл минут 
> за 45 до ~3100(обычно около 100 запросов/сек), после чего, похоже, 
> воркер 81002 перестал отрабатывать коннекты.

небольшой тесткейс показал, что, по-видимому, с резолвингом проблемы всё-таки есть.
   resolver   127.0.0.1;
   resolver_timeout   1s;
         location ^~ /pp {
             set $pp "google.com";
             proxy_pass http://$pp;
         }

останавливаем резолвер на 127.0.0.1 :)
в статусе
Active connections: 1
server accepts handled requests
  1 1 1
Reading: 0 Writing: 1 Waiting: 0

пускаем ab
ab -n 100  -c 100 http://127.0.0.1/pp/123
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)...apr_poll: The timeout specified has 
expired (70007)
Total of 1 requests completed

в статусе
Active connections: 100
server accepts handled requests
  102 102 102
Reading: 0 Writing: 100 Waiting: 0

судя по дебаг-логу, nginx стучится к резолверу по-прежнему, коннекты от ab не 
закрыты, и так, похоже, будет бесконечно долго. По HUP этот воркер не выходит. 
Если запустить резолвер, то только тогда всё нормализуется - 100 запросов на 
гугль и закрытие коннектов.

Возможно, что-то схожее происходит в случае unexpected response for domain.com ?





More information about the nginx-ru mailing list