Re: когда лучше использовать multi_accept on

2016-06-10 Пенетрантность Sargas
Благодарю.

10 июня 2016 г., 20:11 пользователь Валентин Бартенев 
написал:

> On Friday 10 June 2016 18:52:35 Sargas wrote:
> > Валентин, а скажите, пожалуйста почему будет много лишних вызовов
> accept()
> > с EAGAIN если соединений мало?
>
> Потому что в этом режиме, как я уже писал, nginx в цикле зовет accept() до
> тех пор, пока не получит EAGAIN.
>
> Таким образом на каждое событие на listen-сокете мы имеем минимум один
> вызов
> accept() с EAGAIN.
>
> Если рабочему процессу удастся принять 5 соединений, то это будет 5
> успешных
> accept()-ов и один неуспешный, а если всего одно, то пропорция 1 к 1.
>
>
> > Это будет только на Linux или на FreeBSD так же?
>
> На FreeBSD директива ни на что не влияет.  Там kqueue сообщает о количестве
> пришедших соединений в событии и ровно столько раз nginx позовет accept().
>
>
> >
> > На FreeBSD есть accept filter, соответственно если он включен в системе
> и в
> > конфиге nginx, то система знает сколько соединений прошли фильтр и готовы
> > для accept. Правильно ли я понимаю что рабочему процессу остается
> > обработать известное кол-во соединений и не делать много лишних accept c
> > EAGAIN  в этом случае?
>
> Accept filter тут не причем.  Как я уже описал выше, kqueue сам по себе
> сообщает
> сколько соединений пришло в сокет (независимо от того, используется ли
> accept
> filter или нет), в то время, как epoll сообщает только о факте наличия
> новых
> соединений, но не их количество.
>
> Про accept filter Игорь писал очень давно:
> http://sysoev.ru/freebsd/accept-filters.html
>
> В Linux аналогичной цели (уменьшение числа переключений контекста) может
> служить
> опция TCP_DEFER_ACCEPT.
>
> --
> Валентин Бартенев
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: когда лучше использовать multi_accept on

2016-06-10 Пенетрантность Sargas
Валентин, а скажите, пожалуйста почему будет много лишних вызовов accept()
с EAGAIN если соединений мало?
Это будет только на Linux или на FreeBSD так же?

На FreeBSD есть accept filter, соответственно если он включен в системе и в
конфиге nginx, то система знает сколько соединений прошли фильтр и готовы
для accept. Правильно ли я понимаю что рабочему процессу остается
обработать известное кол-во соединений и не делать много лишних accept c
EAGAIN  в этом случае?

10 июня 2016 г., 17:16 пользователь VovansystemS 
написал:

> > [..]
> > Если поступающих соединений очень много, то второй вариант работы может
> > оказаться чуть оптимальнее, за счет того, что рабочий процесс для
> получения
> > каждого соединение не ходит за событием в ядро.
> > [..]
>
> теперь понятно!
>
> Валентин, большое спасибо за подробное разъяснение
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: когда лучше использовать multi_accept on

2016-06-10 Пенетрантность VovansystemS
> [..]
> Если поступающих соединений очень много, то второй вариант работы может
> оказаться чуть оптимальнее, за счет того, что рабочий процесс для получения
> каждого соединение не ходит за событием в ядро.
> [..]

теперь понятно!

Валентин, большое спасибо за подробное разъяснение
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: когда лучше использовать multi accept on

2016-06-10 Пенетрантность S.A.N
> Я не понимаю что мы выигрываем от принятия сразу нескольких
> соединений за одну итерацию event loop'а.

Я в таких случаях провожу нагрузочные эксперименты, чтобы понять что мы
выигрываем, в данном случаи разница будет на уровне погрешности, но возможно
вам стоит попробовать чтобы знать точно.

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

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: когда лучше использовать multi_accept on

2016-06-10 Пенетрантность VovansystemS
> Если директива выключена , то есть установлено
> значение off, то один процесс будет принимать одно соединение.

> Если вы включаете multi accept, nginx попытается обработать максимальное
> количество входящий соединений. Если значение worker_connections мало то
> быстро исчерпается лимит.
а какой смысл в том, что один процесс (worker) принимает сразу
несколько соединений? ведь воркер однопоточен и будет обрабатывать их
по-очереди. почему это иногда может быть лучше, чем поведение
по-умолчанию "принять одно соединение, выполнить необходимую работу,
принять следующее соединение"?

почему иногда может быть эффективным принимать несколько соединений
воркером за один вызов event loop?
https://assets.wp.nginx.com/wp-content/uploads/2015/06/NGINX-Event-Loop2-e1434744201287.png
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: когда лучше использовать multi_accept on

2016-06-10 Пенетрантность Yuriy Medvedev
Если вы включаете multi accept, nginx попытается обработать максимальное
количество входящий соединений. Если значение worker_connections мало то
быстро исчерпается лимит. Если директива выключена , то есть установлено
значение off, то один процесс будет принимать одно соединение.
При использовании multi accept  необходимо так же тюнить
worker_connections. При высокой нагрузке на веб сервер есть вероятность
получить очереди входящих соединений

10 июня 2016 г., 9:08 пользователь VovansystemS 
написал:

> > При включенном multi_accept, nginx будет пытаться обработать все новые
> > входящие соединения
> > http://nginx.org/ru/docs/ngx_core_module.html#multi_accept
> да, спасибо, я это читал и искал пояснения в рассылке, но к пониманию
> работы директивы меня это не приблизило.
>
> (предыдущее письмо с тем, что я нашёл тут
> http://mailman.nginx.org/pipermail/nginx-ru/2016-May/058283.html )
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx + lua broken

2016-06-10 Пенетрантность Yuriy Medvedev
И странно что такой путь до модуля
/usr/ports/www/nginx/work/lua-nginx-module-0.10.5
У меня на 10 freebsd модули живут в /usr/local/libexec/nginx/, nginx
установлен из портов

10 июня 2016 г., 9:32 пользователь Vadim A. Misbakh-Soloviov  написал:

> В письме от четверг, 9 июня 2016 г. 22:31:53 TSK пользователь Станислав
> написал:
> > --add-dynamic-module=/usr/ports/www/nginx/work/lua-nginx-module-0.10.5
> Потому что динамические модули нужно ещё и "загружать" в конфиге. До
> объявления server{} блоков в которых они используются :)
>
> --
> wbr,
> mva
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx + lua broken

2016-06-10 Пенетрантность Станислав
Спасибо! Я - динозавр как-то пропустил эту тему с динамическими 
модулями. Работает :)





В письме от четверг, 9 июня 2016 г. 22:31:53 TSK пользователь Станислав
написал:

--add-dynamic-module=/usr/ports/www/nginx/work/lua-nginx-module-0.10.5

Потому что динамические модули нужно ещё и "загружать" в конфиге. До
объявления server{} блоков в которых они используются :)



___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx + lua broken

2016-06-10 Пенетрантность Станислав

Такое есть:


# ls -la /usr/local/libexec/nginx/ngx_http_lua_module.so
-r-xr-xr-x  1 root  wheel  336032 10 июн 07:59 
/usr/local/libexec/nginx/ngx_http_lua_module.so


# pkg info -l luajit-2.0.4
luajit-2.0.4:
/usr/local/bin/luajit
/usr/local/bin/luajit-2.0.4
/usr/local/include/luajit-2.0/lauxlib.h
/usr/local/include/luajit-2.0/lua.h
/usr/local/include/luajit-2.0/lua.hpp
/usr/local/include/luajit-2.0/luaconf.h
/usr/local/include/luajit-2.0/luajit.h
/usr/local/include/luajit-2.0/lualib.h
/usr/local/lib/libluajit-5.1.a
/usr/local/lib/libluajit-5.1.so
/usr/local/lib/libluajit-5.1.so.2
/usr/local/lib/libluajit-5.1.so.2.0.4
/usr/local/libdata/pkgconfig/luajit.pc
/usr/local/man/man1/luajit.1.gz
/usr/local/share/luajit-2.0.4/jit/bc.lua
/usr/local/share/luajit-2.0.4/jit/bcsave.lua
/usr/local/share/luajit-2.0.4/jit/dis_arm.lua
/usr/local/share/luajit-2.0.4/jit/dis_mips.lua
/usr/local/share/luajit-2.0.4/jit/dis_mipsel.lua
/usr/local/share/luajit-2.0.4/jit/dis_ppc.lua
/usr/local/share/luajit-2.0.4/jit/dis_x64.lua
/usr/local/share/luajit-2.0.4/jit/dis_x86.lua
/usr/local/share/luajit-2.0.4/jit/dump.lua
/usr/local/share/luajit-2.0.4/jit/v.lua
/usr/local/share/luajit-2.0.4/jit/vmdef.lua
#  nginx pkg info -l nginx
nginx-1.10.1,2:
/usr/local/etc/nginx/fastcgi_params-dist
/usr/local/etc/nginx/koi-utf
/usr/local/etc/nginx/koi-win
/usr/local/etc/nginx/mime.types-dist
/usr/local/etc/nginx/nginx.conf-dist
/usr/local/etc/nginx/scgi_params-dist
/usr/local/etc/nginx/uwsgi_params-dist
/usr/local/etc/nginx/win-utf
/usr/local/etc/rc.d/nginx
/usr/local/libexec/nginx/ngx_http_lua_module.so
/usr/local/libexec/nginx/ngx_stream_module.so
/usr/local/man/man8/nginx.8.gz
/usr/local/sbin/nginx
/usr/local/share/licenses/nginx-1.10.1,2/BSD2CLAUSE
/usr/local/share/licenses/nginx-1.10.1,2/LICENSE
/usr/local/share/licenses/nginx-1.10.1,2/catalog.mk
/usr/local/www/nginx-dist/50x.html
/usr/local/www/nginx-dist/EXAMPLE_DIRECTORY-DONT_ADD_OR_TOUCH_ANYTHING
/usr/local/www/nginx-dist/index.html

По сути я собрал nginx из портов с опцией LUA на чистой FreeBSD 10.3. На 
предыдущей машинке работало




Hi, а модуль lua на месте?

10 июня 2016 г. 8:32 пользователь "Станислав" > написал:


Здравствуйте,

Подскажите пожалуйста чего это не работает:

# nginx -t
nginx: [emerg] unknown directive "content_by_lua" in
/usr/local/etc/nginx/virtual/kagdila.rooty.name.conf:51
nginx: configuration file /usr/local/etc/nginx/nginx.conf test
failed


Nginx был собран с lua:

# nginx -V
nginx version: nginx/1.10.1
built with OpenSSL 1.0.2h  3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/usr/local/etc/nginx
--with-cc-opt='-I /usr/local/include' --with-ld-opt='-L
/usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf
--sbin-path=/usr/local/sbin/nginx
--pid-path=/var/run/nginx.pid
--error-log-path=/var/log/nginx-error.log --user=www
--group=www --modules-path=/usr/local/libexec/nginx
--with-file-aio --with-ipv6
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
--http-scgi-temp-path=/var/tmp/nginx/scgi_temp
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp
--http-log-path=/var/log/nginx-access.log
--with-http_addition_module --with-http_auth_request_module
--with-http_dav_module --with-http_flv_module
--with-http_gzip_static_module --with-http_gunzip_module
--with-http_mp4_module --with-http_random_index_module
--with-http_realip_module --with-http_secure_link_module
--with-http_slice_module --with-http_stub_status_module
--with-http_sub_module
--add-module=/usr/ports/www/nginx/work/ngx_devel_kit-0.2.19
--add-dynamic-module=/usr/ports/www/nginx/work/lua-nginx-module-0.10.5
--with-pcre --with-http_v2_module --with-stream=dynamic
--with-stream_ssl_module --with-threads --with-http_ssl_module


# pkg info nginx | grep -i lua
LUA: on
libluajit-5.1.so.2


___
nginx-ru mailing list
nginx-ru@nginx.org 
http://mailman.nginx.org/mailman/listinfo/nginx-ru



___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru


___