При использовании nginx-push-stream-module (+ родной JS FM pushstream.js ) и
nginx 1.6 неожиданно появилась проблема:
крутится спин (загрузка) и 'ожидаю хост ...' и так до таймаута указанного в
параметре push_stream_longpolling_connection_ttl,
в этот промежуток оставшийся JS недогружается до окончания
таймаута...(document.ready).
Такое поведение при загрузке каждой страницы.
Используется схема лонг-пулл.

Логика хостов примерно следующая:
rpl.*.site.ru - push
*.site.ru - web

в JS более чем стандартно, приводить не имеет смысла, в конфиге nginx в
общем-то тоже.
проблема решается только усечением ttl до 1 секунды, но это как-то
неправильно, совсем...
трое суток экспериментов не принесли результата ...

может кто сталкивался?

http {

    push_stream_shared_memory_size                60m;
    push_stream_max_channel_id_length             150;
    push_stream_max_messages_stored_per_channel   100;
    push_stream_timeout_with_body                 off;
.....
    server {
        server_name
            rpl.site.ru;
        access_log off;
        sendfile   off;
        charset utf-8;

        include conf.d/header_set;

        location /pub {
            push_stream_publisher admin;
            push_stream_store_messages             on;
            push_stream_channel_info_on_publish    on;
            push_stream_channels_path              $arg_id;
            client_max_body_size                    256k;
            client_body_buffer_size                 256k;
            allow  127.0.0.1;
        }

        location ~ /sub/(.*) {
            push_stream_subscriber                  long-polling;
            push_stream_channels_path               $1;
            push_stream_last_received_message_tag   $arg_tag;
            push_stream_last_received_message_time  $arg_time;
            push_stream_longpolling_connection_ttl  1s;
            push_stream_message_template           
"{\"id\":~id~,\"channel\":\"~channel~\",\"text\":~text~,\"tag\":\"~tag~\"
итд..
            add_header 'Access-Control-Allow-Origin' $allow_origin;
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
            add_header 'Access-Control-Allow-Headers' $acah;
            add_header 'Access-Control-Expose-Headers' 'ETag';
            add_header 'Last-Modified' '';
            if ($request_method = OPTIONS) { return 204; }
        }

....
}

в JS :

        var pushstream = new PushStream({
                host: rplhost,
                timeout: 20000,
                urlPrefixLongpolling: '/sub',
                modes: "longpolling"
        });
        pushstream.onmessage = rpl_messageReceived;
        pushstream.onstatuschange = rpl_messageStatus;
        pushstream.removeAllChannels();
        pushstream.addChannel('n_...');
        pushstream.addChannel('n_...');
.....
        pushstream.connect();


собственно все ... от чего такие тормоза? не может быть что у всех так
работает (не работает) ..

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

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

Ответить