Дано: 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, не трогая воркеры.