Welcome! Log In Create A New Profile

Advanced

Поиск узких мест

October 09, 2019 05:12AM
Добрый день!
Есть nginx с модулем lua. Мы используем content_by, в котором происходит подключение к tarantool и выполнение одной функции в нем. Библиотека для работы с tarantool умеет nginx cosockets, также используется keepalive (соединения попадают в пул). Все это работает достаточно быстро, но периодически бывают всплески по времени работы кода. Например, подключение к tarantool порой достигает 200мс, при том, что соединение находится в пуле. Для более точного измерения времени используем posix.clock_gettime() вместо ngx.now(), так как он более точный и не кеширует время. Да, есть дополнительные два системных вызова, но маловероятно, что они способны блокировать nginx на такое длительное время. Само время замеряем до и после tarantool:connect().

Первым делом грешили на сам tarantool, но сняв дамп трафика с обоих стороны поняли, что по факту само соединение происходит быстро, попросту сам nginx пытается подключиться с "запозданием". Вероятно что-то блокирует его.

Так как основной причиной блокировок может быть файловый I/O, решили воспользоваться bcc-tools для подтверждения этого. В частности, воспользовались funcslower. На данный момент пытаемся искать медленное выполнение следующих функций:
/usr/sbin/nginx:ngx_write_file
/usr/sbin/nginx:ngx_read_file
/usr/sbin/nginx:ngx_copy_file
c:open
c:write
c:read

Но, к сожалению, в моменты всплеска времени подключения у нас нет медленной работы одной из этих функций.

Подскажите, какие еще функции могут блокировать event loop? И каким образом можно диагностировать эту ситуацию?
Subject Author Posted

Поиск узких мест

yanda.a October 09, 2019 05:12AM

Re: Поиск узких мест

Илья Шипицин October 09, 2019 05:24AM

Re: Поиск узких мест

Andrei Belov October 09, 2019 05:34AM

Re: Поиск узких мест

yanda.a October 09, 2019 05:42AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 318
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready