The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"OpenNews: Вышла новая экспериментальная версия nginx 0.7.7."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [ Отслеживать ]

"OpenNews: Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от opennews (??) on 31-Июл-08, 11:48 
"nginx 0.7.7 (http://sysoev.ru/nginx/changes.html)" - вышла новая экспериментальная версия nginx 0.7.7 (http://sysoev.ru/nginx/). Список изменений:

-  Изменение: теперь ошибка EAGAIN при вызове connect() не считается временной.-  Изменение: значением переменной $ssl_client_cert теперь является сертификат, перед каждой строкой которого, кроме первой, вставляется символ табуляции; неизменённый сертификат доступен через переменную $ssl_client_raw_cert.
-  Добавление: параметр ask директивы ssl_verify_client.
-  Добавление: улучшения в обработке byte-range.
-  Добавление: директива directio.
-  Добавление: поддержка sendfile() в MacOSX 10.5.
-  Исправление: в MacOSX и Cygwin при проверке location'ов теперь делается сравнение без учёта регистра символов; однако, сравнение ограничено только однобайтными locale'ями.
-  Исправление: соединения почтового прокси-сервера зависали в режиме SSL, если использовались методы select, poll или /dev/poll.
-  Исправление: ошибки при использовании кодировки UTF-8 в ngx_http_autoindex_module.


URL: http://sysoev.ru/nginx/changes.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=17187

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от parad (??) on 31-Июл-08, 11:48 
> Изменение: теперь ошибка EAGAIN при вызове connect() не считается временной.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от csdoc (ok) on 31-Июл-08, 13:27 
>> Изменение: теперь ошибка EAGAIN при вызове connect() не считается временной.
>
> На неблокируемых сокетах - это стандартная ошибка,
> возвращаемая при вызове connect(), потом нужно проверять
> готовнось сокета на запись, а по достижению таймаута отрубать.
>
> В общем как это они так?

в POSIX при вызове connect() на неблокируемых
сокетах возвращается EINPROGRESS, а не EAGAIN.
EAGAIN вместо EINPROGRESS возвращает только Windows.

POSIX connect: http://www.opengroup.org/onlinepubs/000095399/functions/conn...

WINSOCK connect: http://msdn.microsoft.com/en-us/library/ms737625(VS.85).aspx

nginx-0.7.7\src\event\ngx_event_connect.c:

        if (err != NGX_EINPROGRESS
#if (NGX_WIN32)
            /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */
            && err != NGX_EAGAIN
#endif
            )
        {
            if (err == NGX_ECONNREFUSED
#if (NGX_LINUX)
                /*
                 * Linux returns EAGAIN instead of ECONNREFUSED
                 * for unix sockets if listen queue is full
                 */
                || err == NGX_EAGAIN
#endif

в случае если Linux возвращает EAGAIN - это действительно ошибка,
соединение не было установлено. для пользовательского приложения
это означает примерно то же самое, что и код ошибки ECONNREFUSED.

http://lxr.linux.no/linux/net/unix/af_unix.c#L1070

1070        if (skb_queue_len(&other->sk_receive_queue) >
1071            other->sk_max_ack_backlog) {
1072                err = -EAGAIN;
1073                if (!timeo)
1074                        goto out_unlock;

более подробная информация на эту тему:

http://www.google.com/search?q=non-blocking+connect+and+EAGAIN

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от parad (??) on 31-Июл-08, 17:37 
Ок, спасибо, кажется я что-то напутал. ))
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от Аноним (??) on 01-Авг-08, 13:05 
> Изменение: теперь ошибка EAGAIN при вызове connect() не считается временной.

А зачем серверу вызывать connect() ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от csdoc (ok) on 01-Авг-08, 13:28 
>> Изменение: теперь ошибка EAGAIN при вызове connect() не считается временной.
>
> А зачем серверу вызывать connect() ?

для подключения к backend`ам. (fastcgi, http и т.п.)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "OpenNews: Вышла новая экспериментальная версия nginx 0.7.7."  +/
Сообщение от BigBug on 08-Июл-09, 11:39 
> -  Изменение: теперь ошибка EAGAIN при вызове connect() не считается
>временной.

ЙЭССССССССССССС, этот баг таки признали и исправили, теперь можно использовать высоконагруженные бекэнды через unix сокет и небоятся что в какойто момент очередь переполнится и сразу всем будет выдана ошибка 502 вместо ожидания!!! Этот баг очень доставал!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру