Pull to refresh
187
0

Пользователь

Send message
Дело в том, что беготня сетевых пакетов из ядра в юзерспейс будет давать много излишней нагрузки на систему.
Добавил заявленный список поддерживаемых протоколов.
Это вся заметка. А что можно написать в продолжении? :)
Использование модуля максимально простое:
iptables -A FORWARD -m opendpi --protocol -j DROP
Подставить --protocol из списка iptables -m opendpi --help и все.
Параметр InterruptThrottleRate (если значение >100) задает количество прерываний, генерируемых в секунду. Эффект аналогичен заданию значений rx-usecs tx-usecs утилитой ethtool, что является более гибким вариантом, поэтому этот параметр e1000 не описывал. Задержки между прерываниями позволяют снизить нагрузку за счет увеличения задержек обработки трафика. Я рекомендую снижать их как можно сильнее, вплоть до ноля, пока нагрузка в часы пик будет в пределах нормы. Соответственно параметр InterruptThrottleRate повышать, пока нагрузка в пределах нормы.
Один поток Apache делает вот что: получает запрос от клиента, обрабатывает запрос, выдает результат клиенту. Один поток занимается одним клиентом и больше ничем. Т.е. с параметрами, которые Вы привели выше, Apache не сможет обработать более двух клиентов параллельно.
А один поток nginx работает иначе: в бесконечном цикле он пробегается по массиву сокетов, при необходимости считывает/записывает небольшой блок данных из/в сокет(а). Т.е. за каждый цикл он обслуживает сразу кучу клиентов (не более значения опции worker_connections). Это принцип работы poll. epoll работает еще эффективнее, но суть примерно такая же.
Распределение прерываний по ядрам поможет и в этом случае. Еще стоит оптимизировать правила с использованием ветвлений.
Дело в том, что поток Apache занимается лишь одним клиентом — такая архитектура. Поток же nginx в цикле пробегает по коннектам и уделяет каждому понемногу времени. Объясняю своими словами, надеюсь корректно описал суть :)
Спасибо, обязательно попробую. Вообще ссылка на проект ipt_netflow уже с месяц висит в списке «Посмотреть, потестить», но никак руки не доходят.
Преимущество ручного раскидывания — группировка определенных очередей на одном ядре.
А когда на одном из серверов использовал irqbalance — неоднократные кернел паники, после чего он был отключен.
Опция CONFIG_IRQBALANCE отсутствует начиная с версии 2.6.27, т.к. признана устаревшей.
Да, в комментах это не указал, но в статье написал. Увеличивать кэш ARP стоит только тогда, когда столкнетесь с сообщение в dmesg: «Neighbour table overflow».
Есть такое дело. Параметр --with-http_gzip_static_module для ./configure. В Gentoo Linux USE-флаг static-gzip.
шейпЕра, конечно же, извините. Просто изначально писал «шейпинга».
Это есть в планах, в том числе использование хэш-таблиц для меньшей нагрузки шейпира на систему.
Если сервер работает только маршрутизатором, то тюнинг TCP стека особого значения не имеет. Однако есть параметры sysctl, которые позволяют увеличить размер кэша ARP, что может быть актуальным. Например:
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh3 = 4096

Описания параметров добавлю в статью.
В моем случае сервер занимается маршрутизацией и в обработке трафика принимают активное участие шейпер, ULOG, файрволл. Основную нагрузку дают шейпер и ULOG, маршрутизация и фильтрация — на их фоне практически не нагружают систему.
Потому что я получил инвайт за другой пост, а этот пост написал уже как зарегистрированный пользователь :)
Да, mime.types инклудится в контексте http (поправка). В контексте location это делается для того, чтобы переопределить типы:
location ~ \.js$ {
   types { }
   default_type application/javascript;
}

Прописывание application/x-javascript js js.gz; не помогает, только что проверил.
Проблема будет в том, что при реврайте на .gz файл, заголовок Content-Type будет соответствовать .gz файлу. В принципе можно сделать что-то вроде:
types { }
default_type application/javascript;

Но это делается в контексте location, поэтому придется писать location на каждый тип файла.
# java -version
java version «1.6.0_22»
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)

Вот с этим работает.
Оригинальные файлы остаются без изменений, а минифицированные файлы лежат в .gz.
К тому же, nginx проверяет время модификации файла. Если оригинальный файл свежее, чем .gz, то отдаваться будет оригинальный файл.
12 ...
12

Information

Rating
Does not participate
Location
Varna, Varna, Болгария
Registered
Activity