С точки зрения nf_conntrack_max
, Вы только ограничены суммой доступной памяти ядра. Память ядра не выгружаема, таким образом, это - фактическая RAM.
TLDR: В современных системах я установил это на 128k с по-видимому никаким вредным воздействием.
Другой настраиваемый, который можно хотеть настроить, однако, /proc/sys/net/netfilter/nf_conntrack_buckets
. Каждый раз, когда пакет исследован, он хешируется в один из hashsize
блоки (на основе src/dst IP и порта). Каждый блок содержит связанный список, который затем должен искаться конкретное соединение. Увеличение числа блоков должно (до определенного момента), сокращают число узлы в связанном списке, который должен быть пересечен и поэтому увеличить производительность. Компромисс - это, чем больше блоков Вы имеете, тем выше вероятность пустых блоков. Пустой блок берет память ядра. Вот почему Вы не устанавливаете hashsize
= nf_conntrack_max
. Я не мог найти любые рекомендации на установке размера хэша кроме оператора "Under normal circumstances ip_conntrack_max equals 8 * hashsize".
Другая вещь отметить состоит в том, что, когда Ваши соединения являются недолгими (например, веб-сервер) у Вас может быть много соединений в состоянии TIME_WAIT с соответствующими записями в хеше conntrack. cat /proc/net/nf_conntrack | grep TIME | wc -l
(ip_conntrack
на более старых ядрах) или iptstate
должен сказать Вам эту информацию. Для сокращения тайм-аута для них изменяются /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait
. Вы, вероятно, хотели бы измениться /proc/sys/net/ipv4/tcp_fin_timeout
также.
Наконец, если Вам действительно нужна производительность, и Вы не можете позволить себе RAM, от которой Вы могли бы отключить брандмауэр полностью и вставить выделенный брандмауэр сервера.
Я столкнулся с этой проблемой. HAProxy по умолчанию работает с параметром http-tunnel
, если вы не укажете что-то вроде option httpclose
. Я пробовал что-то вроде этого:
defaults
option httpclose
...
backend http
no option httpclose
server devweb01 10.10.10.10:80 check
Но это не сработало. Когда я удалил параметр httpclose
из раздела defaults
, это сработало. Я также попытался добавить параметр http-tunnel
в свой бэкэнд, но это не помогло.
cat file | parallel --pipe ...
максимальная скорость составляет около 100 МБ / с.
Новая экспериментальная опция --pipepart обеспечивает скорость> 2 ГБ / с, но требует in.txt, чтобы быть реальным (доступным для поиска) файлом:
parallel -a in.txt --block 100M --pipepart python parse.py
-N1
заставляет один процесс быть создается в каждой строке. Вы видите накладные расходы на параллельную настройку. Вам следует изменить скрипт python для обработки более чем одной строки. Тогда cat in.txt | parallel --pipe python parse.py
должен полностью использовать ЦП.