ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bugreport: при чтении из memcached препендятся случайные символы



В RoR есть вроде спец опция отключающая его механизмы оптимизации работы с мемкешд после чего он должен писать без выкрутасов. Дебагали след образом - мемкеш демон запущен с -vv чтоб видеть запросы и ответы, запросы давали правда вместо telnet по nc вроде. В общем получается что nginx выдаёт приблизительно то же что и nc, попробую ковырять API рубивское


04.06.07, Boguk Maxim <astar@xxxxxxxxxxxxx> написал(а):
Я бы попробовал руками сделать telnet memcached_server memcached_ip
и сделать руками
get имя_ключа

И посмотреть есть там лишние символы в начале данных или нет.

То как сериализует и десериализует RoR данные для memcached знает только он и его авторы. Не исключено что в первые несколько байт идут какие то служебные флаги/данные про которые nginx ничего не знает.

Я сильно подозреваю что проблема именно в этом.

PS: если не секрет каким образом проводился 'дебаг мемкаши' ?
 
 

From: owner-nginx-ru@xxxxxxxxxxxxxx [mailto:owner-nginx-ru@xxxxxxxxxxxxxx] On Behalf Of TDz TDz
Sent: Sunday, June 03, 2007 7:18 PM
To: nginx-ru@xxxxxxxxx
Subject: Re: bugreport: при чтении из memcached препендятся случайные символы

Лицезреть проблему можно на http://test.avaxhome.ru/
Там почти всё из мемкеши и соответственно кракозябли везде, ситуация не меняется при использовании apt-get версий nginx/memcached
Данные в мемкеш пишет само приложение (Ruby on Rails), оно же читает их верно оттуда (без символов), дебаг мемкаши тоже никаких сомволов лишних не показал
Вот конфиг:

user www-data;
worker_processes  8;

error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    worker_connections  2048;
    use epoll;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log off;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;
    tcp_nodelay        on;
    gzip  off;


    ## rails settings
    upstream mongrel
    {
        server 172.16.0.2:8000;
        server 172.16.0.2:8001;
        server 172.16.0.2:8002 ;
        server 172.16.0.2:8003;
        server 172.16.0.1:8000;
        server 172.16.0.1:8001;
        server 172.16.0.1:8002;
        server 172.16.0.1:8003;
    }

    server
    {
        listen 80;
        server_name test.avaxhome.ru;

        # setting for backend proxying
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_intercept_errors off;


        # static content
        location ~* ^/(_javascript_s|stylesheets|images)/.*$ {
            root /srv/www/localhost/avaxhome/current/public;
            expires 30d;
        }


        # fully dynamic content
        location ~* ^/(private_messages|news_mgr|search|login|comments).*$ {
            proxy_pass http://mongrel; break;
        }



        # cached dynamic content
        location / {
            default_type text/html;

            # POST requests always go to backend
            if ($request_method = POST ) {
                proxy_pass http://mongrel; break;
            }

            set $memcached_key $uri;
            memcached_pass 172.16.0.2:11211;

            error_page 404 = /backend; #key not found
            error_page 502 = /backend; #mem not responding
        }


        # backend settings
        location = /backend {
            internal;
            proxy_pass http://mongrel;
        }
    }
}


03.06.07, Igor Sysoev <is@xxxxxxxxxxxxx> написал(а):
On Sun, Jun 03, 2007 at 08:42:48AM +0400, Vladimir V. Perepelitsa wrote:

> А случаем у тебя не Client-Transfer-Encoding: chunked?

Да, похоже на чанки. В конце ответа всегда должен быть виден 0.
Вопрос в том, как эти ответы попали в memcached.

> On 6/1/07, TDz TDz <tdz@xxxxxxxxxxxx> wrote:
> >Хеллоу хотел сообщить о странном поведении nginx
> >после перехода на более новую версию nginx при чтении напрямую из memcached
> >перед самой информацией выдаются 2 случайных символа, для каждой страницы
> >они не меняются при рефреше но от страницы к странице отличаются
> >
> >nginx version: nginx/0.5.20
> >built by gcc 4.1.2 20061115 (prerelease) (Debian 4.1.1-21 ядро 2.6.20.4
> >оптимизация под Opteron) из нестандартных configure arguments:
> >--with-cc-opt=-O3
> >
> >Ошибок в логе на этот счёт нет. Проверял данные в мемкеше чистые
> >
> >Я откачусь на более старую версию - если это не known issue подскажите
> >какие
> >параметры нужно снять для анализа проблемы


--
Игорь Сысоев
http://sysoev.ru





 




Copyright © Lexa Software, 1996-2009.