ПРОЕКТЫ 


  АРХИВ 


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 лучше сквида?



On Wed, 19 Oct 2005, GribUser wrote:

А с каким буфером был собран squid ? И какие размеры книг - от и до ?
128MB я ставил, на убой, это же потолок. Книги обычно меньше метра.
Около половины хитов идет на страницы, а не на собственно книги, там
вообще < 100k обычно. Даунлоадеры народ юзает, но погоду они не делают,
размеры не те.

А как называется параметр ? Я сходу ни в гугле, ни в исходниках squid'а
не нашёл.

Я могу ответить достаточно точно только про nginx. Приходит
клиент c даунлоад-мастером за файлом, допустим, 5M. nginx
скачивает 5М от бэкенда за доли секунды. Даунлоад-мастер
принимает первые 32K и закрывает соединение. Затем открывает,
скажем, 5 потоков, качающих этот файл с разных мест. nginx
все эти запросы передаёт бэкенду и снова быстро их принимает.
То есть, nginx принимает от бэкенда что-то около 20М. Больший
процент системного времени вызван тем, что всё это копируется
сначала Апачом в ядро, а потом nginx'ом из ядра.

При таком раскладе апач никак не должен отставать от nginx по загрузке.
А он отстает безнадежно. Если только я правильно понимаю принцип
измерения загрузки процессора, конечно. Потому что system там или не
system, но загрузка приписывается тому процессу, который к системе
обратился. По-моему так.

Если я забираю файл непосредственно с Апача:
ab -n 500 -c 20 http://localhost:9000/5M

то top выглядит так:

CPU states:  7.5% user,  0.0% nice, 92.5% system,  0.0% interrupt,  0.0% idle
Mem: 81M Active, 61M Inact, 25M Wired, 28K Cache, 35M Buf, 82M Free
Swap: 1024M Total, 1024M Free

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
  458 is        48   0  1212K   788K RUN      0:18 57.74% 45.51% ab
  459 is         2   0  1712K  1248K sbwait   0:01  4.02%  3.12% httpd
  461 is        29   0  1712K  1248K RUN      0:01  3.57%  2.73% httpd
  452 is         2   0  1700K  1248K sbwait   0:01  2.56%  2.39% httpd
  455 is         2   0  1700K  1248K sbwait   0:01  2.56%  2.39% httpd
  451 is         2   0  1700K  1248K sbwait   0:01  2.56%  2.39% httpd
  464 is         2   0  1712K  1248K sbwait   0:01  2.98%  2.25% httpd
  463 is         2   0  1712K  1248K sbwait   0:01  2.91%  2.20% httpd
  453 is         2   0  1700K  1248K sbwait   0:01  2.24%  2.10% httpd
  454 is         2   0  1700K  1248K sbwait   0:01  2.19%  2.05% httpd
  460 is         2   0  1712K  1248K sbwait   0:01  2.36%  1.81% httpd

Апач в сумме набирает 30%, на ab приходится 60%, еще куда-то пропадают
10% (машина ничего не делает, кроме ab).

Как устроен учёт user/system/nice/interrupt/idle, я более или менее
представляю себе, а вот как считается время процесса, представляю
достаточно расплывчато. Я неоднократно видел на FreeBSD, как работают,
скажем, 100 Апачей, у каждого 0.00%, наверху парочка с 0.02%-0.10%,
других активных процессов нет, а user и system time по 10%.

4) время обслуживания запроса в логах Апача. Я, например, не уверен,
    что оно было меньше секунды для больших файлов.
И что это меняет, не понял?

Как что ? Если mod_perl отдаёт дайл-апному клиенту файл в течение минуты,
то тогда зачем вся эта схема фронтенд/бэкенд ?

На файлах бэкенд не тормозил особо, размеры не те, секунду на отклик там
уходило только при полном дауне, но этот случай мы не берем.

Дело не в отлике, а в том, сколько времени mod_perl занят отдачей большого
файла.


Игорь Сысоев
http://sysoev.ru




 




Copyright © Lexa Software, 1996-2009.