> С прилагаемым тарболлом нужно проделать следующее: > > tar zxf epoll.tar.gz > cd epoll > make > > После чего в каталоге epoll будет две программы: epoll и server.
> Нужно запустить их в двух терминалах. Сначала server, он будет слушать > на 127.0.0.1:9000, потом epoll, он будет соединяться с сервером. > > Сервер должен показать следующее:
> > ----------- >> ./server > accept > close, sleep 60s > ----------- > > epoll, если ошибки нет, должен показать: > > ----------- >> ./epoll > epoll_wait: 1, 00000004, 4
> epoll_wait: 1, 00000005, 4 > read: 8 > epoll_wait: 1, 00000005, 4 > read: 0 > eof read > ----------- > > и если ошибка есть, то > > ----------- >> ./epoll
> epoll_wait: 1, 00000004, 4 > epoll_wait: 1, 00000005, 4 > read: 8 > epoll_wait: 0, 00000005, 4 > epoll_wait timed out > ----------- > > Ошибка воспроизводится не всегда, у меня получилось воспроизвести на
> Linux 2.6.13-15.11-smp из SuSE 10. Если у вас ошибка тоже воспроизвелась, > то подписывайтесь на lkml и шлите туда баг-репорт вместе с прилагаемым > test-case'ом. Заодно спросите, почему постоянно приходят нотификации
> EPOLLOUT - в данном случае она должна приходить только первый раз. > Возможно, ошибка проявляется не только в epoll, а просто в потере сигнала > закрытия сокета.
Приношу извинения. Предыдущий тарболл был неверный. Соответсвенно,
таймауты при использовании epoll и memcached или epoll и proxy_buffering off - это, скорее всего, ошибка в nginx'е. Однако в комбинации nginx/epoll/trac - я не вижу подобной ошибки. Новый тарболл пытается воспроизвести это взаимодействие nginx и сервера.