<!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> </DIV>
<DIV><FONT size=2></FONT> </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
8;<BR><BR>error_log
logs/error.log;<BR>pid
logs/nginx.pid;<BR><BR>events {<BR> worker_connections
2048;<BR> use epoll;<BR>}<BR><BR>http
{<BR> include
/etc/nginx/mime.types;<BR> default_type
application/octet-stream; <BR><BR> access_log
off;<BR><BR>
sendfile on;<BR>
tcp_nopush on;<BR><BR>
keepalive_timeout 65;<BR>
tcp_nodelay
on;<BR> gzip off;<BR><BR><BR> ##
rails settings<BR> upstream mongrel <BR>
{<BR> server <A
href="http://172.16.0.2:8000">172.16.0.2:8000</A>;<BR>
server <A
href="http://172.16.0.2:8001">172.16.0.2:8001</A>;<BR>
server <A href="http://172.16.0.2:8002">172.16.0.2:8002</A>
;<BR> server <A
href="http://172.16.0.2:8003">172.16.0.2:8003</A>;<BR>
server <A
href="http://172.16.0.1:8000">172.16.0.1:8000</A>;<BR>
server <A
href="http://172.16.0.1:8001">172.16.0.1:8001</A>;<BR>
server <A
href="http://172.16.0.1:8002">172.16.0.1:8002</A>;<BR>
server <A
href="http://172.16.0.1:8003">172.16.0.1:8003</A>;<BR>
}<BR><BR> server<BR>
{<BR> listen
80;<BR> server_name <A
href="http://test.avaxhome.ru">test.avaxhome.ru</A>;<BR><BR>
# setting for backend proxying<BR>
proxy_set_header Host
$http_host;<BR> proxy_set_header
X-Real-IP $remote_addr;<BR>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
<BR> proxy_intercept_errors
off;<BR><BR><BR> # static
content<BR> location ~*
^/(javascripts|stylesheets|images)/.*$
{<BR> root
/srv/www/localhost/avaxhome/current/public;<BR>
expires 30d; <BR>
}<BR><BR><BR> # fully dynamic
content<BR> location ~*
^/(private_messages|news_mgr|search|login|comments).*$
{<BR>
proxy_pass <A href="http://mongrel">http://mongrel</A>;
break;<BR> }
<BR><BR><BR><BR> # cached dynamic
content<BR> location /
{<BR>
default_type
text/html;<BR><BR>
# POST requests always go to
backend<BR>
if ($request_method = POST )
{<BR>
proxy_pass <A href="http://mongrel">http://mongrel</A>;
break;<BR>
}<BR><BR>
set $memcached_key
$uri;<BR>
memcached_pass <A
href="http://172.16.0.2:11211">172.16.0.2:11211</A>;<BR><BR>
error_page 404 = /backend; #key not found
<BR>
error_page 502 = /backend; #mem not
responding<BR>
}<BR><BR><BR> # backend
settings<BR> location = /backend
{<BR>
internal;<BR>
proxy_pass <A
href="http://mongrel">http://mongrel</A>;<BR>
}<BR> }<BR>}<BR><BR><BR>
<DIV><SPAN class=gmail_quote>03.06.07, <B class=gmail_sendername>Igor
Sysoev</B> <<A href="mailto:is@rambler-co.ru">is@rambler-co.ru</A>>
написал(а):</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>> А случаем у тебя не Client-Transfer-Encoding: chunked?
<BR><BR>Да, похоже на чанки. В конце ответа всегда должен быть виден
0.<BR>Вопрос в том, как эти ответы попали в memcached.<BR><BR>> On
6/1/07, TDz TDz <<A
href="mailto:tdz@modestus.org">tdz@modestus.org</A>> wrote: <BR>>
>Хеллоу хотел сообщить о странном поведении nginx<BR>> >после
перехода на более новую версию nginx при чтении напрямую из
memcached<BR>> >перед самой информацией выдаются 2 случайных символа,
для каждой страницы <BR>> >они не меняются при рефреше но от страницы
к странице отличаются<BR>> ><BR>> >nginx version:
nginx/0.5.20<BR>> >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>> >оптимизация
под Opteron) из нестандартных configure arguments:<BR>>
>--with-cc-opt=-O3<BR>> ><BR>> >Ошибок в логе на этот счёт
нет. Проверял данные в мемкеше чистые<BR>> ><BR>> >Я откачусь на
более старую версию - если это не known issue подскажите<BR>>
>какие<BR>> >параметры нужно снять для анализа
проблемы<BR><BR><BR>--<BR>Игорь Сысоев<BR><A
href="http://sysoev.ru">http://sysoev.ru
</A><BR><BR></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></BODY></HTML>