Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Отдача больших файлов
- To: nginx-ru@xxxxxxxxx
- Subject: Re: Отдача больших файлов
- From: Anton Sayetsky <vsjcfm@xxxxxxxxx>
- Date: Tue, 14 Jan 2014 12:57:53 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; bh=SOBOuuw9UVSiQaTnBoISQTxJ6CwoC6WG6Ibc+rPX9lM=; b=0v48GT1IGgotTfhy9LMeYHZtfVA4yC3Rr5Fz0uNLNuvchgbqJ0uGvzECTPB3EjTTn5 h6kOs6Ld/cjFQtT3dRQHSJXHfqdaUloouqxyWtf1YGesdqUp0sjjfDN2WJFlAZnquHhG vGPjz6PJQpLO+qunIVFFR1mnhi20HkaYEu1SUt6QYqIeVqymMngWmDPwrhkEcbGr1uhf UapjtsQi4DSQi2Z/xmJETx9S+FQut1FLyfwibk4p2g6hJSmgFlXvfPh4pGtVe/cf0VT1 ZrRUEthWVJdN7kRlsbrj5mTgUPzyvt0pRAd+bsM1awSh/DcfDJoQs7Jlzaud7VMRCMx6 hukw==
- In-reply-to: <52D50348.5060809@citrin.ru>
- References: <CAFG2KCLt5AmJJSwXhsyJjtjepjRvPOMcbjU-pjksBQoXwkfXpw@mail.gmail.com> <52D50348.5060809@citrin.ru>
14 января 2014 г., 11:28 пользователь Anton Yuzhaninov
<citrin@xxxxxxxxx> написал:
> 1. Собрать ядро с увеличенным до 1 Мб MAXPHYS
>
> options MAXPHYS=(1024*1024)
Поискал - как-то мало информации по этому поводу. А та, что есть - в
основном очень старая. Впрочем, внимания всё равно стоит. Интересно,
почему это не default, если действительно помогает.
> 2. Подобрать оптимальное значение для
> sysct kern.ipc.sendfile.readahead
Хм...
root@jnb:~# uname -srm
FreeBSD 9.2-RELEASE-p2 amd64
root@jnb:~# sysctl -a | grep sendfile | wc -l
0
root@jnb:~#
jason@pxe:~$ uname -srm
FreeBSD 9.1-RELEASE-p4 amd64
jason@pxe:~$ sysctl -a | grep sendfile | wc -l
0
jason@pxe:~$
jason@jason-freebsd:~$ uname -srm
FreeBSD 8.3-RELEASE-p4 amd64
jason@jason-freebsd:~$ sysctl -a | grep sendfile | wc -l
0
jason@jason-freebsd:~$
На последних двух системах установлен nginx со включенным sendfile.
При каких условиях должен появиться данный OID?
А вот это есть:
jason@jnb:~$ sysctl vfs.read_max vfs.zfs.zfetch.array_rd_sz
vfs.read_max: 32
vfs.zfs.zfetch.array_rd_sz: 1048576
ЕМНИП для UFS (ext2fs, vfat, etc) - это кол-во кластеров, а для ZFS,
видимо - кол-во байт.
> измеряется в блоках по MAXBSIZE (по умолчанию 64к)
> больше MAXPHYS/MAXBSIZE ставить смысла нет.
> т. е. при MAXPHYS 1 Мб можно попробовать kern.ipc.sendfile.readahead=16
Таки да, для UFS это - кол-во кластеров.
jason@jnb:~$ man tuning | col -b | grep -A 10 read_max
The vfs.read_max sysctl governs VFS read-ahead and is expressed as the
number of blocks to pre-read if the heuristics algorithm decides that the
reads are issued sequentially. It is used by the UFS, ext2fs and msdosfs
file systems. With the default UFS block size of 16 KiB, a setting of 32
will allow speculatively reading up to 512 KiB. This setting may be
increased to get around disk I/O latencies, especially where these laten?
cies are large such as in virtual machine emulated environments. It may
be tuned down in specific cases where the I/O load is such that read-
ahead adversely affects performance or where system memory is really low.
The vfs.ncsizefactor sysctl defines how large VFS namecache may grow.
jason@jnb:~$
> Ну и собственно в конфиге nginx - sendfile on;
Странно, ибо в ранее прочитанных мануалах (втч и в этой рассылке) для
отдачи с ZFS всегда рекомендовали sendfile выключать, НЯП для
избежания double-buffering.
> 3. Про тюнинг ZFS написано много, в первую стоит посмотреть на размер ARC -
> по умолчанию ZFS пытается съесть почти всю память и запущенным приложениям
> остаётся мало, иногда аппетиты ZFS приходится ограничивать:
> vfs.zfs.arc_max="16G"
Вот тут не соглашусь. "Съест почти всю память" абсолютно любая ФС,
имеющая кэш. Более того, любая такая ФС _обязана_ использовать всю
память, не занятую приложениями.
И проблема ранее была только в том, что ZFS слишком медленно
освобождала память, что вызывало использование свопа. В общем-то, если
бы данная проблема и существовала до сих пор - ничего страшного для
сервера с 128-256 Г памяти, на котором не запущено ничего, кроме
базовой системы, nginx, sshd и ntpd. ;)
> vfs.zfs.prefetch_disable="1" # это стоит проверять на тестах, но я несколько
> раз сталкивался с тем, что отключение ZFS prefetch ускоряет работу.
А тут соглашусь. При отключенном prefetch чтение становится по сути
однопоточным. Заметил это некоторое время назад случайно, во время
теста ZFS over GELI. При отключенном GELI жрёт одно ядро, при
включенном - больше одного.
Из этого можно сделать вывод, что при большом кол-ве независимых
операций отключение prefetch действительно может дать эффект:
теоретически один клиент получит чуть меньше, но все клиенты вместе -
больше.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|