Ошибки на Solaris 10 x86

drook nginx-forum на nginx.us
Пт Окт 21 18:09:18 UTC 2011


Привет.

Solaris 10 x86
nginx-1.1.5


Некий веб-сервер, раздающий
статический контент. Статический
контент состоит как из маленьких
файлов (картинки), так и из больших
дистрибутивов. 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
и другими значениями субъективно не
заметил. Я бы хотел воспользоваться
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
отключил.
Таким образом, всем тем, что, по мнению
документации и многочисленных обзоров
является быстрым и правильным,
воспользоваться не удалось.
Можно ли как-то исправить эту ситуацию ?
Со своей стороны готов предоставить
детальные логи/трэйсы и т.д.

Спасибо.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,217032,217032#msg-217032



Подробная информация о списке рассылки nginx-ru