<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=koi8-r">
<META content="MSHTML 6.00.5730.11" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><FONT size=2>Я бы попробовал руками сделать telnet 
memcached_server memcached_ip<BR>и сделать руками<BR>get имя_ключа<BR><BR>И 
посмотреть есть там лишние символы в начале данных или нет.<BR><BR>То как 
сериализует и десериализует RoR данные для memcached знает только он и его 
авторы. Не<SPAN class=648551408-04062007> </SPAN>исключено что в первые 
несколько байт идут какие то служебные флаги/данные про которые nginx ничего не 
знает.<BR><BR>Я сильно подозреваю что проблема именно в этом.<BR><BR>PS: если не 
секрет каким образом проводился 'дебаг мемкаши' ?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=ru dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> owner-nginx-ru@mail.sysoev.ru 
  [mailto:owner-nginx-ru@mail.sysoev.ru] <B>On Behalf Of </B>TDz 
  TDz<BR><B>Sent:</B> Sunday, June 03, 2007 7:18 PM<BR><B>To:</B> 
  nginx-ru@sysoev.ru<BR><B>Subject:</B> Re: bugreport: при чтении из memcached 
  препендятся случайные символы<BR></FONT><BR></DIV>
  <DIV></DIV>Лицезреть проблему можно на <A 
  href="http://test.avaxhome.ru/">http://test.avaxhome.ru/</A><BR>Там почти всё 
  из мемкеши и соответственно кракозябли везде, ситуация не меняется при 
  использовании apt-get версий nginx/memcached <BR>Данные в мемкеш пишет само 
  приложение (Ruby on Rails), оно же читает их верно оттуда (без символов), 
  дебаг мемкаши тоже никаких сомволов лишних не показал<BR>Вот 
  конфиг:<BR><BR>user www-data;<BR>worker_processes&nbsp; 
  8;<BR><BR>error_log&nbsp; 
  logs/error.log;<BR>pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  logs/nginx.pid;<BR><BR>events {<BR>&nbsp;&nbsp;&nbsp; worker_connections&nbsp; 
  2048;<BR>&nbsp;&nbsp;&nbsp; use epoll;<BR>}<BR><BR>http 
  {<BR>&nbsp;&nbsp;&nbsp; include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  /etc/nginx/mime.types;<BR>&nbsp;&nbsp;&nbsp; default_type&nbsp; 
  application/octet-stream; <BR><BR>&nbsp;&nbsp;&nbsp; access_log 
  off;<BR><BR>&nbsp;&nbsp;&nbsp; 
  sendfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on;<BR>&nbsp;&nbsp;&nbsp; 
  tcp_nopush&nbsp;&nbsp;&nbsp;&nbsp; on;<BR><BR>&nbsp;&nbsp;&nbsp; 
  keepalive_timeout&nbsp; 65;<BR>&nbsp;&nbsp;&nbsp; 
  tcp_nodelay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  on;<BR>&nbsp;&nbsp;&nbsp; gzip&nbsp; off;<BR><BR><BR>&nbsp;&nbsp;&nbsp; ## 
  rails settings<BR>&nbsp;&nbsp;&nbsp; upstream mongrel <BR>&nbsp;&nbsp;&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server <A 
  href="http://172.16.0.2:8000">172.16.0.2:8000</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  server <A 
  href="http://172.16.0.2:8001">172.16.0.2:8001</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  server <A href="http://172.16.0.2:8002">172.16.0.2:8002</A> 
  ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server <A 
  href="http://172.16.0.2:8003">172.16.0.2:8003</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  server <A 
  href="http://172.16.0.1:8000">172.16.0.1:8000</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  server <A 
  href="http://172.16.0.1:8001">172.16.0.1:8001</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  server <A 
  href="http://172.16.0.1:8002">172.16.0.1:8002</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  server <A 
  href="http://172.16.0.1:8003">172.16.0.1:8003</A>;<BR>&nbsp;&nbsp;&nbsp; 
  }<BR><BR>&nbsp;&nbsp;&nbsp; server<BR>&nbsp;&nbsp;&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listen 
  80;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server_name <A 
  href="http://test.avaxhome.ru">test.avaxhome.ru</A>;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  # setting for backend proxying<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  proxy_set_header Host 
  $http_host;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header 
  X-Real-IP $remote_addr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_intercept_errors 
  off;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # static 
  content<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~* 
  ^/(javascripts|stylesheets|images)/.*$ 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root 
  /srv/www/localhost/avaxhome/current/public;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  expires 30d; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # fully dynamic 
  content<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~* 
  ^/(private_messages|news_mgr|search|login|comments).*$ 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  proxy_pass <A href="http://mongrel">http://mongrel</A>; 
  break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } 
  <BR><BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # cached dynamic 
  content<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location / 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  default_type 
  text/html;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  # POST requests always go to 
  backend<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  if ($request_method = POST ) 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  proxy_pass <A href="http://mongrel">http://mongrel</A>; 
  break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  set $memcached_key 
  $uri;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  memcached_pass <A 
  href="http://172.16.0.2:11211">172.16.0.2:11211</A>;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  error_page 404 = /backend; #key not found 
  <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  error_page 502 = /backend; #mem not 
  responding<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # backend 
  settings<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location = /backend 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  internal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  proxy_pass <A 
  href="http://mongrel">http://mongrel</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR><BR><BR>
  <DIV><SPAN class=gmail_quote>03.06.07, <B class=gmail_sendername>Igor 
  Sysoev</B> &lt;<A href="mailto:is@rambler-co.ru">is@rambler-co.ru</A>&gt; 
  написал(а):</SPAN> 
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">On 
    Sun, Jun 03, 2007 at 08:42:48AM +0400, Vladimir V. Perepelitsa 
    wrote:<BR><BR>&gt; А случаем у тебя не Client-Transfer-Encoding: chunked? 
    <BR><BR>Да, похоже на чанки. В конце ответа всегда должен быть виден 
    0.<BR>Вопрос в том, как эти ответы попали в memcached.<BR><BR>&gt; On 
    6/1/07, TDz TDz &lt;<A 
    href="mailto:tdz@modestus.org">tdz@modestus.org</A>&gt; wrote: <BR>&gt; 
    &gt;Хеллоу хотел сообщить о странном поведении nginx<BR>&gt; &gt;после 
    перехода на более новую версию nginx при чтении напрямую из 
    memcached<BR>&gt; &gt;перед самой информацией выдаются 2 случайных символа, 
    для каждой страницы <BR>&gt; &gt;они не меняются при рефреше но от страницы 
    к странице отличаются<BR>&gt; &gt;<BR>&gt; &gt;nginx version: 
    nginx/0.5.20<BR>&gt; &gt;built by gcc 4.1.2 20061115 (prerelease) (Debian 
    4.1.1-21 ядро <A href="http://2.6.20.4">2.6.20.4</A><BR>&gt; &gt;оптимизация 
    под Opteron) из нестандартных configure arguments:<BR>&gt; 
    &gt;--with-cc-opt=-O3<BR>&gt; &gt;<BR>&gt; &gt;Ошибок в логе на этот счёт 
    нет. Проверял данные в мемкеше чистые<BR>&gt; &gt;<BR>&gt; &gt;Я откачусь на 
    более старую версию - если это не known issue подскажите<BR>&gt; 
    &gt;какие<BR>&gt; &gt;параметры нужно снять для анализа 
    проблемы<BR><BR><BR>--<BR>Игорь Сысоев<BR><A 
    href="http://sysoev.ru">http://sysoev.ru 
</A><BR><BR></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></BODY></HTML>