Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Проблема при >1500 одновременных коннектов.
On Tue, Feb 10, 2009 at 06:31:10PM +0300, Artemiev Igor wrote:
> On Tue, Feb 10, 2009 at 03:28:38PM +0300, Вадим wrote:
> > I/O с перегруженного диска медленно => блокировки воркеров => тормоза
> > других клиентов, которые работают со свободными жесткими дисками =>
> > снижение отдачи трафика. При этом load average взлетает до 100 и выше.
> ...
> > Если у кого-то есть мысли буду рад выслушать.
> У меня описанное проседание отдачи наблюдалось на 1 (одном) коннекте при
> отдаче
> гигового файла. При гарантированном попадании в память этого файла. То есть
> sendfile вместо копирования данных из VM ранее вычитанного блока шёл опять
> читать с диска, но при этом отдача по сети становилась 3-4MB/s. Хотя самый
> первый прогон давал 90MB/s. Лимитирования отдачи по скорости нет.
>
> Поэтому мне кажется, что начальное постулирование того, что если у таракана
> оторвать все ноги, то он потеряет слух - несколько неверно.
Это два разных случая.
Я подозреваю, что это проблема взаимодействия sendfile'а и zfs.
У меня при настройках:
kern.ipc.sfrefer: 0
kern.ipc.sfreadahead: 16
MAXPHYS=1M
на FreeBSD 7.0/amd64/4G/ufs первое скачивание:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1064M 100 1064M 0 0 30.9M 0 0:00:34 0:00:34 --:--:-- 31.4M
dT: 1.001s w: 1.000s filter: (ad..|dat)$
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
0 10 10 9719 20.9 0 0 0.0 20.8| ad16
0 10 10 10231 25.5 0 0 0.0 25.5| ad18
1 9 9 8249 24.5 0 0 0.0 22.0| ad20
0 10 10 10231 21.1 0 0 0.0 21.1| ad22
1 39 39 38429 23.0 0 0 0.0 76.7| mirror/dat
Последующие:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1064M 100 1064M 0 0 58.0M 0 0:00:18 0:00:18 --:--:-- 64.1M
dT: 1.001s w: 1.000s filter: (ad..|dat)$
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
0 1 1 1023 38.3 0 0 0.0 3.8| ad16
0 2 2 1982 33.4 0 0 0.0 6.7| ad18
0 2 2 1471 25.8 0 0 0.0 5.1| ad20
0 2 2 1087 18.6 0 0 0.0 3.7| ad22
0 7 7 5563 27.7 0 0 0.0 15.2| mirror/dat
input (bge0) output
packets errs bytes packets errs bytes colls
36K 0 2.3M 52K 0 76M 0
40K 0 2.6M 57K 0 84M 0
40K 0 2.6M 57K 0 84M 0
40K 0 2.6M 57K 0 85M 0
40K 0 2.6M 58K 0 85M 0
CPU states: 0.0% user, 0.0% nice, 2.1% system, 13.2% interrupt, 84.8% idle
Mem: 54M Active, 3378M Inact, 347M Wired, 150M Cache, 212M Buf, 21M Free
Swap: 4096M Total, 1104K Used, 4095M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
742 nobody 1 4 0 12704K 4044K kqread 1 50:07 1.66% nginx
При этом обращения к диску этого процесса, судя по top -mio, практически нет.
То есть, данные берутся из Inactive и отдаются со скоростью сети (сеть bge,
больше 89Mbyte/s отправить не может). Машина при этом ещё отдаёт около 200
файлов медленным клиентам.
--
Игорь Сысоев
http://sysoev.ru
|