Re: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Gelun, Artem
Объясню насчет когда нужно ))
Часть файлов отдавать так наверняка нерационально. Если они мелкие, то это
многих fopen/mmap, что нехорошо
Но если нужно отдать большой файл (например, вынести большие файлы в
отдельную локацию и там включать/выключать настройкой такую фичу), да еще и
дескриптор в кэше держать, а не открывать каждый раз, то кол-во mmap будет
не столь значительно, мне кажется?

29 июня 2015 г., 17:05 пользователь Gelun, Artem a...@gelun.ru написал:

 Ну у вас ведь файл открывется не при каждом запросе?
 Вы откываете файл и сохраняете дескриптор в структуре (не помню какой ))) )
 что мешает в этой же структуре сохранять указатель на mmap? и unmap делать
 вместе с закрытием файла (если ранее указатель был проинициализирован, а
 mmap делать только когда нужно)?


 29 июня 2015 г., 16:40 пользователь Валентин Бартенев vb...@nginx.com
 написал:

 On Monday 29 June 2015 20:28:08 Igor M Podlesny wrote:
  2015-06-29 20:18 GMT+07:00 Валентин Бартенев vb...@nginx.com:
 
   Varnish не веб-сервер, а кэш, причем кэш там организован через mmap().
  
 
  Новости! ;-)
 
 
   Постоянные mmap() + mincore() + unmap() - получится недешево.
  
 
  Ну так можно ж не постоянно. Зачем постоянно-то? Замэпить и сёрвить.
 

 У вас же не один файл, так?  Пулы потоков и нужны там, где файлов много
 больше,
 чем оперативной памяти.

 Нужно будет mmap() делать минимум на каждый запрос, тысячи
 mmap()/munmap()-ов в
 секунду - это большая нагрузка на подсистему памяти.

 --
 Валентин Бартенев
 ___
 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: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Валентин Бартенев
On Monday 29 June 2015 20:28:08 Igor M Podlesny wrote:
 2015-06-29 20:18 GMT+07:00 Валентин Бартенев vb...@nginx.com:
 
  Varnish не веб-сервер, а кэш, причем кэш там организован через mmap().
 
 
 Новости! ;-)
 
 
  Постоянные mmap() + mincore() + unmap() - получится недешево.
 
 
 Ну так можно ж не постоянно. Зачем постоянно-то? Замэпить и сёрвить.
 

У вас же не один файл, так?  Пулы потоков и нужны там, где файлов много больше,
чем оперативной памяти.

Нужно будет mmap() делать минимум на каждый запрос, тысячи mmap()/munmap()-ов в
секунду - это большая нагрузка на подсистему памяти.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Small bug in src/stream/ngx_stream_proxy_module.c

2015-06-29 Thread itpp2012
(1066) : warning C4244: '=' : conversion from 'off_t' to 'size_t', possible
loss of data

diff line 1066:
if (size  (size_t) limit) {
-size = limit;
+size = (size_t) limit;
}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,259969,259969#msg-259969

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


Re: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Gelun, Artem
Ну у вас ведь файл открывется не при каждом запросе?
Вы откываете файл и сохраняете дескриптор в структуре (не помню какой ))) )
что мешает в этой же структуре сохранять указатель на mmap? и unmap делать
вместе с закрытием файла (если ранее указатель был проинициализирован, а
mmap делать только когда нужно)?


29 июня 2015 г., 16:40 пользователь Валентин Бартенев vb...@nginx.com
написал:

 On Monday 29 June 2015 20:28:08 Igor M Podlesny wrote:
  2015-06-29 20:18 GMT+07:00 Валентин Бартенев vb...@nginx.com:
 
   Varnish не веб-сервер, а кэш, причем кэш там организован через mmap().
  
 
  Новости! ;-)
 
 
   Постоянные mmap() + mincore() + unmap() - получится недешево.
  
 
  Ну так можно ж не постоянно. Зачем постоянно-то? Замэпить и сёрвить.
 

 У вас же не один файл, так?  Пулы потоков и нужны там, где файлов много
 больше,
 чем оперативной памяти.

 Нужно будет mmap() делать минимум на каждый запрос, тысячи
 mmap()/munmap()-ов в
 секунду - это большая нагрузка на подсистему памяти.

 --
 Валентин Бартенев
 ___
 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: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Валентин Бартенев
On Monday 29 June 2015 16:50:42 Igor M Podlesny wrote:
 2015-06-29 15:37 GMT+07:00 Andrey Istochkin alstpost...@gmail.com:
 
  Насколько я понимаю, mincore оперирует адресами из виртуального адресного
  пространства процесса, а не файловыми дескрипторами. Таким образом, чтобы
  как-то применить его к файлу, нужно через mmap отображать файл в то самое
  адресное пространство, что, видимо, не является приемлемым решением.
 
 
 Ну почему же не является(?).
 
 Я так понимаю, что Varnish, например, во все поля этим занимается:
 
 https://www.varnish-cache.org/trac/wiki/ArchitectNotes
 

Varnish не веб-сервер, а кэш, причем кэш там организован через mmap().
Постоянные mmap() + mincore() + unmap() - получится недешево.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Валентин Бартенев
On Monday 29 June 2015 17:08:49 Gelun, Artem wrote:
 Объясню насчет когда нужно ))
 Часть файлов отдавать так наверняка нерационально. Если они мелкие, то это
 многих fopen/mmap, что нехорошо
 Но если нужно отдать большой файл (например, вынести большие файлы в
 отдельную локацию и там включать/выключать настройкой такую фичу), да еще и
 дескриптор в кэше держать, а не открывать каждый раз, то кол-во mmap будет
 не столь значительно, мне кажется?
 

Файл открывается при каждом запросе, если только не настроен отдельно
open_file_cache с которым есть свои проблемы.

Добавление туда ещё mmap() принесет приличное количество новой логики в разных
местах, при этом далекой от совершенства по двум причинам:

 1. mincore() будет пессимизировать наиболее распространенный случай, когда
данные все же есть в памяти, поэтому включать его и пулы потоков глобально
в большинстве случаев всё равно будет невыгодно.  При этом потребуется
включать еще и open_file_cache, так что правильная настройка всего этого
вместе становится совсем сложной.  В итоге таким решением будет пользоваться
с умом человек десять.

 2. У вас остается race condition между вызовом mincore() и read()/sendfile().

Лучше пинайте разработчиков ядра, чтобы наконец замерджили RWF_NONBLOCK или
fincore() патчи.  Последний хоть и не лишен второго недостатка, но по крайней
мере потребует на порядок меньше нового кода.

--
Валентин Бартенев




 29 июня 2015 г., 17:05 пользователь Gelun, Artem a...@gelun.ru написал:
 
  Ну у вас ведь файл открывется не при каждом запросе?
  Вы откываете файл и сохраняете дескриптор в структуре (не помню какой ))) )
  что мешает в этой же структуре сохранять указатель на mmap? и unmap делать
  вместе с закрытием файла (если ранее указатель был проинициализирован, а
  mmap делать только когда нужно)?
 
 
  29 июня 2015 г., 16:40 пользователь Валентин Бартенев vb...@nginx.com
  написал:
 
  On Monday 29 June 2015 20:28:08 Igor M Podlesny wrote:
   2015-06-29 20:18 GMT+07:00 Валентин Бартенев vb...@nginx.com:
  
Varnish не веб-сервер, а кэш, причем кэш там организован через mmap().
   
  
   Новости! ;-)
  
  
Постоянные mmap() + mincore() + unmap() - получится недешево.
   
  
   Ну так можно ж не постоянно. Зачем постоянно-то? Замэпить и сёрвить.
  
 
  У вас же не один файл, так?  Пулы потоков и нужны там, где файлов много
  больше,
  чем оперативной памяти.
 
  Нужно будет mmap() делать минимум на каждый запрос, тысячи
  mmap()/munmap()-ов в
  секунду - это большая нагрузка на подсистему памяти.
 
  --
  Валентин Бартенев
  ___
  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: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Maxim Konovalov
On 6/29/15 5:43 PM, Валентин Бартенев wrote:
[...]
 2. У вас остается race condition между вызовом mincore() и
 read()/sendfile().

Вот эта часть важная -- на практике под высокой нагрузкой между
этими двумя вызовами данные из кэша VM вымываются и читающий сисколл
блокируется. Чтобы закрыть это окно вам нужен mlock(), но не
простой, а неблокирующийся.

И мы это направление довольно подробно на FreeBSD исследовали.
Настолько, что получилось вот это:

https://www.freebsd.org/cgi/man.cgi?query=aio_mlock

Этот системный вызов в теории позволяет вам самостоятельно управлять
механизмом кэширования в памяти, не полагаясь на эвристику ОС.

Но натурные испытания показали, что идея не самая удачная. По
крайней мере на FreeBSD в конфигурации, когда активный dataset на
два и более порядков (XX TB vs XX GB) превосходит размер доступной
оперативной памяти, огромное количество mmap/munmap давало столь
большой оверхед, что выигрыш от хитрого кэширования с предчтением и
удержанием в памяти был неизмеримо мал.

Фактически, пришли к выводу, который был более или менее очевиден с
самого начала, что кэширование при таком профиле нагрузки не поможет.

-- 
Maxim Konovalov
http://nginx.com

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

Re: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Igor M Podlesny
2015-06-29 20:40 GMT+07:00 Валентин Бартенев vb...@nginx.com:

 У вас же не один файл, так?  Пулы потоков и нужны там, где файлов много 
 больше,
 чем оперативной памяти.

 Нужно будет mmap() делать минимум на каждый запрос, тысячи mmap()/munmap()-ов 
 в
 секунду - это большая нагрузка на подсистему памяти.

 Ну не, я не такой шаблон себе представлял, в связи с этим, а, скорее,
что-то вроде: ...
A minute after the start the special “cache loader” process is
activated. It loads information about previously cached data stored on
file system into a cache zone. The loading is done in iterations.
During one iteration no more than loader_files items are loaded (by
default, 100). Besides, the duration of one iteration is limited by
the loader_threshold parameter (by default, 200 milliseconds). Between
iterations, a pause configured by the loader_sleep parameter (by
default, 50 milliseconds) is made.
... -- 
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path

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

Re: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Igor M Podlesny
2015-06-29 15:37 GMT+07:00 Andrey Istochkin alstpost...@gmail.com:

 Насколько я понимаю, mincore оперирует адресами из виртуального адресного
 пространства процесса, а не файловыми дескрипторами. Таким образом, чтобы
 как-то применить его к файлу, нужно через mmap отображать файл в то самое
 адресное пространство, что, видимо, не является приемлемым решением.


Ну почему же не является(?).

Я так понимаю, что Varnish, например, во все поля этим занимается:

https://www.varnish-cache.org/trac/wiki/ArchitectNotes

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

[PATCH] Add support for tcp_user_timeout in http listen directive

2015-06-29 Thread Andy Isaacson
# HG changeset patch
# User Andy Isaacson a...@orionlabs.co
# Date 1435618451 25200
#  Mon Jun 29 15:54:11 2015 -0700
# Node ID c11304760218324ea55de7250a613af8f13e431b
# Parent  b95e70ae6bcdbae99a967df01e1011839f19ee0e
Add support for tcp_user_timeout in http listen directive

This commit adds support for a new tcp_user_timeout=timeout_sec
parameter to the listen directive.  When enabled and set to a value
greater than zero, the TCP_USER_TIMEOUT sockopt is set.  From tcp(7):

This specifies the maximum amount of time in milliseconds
that transmitted data may remain unacknowledged before TCP
will forcibly close the corresponding connection and return
ETIMEDOUT to the application.

Without this capability, a HTTP longpoll connection can remain active
for up to 950 seconds after the last ACK from the client.

Note that the tcp_user_timeout value is specified in (integer) seconds,
but the setsockopt API is specified in milliseconds.

This capability is similar to the systemwide configuration
net.ipv4.tcp_retries2 on Linux, but more flexible and per-socket.

diff -r b95e70ae6bcd -r c11304760218 auto/unix
--- a/auto/unix Thu Sep 05 16:53:02 2013 +0400
+++ b/auto/unix Mon Jun 29 15:54:11 2015 -0700
@@ -330,6 +330,18 @@
 . auto/feature
 
 
+ngx_feature=TCP_USER_TIMEOUT
+ngx_feature_name=NGX_HAVE_TCP_USER_TIMEOUT
+ngx_feature_run=no
+ngx_feature_incs=#include sys/socket.h
+  #include netinet/in.h
+  #include netinet/tcp.h
+ngx_feature_path=
+ngx_feature_libs=
+ngx_feature_test=setsockopt(0, IPPROTO_TCP, TCP_USER_TIMEOUT, NULL, 0)
+. auto/feature
+
+
 ngx_feature=TCP_KEEPIDLE
 ngx_feature_name=NGX_HAVE_KEEPALIVE_TUNABLE
 ngx_feature_run=no
diff -r b95e70ae6bcd -r c11304760218 src/core/ngx_connection.h
--- a/src/core/ngx_connection.h Thu Sep 05 16:53:02 2013 +0400
+++ b/src/core/ngx_connection.h Mon Jun 29 15:54:11 2015 -0700
@@ -80,6 +80,10 @@
 int setfib;
 #endif
 
+#if (NGX_HAVE_TCP_USER_TIMEOUT)
+int tcp_user_timeout;
+#endif
+
 };
 
 
diff -r b95e70ae6bcd -r c11304760218 src/event/ngx_event_accept.c
--- a/src/event/ngx_event_accept.c  Thu Sep 05 16:53:02 2013 +0400
+++ b/src/event/ngx_event_accept.c  Mon Jun 29 15:54:11 2015 -0700
@@ -284,6 +284,23 @@
 }
 }
 
+#if (NGX_HAVE_TCP_USER_TIMEOUT)
+#ifdef TCP_USER_TIMEOUT
+if (ls-tcp_user_timeout) {
+int value = ls-tcp_user_timeout;
+
+if (setsockopt(s, IPPROTO_TCP, TCP_USER_TIMEOUT, value,
+sizeof(int))
+== -1)
+{
+ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno,
+  setsockopt(TCP_USER_TIMEOUT, %d) for %V failed,
+  value, c-addr_text);
+}
+}
+#endif
+#endif
+
 #if (NGX_DEBUG)
 {
 
diff -r b95e70ae6bcd -r c11304760218 src/http/ngx_http.c
--- a/src/http/ngx_http.c   Thu Sep 05 16:53:02 2013 +0400
+++ b/src/http/ngx_http.c   Mon Jun 29 15:54:11 2015 -0700
@@ -1800,6 +1800,10 @@
 ls-deferred_accept = addr-opt.deferred_accept;
 #endif
 
+#if (NGX_HAVE_TCP_USER_TIMEOUT  defined TCP_USER_TIMEOUT)
+ls-tcp_user_timeout = addr-opt.tcp_user_timeout;
+#endif
+
 #if (NGX_HAVE_INET6  defined IPV6_V6ONLY)
 ls-ipv6only = addr-opt.ipv6only;
 #endif
diff -r b95e70ae6bcd -r c11304760218 src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c   Thu Sep 05 16:53:02 2013 +0400
+++ b/src/http/ngx_http_core_module.c   Mon Jun 29 15:54:11 2015 -0700
@@ -4085,6 +4085,31 @@
 continue;
 }
 
+if (ngx_strncmp(value[n].data, tcp_user_timeout=, 17) == 0) {
+#if (NGX_HAVE_TCP_USER_TIMEOUT  defined TCP_USER_TIMEOUT)
+int timeout_sec = ngx_atoi(value[n].data + 17, value[n].len - 17);
+
+/*
+ * convert from seconds (in config file) to milliseconds (for
+ * setsockopt)
+ */
+lsopt.tcp_user_timeout = timeout_sec * 1000;
+
+if (lsopt.tcp_user_timeout  0) {
+ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+   Invalid tcp_user_timeout \%V\,
+   value[n]);
+return NGX_CONF_ERROR;
+}
+#else
+ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+   tcp_user_timeout \%V\ is not supported on 
+   this platform, ignored,
+   value[n]);
+#endif
+continue;
+}
+
 if (ngx_strcmp(value[n].data, deferred) == 0) {
 #if (NGX_HAVE_DEFERRED_ACCEPT  defined TCP_DEFER_ACCEPT)
 lsopt.deferred_accept = 1;
diff -r b95e70ae6bcd -r c11304760218 src/http/ngx_http_core_module.h
--- a/src/http/ngx_http_core_module.h   Thu Sep 05 16:53:02 2013 +0400
+++ b/src/http/ngx_http_core_module.h   Mon Jun 29 15:54:11 2015 -0700
@@ -102,6 +102,10 @@
 ngx_uint_t

Re: Re[2]: проблема с rewrite

2015-06-29 Thread Andrey Istochkin
Дело в том, что 'destination' передается в заголовках запроса, для правки
которых встроенных средств, наверное, нет. Можно попробовать посмотреть в
сторону http://wiki.nginx.org/HttpHeadersMoreModule или как-то поизголяться
с проксированием на самого себя и выставлением в проксированном запросе
нужного заголовка. Но как-то это костыльно все очень.

29 июня 2015 г., 11:51 пользователь Иван Мишин simplebo...@gmail.com
написал:

 Не ужели нет никаких вариантов дописать слеш в конец того каталога в
 который перемещается другой каталог?

 25 июня 2015 г., 14:54 пользователь Иван Мишин simplebo...@gmail.com
 написал:

 Андрей, спасибо, помогло. Добавил break и каталоги удаляются без проблем.
 Но есть еще один вопрос, касающийся метода MOVE, то есть перемещение
 каталогов.

 К письму прикрепляю логи.
 Проблема конкретно тут:
 2015/07/26 14:48:08 [error] 6735#0: *61 both URI /Family/Новая папка/
 and Destination URI 
 http://192.168.200.92/Family/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20%282%29/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0;
 should be either collections or non-collections, client: 192.168.200.81,
 server: 192.168.200.92, request: MOVE
 /Family/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0
 HTTP/1.1, host: 192.168.200.92

 Винда не понимает сама где каталоги, а где просто файлы.
 То есть в случае метода MOVE я с помощью rewrite дописываю в конце слеш,
 а вот как дописать слеш к тому каталогу в который я перемещаю первый
 каталог не понятно. Если к методу PROPFIND дописать
 if (-d $webdav_root/$uri) {
rewrite ^(.*[^/])$ $1/ break;
}
 то в логах просто все зацикливается и все. Может у вас есть какие-то
 мысля по этому поводу?

 25 июня 2015 г., 11:49 пользователь Andrey Istochkin 
 alstpost...@gmail.com написал:

 Попробуйте в @delete_handler в rewrite добавить 'break'. Так как в
 access_логе фигурирует 598, то похоже на то, что @delete_handler
 отрабатывает, отрабатывает rewrite, после чего запрос уходит снова в
 'location ^~ /Family', опять отрабатывает 'return 598', но так как
 recursive_error_pages по-умолчанию выключена, error_page на этот раз не
 срабатывает, и клиент получает 598.

 25 июня 2015 г., 9:28 пользователь Иван Мишин simplebo...@gmail.com
 написал:

 в этом случае до винды этот код дойти не должен. если доходит - вы
 плохо настроили error


 Ну судя по tcpdump на стороне винды, 598 код все же доходит до нее.

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


 И про то и про другое, если не затруднит.
 ВО-первых, PROPFIND метод работает, при том что он организован в моем
 конфиге тем же способом что и метод DELETE с той лишь разницей что PROPFIND
 через 599 код работает, а DELETE через 598. Но я так понимаю что-это
 различие не на что не влияет ибо пробовал менять коды местами и...вот
 цитата моих слов по этому поводу:

 599 отрабатывает точно правильно потому что метод PROPFIND работает
 без вопросов. В качестве экспиремента поменял местами 599 и 598 в
 итоге PROPFIND как работал так и работает а DELETE каталогов как не 
 работал
 так и не работает.


 ВО-вторых, мне казалось что если с клиента ( в данном случае с винды)
 ушел запрос DELETE на nginx и nginx то nginx его должен отработать и
 каталог удалить, и не важно что он ответит клиент, потому что для клиента
 этот ответ будет чисто информационным т.е. не будет влиять на результат
 выполнения первого запроса (запроса на DELETE).


 24 июня 2015 г., 18:55 пользователь Daniel Podolsky onoko...@gmail.com
  написал:

  Даниель, можно подробнее пожалуйста про этот момент
 про какой? про переход в именованный локейшн? или про то, что код,
 который для этого используется, наружу отдаваться не должен?
 ___
 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



 ___
 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

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

Re: Malware in /tmp/nginx_client

2015-06-29 Thread guillefar
Yes, I think I will do that. So they are indeed cached requests?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,259948,259960#msg-259960

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


Re: Re[2]: проблема с rewrite

2015-06-29 Thread Иван Мишин
Не ужели нет никаких вариантов дописать слеш в конец того каталога в
который перемещается другой каталог?

25 июня 2015 г., 14:54 пользователь Иван Мишин simplebo...@gmail.com
написал:

 Андрей, спасибо, помогло. Добавил break и каталоги удаляются без проблем.
 Но есть еще один вопрос, касающийся метода MOVE, то есть перемещение
 каталогов.

 К письму прикрепляю логи.
 Проблема конкретно тут:
 2015/07/26 14:48:08 [error] 6735#0: *61 both URI /Family/Новая папка/
 and Destination URI 
 http://192.168.200.92/Family/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20%282%29/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0;
 should be either collections or non-collections, client: 192.168.200.81,
 server: 192.168.200.92, request: MOVE
 /Family/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0
 HTTP/1.1, host: 192.168.200.92

 Винда не понимает сама где каталоги, а где просто файлы.
 То есть в случае метода MOVE я с помощью rewrite дописываю в конце слеш, а
 вот как дописать слеш к тому каталогу в который я перемещаю первый каталог
 не понятно. Если к методу PROPFIND дописать
 if (-d $webdav_root/$uri) {
rewrite ^(.*[^/])$ $1/ break;
}
 то в логах просто все зацикливается и все. Может у вас есть какие-то мысля
 по этому поводу?

 25 июня 2015 г., 11:49 пользователь Andrey Istochkin 
 alstpost...@gmail.com написал:

 Попробуйте в @delete_handler в rewrite добавить 'break'. Так как в
 access_логе фигурирует 598, то похоже на то, что @delete_handler
 отрабатывает, отрабатывает rewrite, после чего запрос уходит снова в
 'location ^~ /Family', опять отрабатывает 'return 598', но так как
 recursive_error_pages по-умолчанию выключена, error_page на этот раз не
 срабатывает, и клиент получает 598.

 25 июня 2015 г., 9:28 пользователь Иван Мишин simplebo...@gmail.com
 написал:

 в этом случае до винды этот код дойти не должен. если доходит - вы
 плохо настроили error


 Ну судя по tcpdump на стороне винды, 598 код все же доходит до нее.

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


 И про то и про другое, если не затруднит.
 ВО-первых, PROPFIND метод работает, при том что он организован в моем
 конфиге тем же способом что и метод DELETE с той лишь разницей что PROPFIND
 через 599 код работает, а DELETE через 598. Но я так понимаю что-это
 различие не на что не влияет ибо пробовал менять коды местами и...вот
 цитата моих слов по этому поводу:

 599 отрабатывает точно правильно потому что метод PROPFIND работает без
 вопросов. В качестве экспиремента поменял местами 599 и 598 в
 итоге PROPFIND как работал так и работает а DELETE каталогов как не работал
 так и не работает.


 ВО-вторых, мне казалось что если с клиента ( в данном случае с винды)
 ушел запрос DELETE на nginx и nginx то nginx его должен отработать и
 каталог удалить, и не важно что он ответит клиент, потому что для клиента
 этот ответ будет чисто информационным т.е. не будет влиять на результат
 выполнения первого запроса (запроса на DELETE).


 24 июня 2015 г., 18:55 пользователь Daniel Podolsky onoko...@gmail.com
 написал:

  Даниель, можно подробнее пожалуйста про этот момент
 про какой? про переход в именованный локейшн? или про то, что код,
 который для этого используется, наружу отдаваться не должен?
 ___
 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



 ___
 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: Senfile + Threads + mincore in Linux?

2015-06-29 Thread Andrey Istochkin
Насколько я понимаю, mincore оперирует адресами из виртуального адресного
пространства процесса, а не файловыми дескрипторами. Таким образом, чтобы
как-то применить его к файлу, нужно через mmap отображать файл в то самое
адресное пространство, что, видимо, не является приемлемым решением. В
http://habrahabr.ru/post/260669/ указано, что были попытки по созданию
системного вызова fincore(https://lwn.net/Articles/371538/), который
работал бы как раз с файловыми дескрипторами, но как-то не срослось.

28 июня 2015 г., 22:10 пользователь Gelun, Artem a...@gelun.ru написал:

 Добрый день всем.

 Возможно, идея/вопрос не новы, но:

 Сейчас (с версии 1.7.11, если не ошибаюсь) sendfile может быть как
 блокирующим, так и неблокирующим *основной поток*, вызываясь в отдельном
 треде.

 При этом пул тредов фиксирован и если, например, я выделил 10 тредов,
 которые заняты чтением с диска (заблокированы), то другие читатели будут
 ожидать их даже если данные уже находятся в page cache, что не рационально,
 имхо. Т.е. мы можем иметь нагрузку, при которой 90% трафика будет
 отдаваться из PageCache, 10% с диска и эти 10% могут заблокировать
 кэшированные, популярные ответы.

 Вопрос: можно ли добавить в эту логику вызов mincore (в linux) для того,
 чтобы определить сколько данных есть в page cache, отправке этого объема
 данных и, если они отправились (возврат == NGX_OK) вызывать остаток
 sendfile в треде? Есть ли какие-то потенциальные проблемы за пределами
 ngx_linux_sendfile_chain.c строк 182-203 внутри #if (NGX_THREADS) ?

 ___
 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

Nginx-1.9.2 fatal code 2 !!

2015-06-29 Thread shahzaib shahzaib
Hi,

  We've just compiled latest nginx-1.9.2 on Debian wheezy 7 in order to
utilize aio threads directive for our storage but nginx started to crash
since we enabled aio threads on it. Following is the compiled options and
log about the crash :

root@archive3:/usr/local/nginx/conf/vhosts# nginx -V
nginx version: nginx/1.9.2
built by gcc 4.7.2 (Debian 4.7.2-5)
configure arguments: --sbin-path=/usr/local/sbin/nginx
--with-http_flv_module --with-http_mp4_module --with-threads --with-stream
--with-debug

error_log :

2015/06/30 04:14:07 [alert] 32076#32076: worker process 11097 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:03 [alert] 32079#32079: pthread_create() failed (11:
Resource temporarily unavailable)
2015/06/30 04:14:07 [alert] 32076#32076: worker process 17232 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 18584 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 595 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 32121 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 7557 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 16852 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 32083 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 5933 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:07 [alert] 32076#32076: worker process 32079 exited with
fatal code 2 and cannot be respawned
2015/06/30 04:14:03 [alert] 25360#25360: pthread_create() failed (11:
Resource temporarily unavailable)
2015/06/30 04:14:03 [alert] 18540#18540: pthread_create() failed (11:
Resource temporarily unavailable)
2015/06/30 04:14:03 [alert] 11093#11093: pthread_create() failed (11:
Resource temporarily unavailable)
2015/06/30 04:14:03 [alert] 23953#23953: pthread_create() failed (11:
Resource temporarily unavailable)

Thanks in advance.

Regards.
Shahzaib
___
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Serving from cache even when the origin server goes down

2015-06-29 Thread Cherian Thomas
Is it possible to configure Nginx to serve from cache even when the origin
server is not accessible?

I am trying to figure out if I can use a replicated Nginx instance that has
cache files rsynced (lsyncd
http://t.sidekickopen03.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJW7t5XYg1qwrMlW63Bdqv8rBw8YW4XXPpC56dBXDf1zVF0j02?t=https%3A%2F%2Fcode.google.com%2Fp%2Flsyncd%2Fsi=6435350837723136pi=2518a249-a8f4-4dd6-9e96-783723ac8e1a)
from the primary instance and serve from the replicated instance (DNS
switch) if the primary goes down.
- Cherian
___
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Re: Serving from cache even when the origin server goes down

2015-06-29 Thread Lucas Rolff

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale

You can use multiple values e.g. the below is probably a good start:

proxy_cache_use_stale error timeout invalid_header updating;


Cherian Thomas mailto:cherian...@gmail.com
30 Jun 2015 03:27

Is it possible to configure Nginx to serve from cache even when the 
origin server is not accessible?


I am trying to figure out if I can use a replicated Nginx instance 
that has cache files rsynced (lsyncd 
http://t.sidekickopen03.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJW7t5XYg1qwrMlW63Bdqv8rBw8YW4XXPpC56dBXDf1zVF0j02?t=https%3A%2F%2Fcode.google.com%2Fp%2Flsyncd%2Fsi=6435350837723136pi=2518a249-a8f4-4dd6-9e96-783723ac8e1a) 
from the primary instance and serve from the replicated instance (DNS 
switch) if the primary goes down.


- Cherian

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


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