Re: Ошибки на Solaris 10 x86
Igor Sysoev
igor на sysoev.ru
Ср Ноя 9 11:16:29 UTC 2011
On Fri, Oct 21, 2011 at 02:09:18PM -0400, drook wrote:
> Привет.
>
> Solaris 10 x86
> nginx-1.1.5
nginx -V
> Некий веб-сервер, раздающий
> статический контент. Статический
> контент состоит как из маленьких
> файлов (картинки), так и из больших
> дистрибутивов. 10-15 запросов в секунду,
> 200-700 установленных соединений, траффик
> 200-600 Мбит.
>
> Чем больше число коннектов, тем больше
> время, проходящее между началом
> установления сессии и отправкой
> первого HTTP-запроса. Собственно, это и
> хотелось бы затюнить. Сейчас оно в
> районе 2-5 с. Хотелось бы его уменьшить
> настолько, насколько это возможно.
>
> В данный момент испольуется /dev/poll:
>
> events {
> worker_connections 1024;
>
> use /dev/poll;
> devpoll_events 4096;
> devpoll_changes 4096;
> multi_accept on;
> }
>
> Пробовал poll/select. Большой разницы между
> poll и /dev/poll не заметил, на select все как-то
> менее позитивно (хотя и не сильно, но
> заметно).
>
> Я читал архивы, и видел упоминания, что
> в солярке должно быть почему-то 32. Не
> понял и не нашел почему, разницы между 32
> и другими значениями субъективно не
> заметил.
32 по дефолту, потому что Solaris 10 стал проверять, чтобы
это значение не было больше лимита на открытые файлы, а лимит
по умолчанию 256. Раньше вместо 32 было 512. Но в приниципе,
32 должно хватать.
> Я бы хотел воспользоваться
> eventport, так как читал, что это модная и
> эффективная схема работы. Но когда я
> его включаю, то тут же получаю в логах
> мегатонны
>
> 2011/10/06 15:02:53 [alert] 9936#0: port_dissociate() failed (2: No such
> file or directory)
> 2011/10/06 15:02:53 [alert] 9936#0: port_dissociate() failed (2: No such
> file or directory)
> (просто буквально мегабайты в секунду
> лога)
>
> Все ссылки из гугла на эту тему ведут
> сюда же, в топик:
> http://forum.nginx.org/read.php?21,16750
>
> Топик я читал. Насколько я понимаю, там
> дело кончилось тем, что автор стал
> пробовать не-eventport по совету Игоря.
> Проблем с ulimit у меня нет, все остальное
> объективное из топика я постарался
> применить.
> Хотелось бы все-таки прояснить, почему
> не получается с eventport ?
>
> Второе. Для оптимизации работы с
> большими файлами я бы хотел включить
> directio. Когда я его включаю, то первые
> несколько минут все просто взлетает.
> Однако, по прошествии некоторого
> времени, все опять скатывается к этим 2-5
> с, с тенденцией к увеличению этого
> времени по мере увеличения числа
> сессий. А в логах тем временем
> появляются подобные записи:
>
> 2011/10/21 21:07:44 [alert] 29308#0: *26142 directio(DIRECTIO_ON)
> "/usr/local/public/backups/files/files2/ea_games/fifa_12/fifa12_pc.zip"
> failed (25: Inappropriate ioctl for device), client: 42.113.6.222,
> server: www.files2.enaza.ru, request: "GET
> /ea_games/fifa_12/fifa12_pc.zip HTTP/1.1", host: "files2.enaza.ru",
> referrer:
> "http://blog.vnnclub.com/2011/09/download-fifa-12-full-crack-100-1-link.html"
>
> (если у кого-то возникает вопрос по
> поводу легальности контента - все в
> порядке и ничего противоправного,
> просто реферрер видимо с какого-то
> модного молодежного дорвэя).
>
> Записей не то что бы очень много по
> сравнению с предыдущей проблемой, но
> порядком, и они появляются постоянно.
>
> Я полагаю, что "(25: Inappropriate ioctl for device)"
> означает, что все плохо, и поэтому directio
> отключил.
Какая файловая система ?
> Таким образом, всем тем, что, по мнению
> документации и многочисленных обзоров
> является быстрым и правильным,
> воспользоваться не удалось.
> Можно ли как-то исправить эту ситуацию ?
> Со своей стороны готов предоставить
> детальные логи/трэйсы и т.д.
Да, нужен отладочный лог для одного своего соединения
после появления ошибок на всех остальных соединениях::
http://nginx.org/en/docs/debugging_log.html
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru