*1 sendfile() failed (9: Bad file descriptor) while sending request to upstream

Roman Mashirov mrj at nandu.ru
Wed Apr 23 12:29:01 MSD 2008


Добрый день!

Есть следующая конфигурация:

...
        location ^~ /profile/ {
            proxy_pass http://backend;
            ssi on;
        }

        location /block {
            root   /1/www/nginxtest/cache;
            error_page   404  =  @fallback;
            allow 127.0.0.1;
            deny all;
        }

...

Бэкэнд должен обработать post и вернуть страницу с основным куском и
пачкой <!--#include file="/block"> которые в свою очередь будут
обработаны nginx и либо взяты из локального дискового кэша либо
перенаправлены снова на бэк. Так вот для перенаправляемых на бэк
запросов получаю в логе:

2008/04/23 12:07:56 [error] 87079#0: *70 open()
"/1/www/nginxtest/cache/block/1353" failed (2: No such file or
directory), client: 89.223.40.177, server: frontend, URL: "/profile/",
subrequest: "/block/1353", host: "frontend:8080", referrer:
"http://frontend:8080/profile/"
2008/04/23 12:07:56 [error] 87079#0: *70 open()
"/1/www/nginxtest/cache/block/1355" failed (2: No such file or
directory), client: 89.223.40.177, server: frontend, URL: "/profile/",
subrequest: "/block/1355", host: "frontend:8080", referrer:
"http://frontend:8080/profile/"
2008/04/23 12:07:56 [crit] 87079#0: *70 sendfile() failed (9: Bad file
descriptor) while sending request to upstream, client: 89.223.40.177,
server: frontend, URL: "/profile/", subrequest: "/block/1357", upstream:
"http://195.70.197.24:80/block/1357", host: "frontend:8080", referrer:
"http://frontend:8080/profile/"
2008/04/23 12:07:56 [crit] 87079#0: *70 sendfile() failed (9: Bad file
descriptor) while sending request to upstream, client: 89.223.40.177,
server: frontend, URL: "/profile/", subrequest: "/block/1357", upstream:
"http://195.70.197.24:80/block/1357", host: "frontend:8080", referrer:
"http://frontend:8080/profile/"

Все работает правильно если запрос достаточно мал и помещается в буфер в
памяти. Ошибка возникает только для больших форм. Пробовал ставить
include virtual wait="yes" вместо include file -- не помогло.

Настораживает еще и то, что в сообщениях про sendfile filed говорится
про один и тот-же блок, в то время как исходно инклюдились разные...

Подскажите, плс, куда рыть?

Заранее спасибо,
--
MRJ







More information about the nginx-ru mailing list