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

TDz TDz tdz at modestus.org
Mon Jun 4 21:14:12 MSD 2007


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


04.06.07, Boguk Maxim <astar at rambler-co.ru> написал(а):
>
>  Я бы попробовал руками сделать telnet memcached_server memcached_ip
> и сделать руками
> get имя_ключа
>
> И посмотреть есть там лишние символы в начале данных или нет.
>
> То как сериализует и десериализует RoR данные для memcached знает только
> он и его авторы. Не исключено что в первые несколько байт идут какие то
> служебные флаги/данные про которые nginx ничего не знает.
>
> Я сильно подозреваю что проблема именно в этом.
>
> PS: если не секрет каким образом проводился 'дебаг мемкаши' ?
>
>
>
>  ------------------------------
> *From:* owner-nginx-ru at mail.sysoev.ru [mailto:
> owner-nginx-ru at mail.sysoev.ru] *On Behalf Of *TDz TDz
> *Sent:* Sunday, June 03, 2007 7:18 PM
> *To:* nginx-ru at sysoev.ru
> *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 ~* ^/(javascripts|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 at rambler-co.ru> написал(а):
> >
> > 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 at modestus.org> 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
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20070604/474a01d4/attachment.html>


More information about the nginx-ru mailing list