nginx cache manager process потребляет CPU в ngx resolver lookup name

Ilya Evseev nginx-forum на forum.nginx.org
Ср Сен 20 03:38:18 UTC 2017


Дано: nginx 1.13.5 под CentOS 7.3

В perf top:

Children,      Self  Command,          Shared Object,                
Symbol
-   27,63%     0,00%  nginx            [unknown]                     [.]
0000000000000000
   - 0
        24,87% ngx_resolver_lookup_name.isra.1
      - 2,76% __libc_writev

Для ngx_resolver_lookup_name.isra.1 смотрю "Zoom into nginx thread" -- вижу
в списке вызывавшихся функций sys_unlink, ngx_http_file_cache_manager и т.д.
Из этого делаю вывод, что функция потребляет процессор внутри процесса nginx
cache manager.

Смотрю в nginx/src/core/ngx_resolver.c -- вижу, что ngx_resolver_lookup_name
делает только поиск по красно-чёрному дереву.

Вопрос: чем хотя бы примерно может быть вызвано такое большое потребление
процессора этой функцией?

Сервер проксирует ~150 проектов, у каждого свой кэш. Суммарно ~200k файлов
на SSD. Около 300 upstream server's.

Эффект проявляется только на production под большой нагрузкой, поэтому сбор
диагностики несколько затруднён. Непонятно, как применить callgrind или
debug log только к cache manager, не трогая воркеры.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,276455,276455#msg-276455



Подробная информация о списке рассылки nginx-ru