Популярные файловые сервисы для linux разрабатывались в те времена, когда были популярны сети 10 и 100 мегабит, на сегодняшний день всё чаще и чаще можно встретить сети на 1 и более гигабит. Основной проблемой файловых сервисов в гигабитных сетях является опустошение отдающих буферов (на сервере) и заполненые буферы приёма данных на клиенте и порой на канале в 2 или 4 гигабита невозможно выжать более 40 мегабайт в секунду, в этом случае помогают (помимо дисковых хранилищ, со скоростью чтения более 1 гигабайта в секунду :) ) следующие настройки

для Apache:

**ReceiveBufferSize 2097152
SendBufferSize 2097152
AcceptMutex pthread
**

предупреждаю сразу это увеличивает потребление памяти апачем, кроме того несколько возрастает время отклика сервера, на одном гигабите с такими настройками мне удалось добиться скорости передачи данных равной 110 мегабайтам в секунду (на бОльшее не способен был клиент)

В моём случае апач используется несколько нетривиальным образом - это репозиторий больших и огромных файлов (iso, дистрибутивы программ, репозиторий пакетов для RHEL)

для nginx надо настраивать буферы для каждого виртуального хоста, к директиве listen кроме адреса и порта добавлять размер буфера приёма и передачи данных:

**listen 10.0.0.1:80 rcvbuf=2048k sndbuf=2048k backlog=4096 deferred**

для NFS настройки производятся на клиенте (для сервера надо настраивать переменные ядра через sysctl)

**mount -t nfs -o defaults,rsize=2097152,wsize=2097152 server/share /mnt/nfs**

для SAMBA настройки эффективнее всего производить как на сервере так и на клиенте, для сервера:

** socket options = SO_RCVBUF=2097152 SO_SNDBUF=2097152
max xmit = 65535
read raw = yes
write raw = yes
level2 oplocks = yes
wide links = yes
getwd cache = yes
use sendfile = yes
large readwrite = yes**

для клиента (например mount.cifs) надо использовать те же опции что и для nfs (rsize и wsize), хотел бы я знать где в гноме/kde можно указать опции, с которыми по умолчанию монтируются общие ресурсы samba

для ProFTPD:

**SocketOptions rcvbuf 2097152**

**SocketOptions sndbuf 2097152**

если кто-нить знает как буферы приёма/отдачи контента настраиваются в глючном bugware vsftpD напишите пожалуйста в коментах.

Сразу оговорюсь, что большие буферы ведут к снижению интерактивности (например, при 16 мегабайтном буфере nginx на 2 гигабитном линке кучу файлов отдавал значительно медленнее чем при 2 мегабайтном буфере, те же результаты были и с proftpd)

Next Post