Архив

Публикации с меткой ‘speed’

Оптимизация TCP/IP стэка для AIX, Solaris, Tru64, HP-UX, Irix, Linux и FreeBSD (eng)

UNIX IP Stack Tuning Guide v2.7

http://www.cymru.com/Documents/ip-stack-tuning.html

By Rob Thomas

Introduction

The purpose of this document is to strengthen the UNIX IP stack
against a variety of attack types prevalent on the Internet today.
This document details the settings recommended for UNIX servers
designed to provide network intensive services such as HTTP or routing
(firewall services). This document covers the following UNIX variants:

A. IBM AIX 4.3.X
B. Sun Solaris 7
C. Compaq Tru64 UNIX 5.X
D. HP HP-UX 11.0 (research ongoing)
E. Linux kernel 2.2 (tested both SuSE Linux 7.0 and RedHat 7.0)
F. FreeBSD
G. IRIX 6.5.10

  Читать далее…

FreeBSD для обслуживания 100-200 тысяч соединений (freebsd tcp optimization tune speed socket mbuf sendfile sysctl)

Стенограмма выступления Игоря Сысоева с конференции РИТ-2007.

mbuf clusters

FreeBSD хранит сетевые данные в mbuf clusters, размер каждого 2Кб, но из
них используется только около 1500 байт (по размеру Ethernet пакета).

mbufs

Для каждого mbuf кластера нужен «mbuf», который имеет размер 256 байт и
нужен для организации связи цепочек из mbuf кластеров. В mbuf можно поместить
полезную информацию в районе 100 байт, но это не всегда используется.

Если в машине 1Гб и больше памяти, то по умолчанию будет создано 25 тыс. mbuf кластеров,
что не всегда достаточно.

При ситуации исчерпания числа свободных mbuf кластеров FreeBSD попадает в
состояние zonelimit и перестает отвечать на запросы по сети,
в top это выглядит как «zoneli». Единственная возможность как-то повлиять на
ситуацию — это зайти с локальной консоли и перезагрузить систему, уничтожить
процесс находящийся в состоянии «zoneli» невозможно. Для Linux 2.6.x данная проблема
тоже характерна, причем работать переставала даже консоль.

PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
13654 nobody 1 4 0 59912K 59484K zoneli 209:26 0.00% nginx

Для выхода из этой ситуации существует патч возвращающий приложению ошибку ENOBUFS,
сигнализирующий о попадании в состояние «zoneli», после чего программа может
закрыть лишние соединения. К сожалению патч пока не принят в состав FreeBSD. Читать далее…