ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Несколько непонят ностей по nginx



Igor Sysoev пишет:
On Wed, Apr 25, 2007 at 04:17:51PM +0300, Александр Ворона wrote:

Александр Ворона пишет:
попробовал сам - нужный эффект достигнут. Скорость других закачек с этого воркера падает очень значительно при наличии закачки со 127.0.0.1, sendfile отрабатывает примерно по 1сек при отдаче ~90Мбайт/сек с диска.

А что показывает ktrace -t cn -p worker_pid ? Какие куски отдаёт sendfile
за раз ?

kdump -f ktrace.out > trace
grep -c "CALL  sendfile" trace
239

качал 8G файл.
wget -Y off -O /dev/null http://127.0.0.1:81/3.tmp
--10:49:45--  http://127.0.0.1:81/3.tmp
           => `/dev/null'
Connecting to 127.0.0.1:81... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8,589,934,592 (8.0G) [application/octet-stream]

100%[================================================================================>] 8,589,934,592 86.88M/s ETA 00:00

10:51:24 (82.49 MB/s) - `/dev/null' saved [8589934592/8589934592]

Итого в среднем 34М на вызов

вот кусок trace
  4181 nginx    RET   kevent 1
  4181 nginx    CALL  gettimeofday(0xbf7fe9e8,0)
  4181 nginx    RET   gettimeofday 0
4181 nginx CALL sendfile(0x9,0x6,0xf03e7000,0x1,0xfc19000,0xbf7fe650,0xbf7fe248,0)
  4181 nginx    RET   sendfile -1 errno 35 Resource temporarily unavailable
  4181 nginx    CALL  kevent(0x8,0x80a3000,0,0x80b4000,0x200,0xbf7fea90)
  4181 nginx    RET   kevent 1
  4181 nginx    CALL  gettimeofday(0xbf7fe9e8,0)
  4181 nginx    RET   gettimeofday 0
4181 nginx CALL sendfile(0x9,0x6,0xf0862000,0x1,0xf79e000,0xbf7fe650,0xbf7fe248,0)
  4181 nginx    RET   sendfile -1 errno 35 Resource temporarily unavailable
  4181 nginx    CALL  kevent(0x8,0x80a3000,0,0x80b4000,0x200,0xbf7fea90)
  4181 nginx    RET   kevent 1
  4181 nginx    CALL  gettimeofday(0xbf7fe9e8,0)
  4181 nginx    RET   gettimeofday 0
4181 nginx CALL sendfile(0x9,0x6,0xf262e000,0x1,0xd9d2000,0xbf7fe650,0xbf7fe248,0)
  4181 nginx    RET   gettimeofday 0
4181 nginx CALL sendfile(0x9,0x6,0xb6896000,0x1,0x4976a000,0xbf7fe650,0xbf7fe248,0)
  4181 nginx    RET   sendfile -1 errno 35 Resource temporarily unavailable
  4181 nginx    CALL  kevent(0x8,0x80a3000,0,0x80b4000,0x200,0xbf7fea90)
  4181 nginx    RET   kevent 1
  4181 nginx    CALL  gettimeofday(0xbf7fe9e8,0)
  4181 nginx    RET   gettimeofday 0
4181 nginx CALL sendfile(0x9,0x6,0xb81a4000,0x1,0x47e5c000,0xbf7fe650,0xbf7fe248,0)
  4181 nginx    RET   sendfile -1 errno 35 Resource temporarily unavailable
  4181 nginx    CALL  kevent(0x8,0x80a3000,0,0x80b4000,0x200,0xbf7fea90)
  4181 nginx    RET   kevent 1

ну и для верности кусок strace с таймингами
10:50:03.549899 gettimeofday({0, 0}, NULL) = 0
10:50:03.549945 syscall_393(0x9, 0x6, 0x60ad4000, 0, 0x7ffff000, 0xbf7fe650, 0xbf7fe248, 0) = -1 (errno 35)
10:50:04.080867 kevent(0x8, 0x80a3000, 0, 0x80b4000, 0x200, 0xbf7fea90) = 1
10:50:04.080937 gettimeofday({0, 0}, NULL) = 0
10:50:04.080991 syscall_393(0x9, 0x6, 0x63975000, 0, 0x7ffff000, 0xbf7fe650, 0xbf7fe248, 0) = -1 (errno 35)
10:50:04.161813 kevent(0x8, 0x80a3000, 0, 0x80b4000, 0x200, 0xbf7fea90) = 1
10:50:04.161902 gettimeofday({0, 0}, NULL) = 0
10:50:04.161948 syscall_393(0x9, 0x6, 0x640b3000, 0, 0x7ffff000, 0xbf7fe650, 0xbf7fe248, 0) = -1 (errno 35)
10:50:05.573149 kevent(0x8, 0x80a3000, 0, 0x80b4000, 0x200, 0xbf7fea90) = 1
10:50:05.573204 gettimeofday({0, 0}, NULL) = 0

секунды полторы есть, значит метров 120 за раз

Похоже, нужно директиву вкючать в дистрибутив, но название sendfile_limit
мне не нравится. Нужно название, отражающее смысл "за один раз".

sendfile_max_chunk ?



 




Copyright © Lexa Software, 1996-2009.