<div dir="ltr"><div>на 2018-м nginx.conf был доклад, как профилировать в районе Lua (и не только)</div><div><br></div><div><a href="https://openresty.org/slides/nginx-conf-2018/">https://openresty.org/slides/nginx-conf-2018/</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">ср, 9 окт. 2019 г. в 14:13, yanda.a <<a href="mailto:nginx-forum@forum.nginx.org">nginx-forum@forum.nginx.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Добрый день!<br>
Есть nginx с модулем lua. Мы используем content_by, в котором происходит<br>
подключение к tarantool и выполнение одной функции в нем. Библиотека для<br>
работы с tarantool умеет nginx cosockets, также используется keepalive<br>
(соединения попадают в пул). Все это работает достаточно быстро, но<br>
периодически бывают всплески по времени работы кода. Например, подключение к<br>
tarantool порой достигает 200мс, при том, что соединение находится в пуле.<br>
Для более точного измерения времени используем posix.clock_gettime() вместо<br>
ngx.now(), так как он более точный и не кеширует время. Да, есть<br>
дополнительные два системных вызова, но маловероятно, что они способны<br>
блокировать nginx на такое длительное время. Само время замеряем до и после<br>
tarantool:connect().<br>
<br>
Первым делом грешили на сам tarantool, но сняв дамп трафика с обоих стороны<br>
поняли, что по факту само соединение происходит быстро, попросту сам nginx<br>
пытается подключиться с "запозданием". Вероятно что-то блокирует его.<br>
<br>
Так как основной причиной блокировок может быть файловый I/O, решили<br>
воспользоваться bcc-tools для подтверждения этого. В частности,<br>
воспользовались funcslower. На данный момент пытаемся искать медленное<br>
выполнение следующих функций:<br>
/usr/sbin/nginx:ngx_write_file<br>
/usr/sbin/nginx:ngx_read_file<br>
/usr/sbin/nginx:ngx_copy_file<br>
c:open<br>
c:write<br>
c:read<br>
<br>
Но, к сожалению, в моменты всплеска времени подключения у нас нет медленной<br>
работы одной из этих функций.<br>
<br>
Подскажите, какие еще функции могут блокировать event loop? И каким образом<br>
можно диагностировать эту ситуацию?<br>
<br>
Posted at Nginx Forum: <a href="https://forum.nginx.org/read.php?21,285826,285826#msg-285826" rel="noreferrer" target="_blank">https://forum.nginx.org/read.php?21,285826,285826#msg-285826</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div>