IIS vs nginx
От: FreddieM  
Дата: 16.10.10 06:56
Оценка:
Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так? Т.е. сейчас IIS просто не справится с highload приложением, точнее отнимет намного больше ресурсов? В этом контексте IIS проигрывает nginx или это как-то решается?
Re: IIS vs nginx
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.10.10 07:00
Оценка:
Здравствуйте, FreddieM, Вы писали:

FM>Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так? Т.е. сейчас IIS просто не справится с highload приложением, точнее отнимет намного больше ресурсов? В этом контексте IIS проигрывает nginx или это как-то решается?


А может не парить и устроить "забег"?

Тут же самое главное не скорость отдачи контента, а затрачиваемые на это ресурсы.
Re: IIS vs nginx
От: Skipy Rich Россия  
Дата: 16.10.10 07:17
Оценка:
Здравствуйте, FreddieM, Вы писали:

FM>Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток


А кто сказал, что IIS создаёт поток на каждый запрос?
Re[2]: IIS vs nginx
От: WolfHound  
Дата: 16.10.10 08:14
Оценка: 1 (1) +6
Здравствуйте, Skipy Rich, Вы писали:

SR>А кто сказал, что IIS создаёт поток на каждый запрос?

Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.
Вот и гоняйся потом с этим читером...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: IIS vs nginx
От: Pavel Dvorkin Россия  
Дата: 16.10.10 08:41
Оценка: 3 (2) :)
Здравствуйте, WolfHound, Вы писали:

WH>Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.


Добавлю. В системных вызовах есть 2-битовое поле вида АПИ. Одно значение — kernel, другое — win32k.sys, третье — IIS, четвертое зарезервировано.

MS верна себе — давать свои продуктам предпочтение и использовать методы, которые другие не могут себе позволить.
With best regards
Pavel Dvorkin
Re[3]: IIS vs nginx
От: hattab  
Дата: 16.10.10 08:51
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH> SR>А кто сказал, что IIS создаёт поток на каждый запрос?


WH> Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.

WH> Вот и гоняйся потом с этим читером...

Отчего же, в таком случае, на кывте nginx, а не IIS стот как фронтенд?
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[4]: IIS vs nginx
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 16.10.10 10:08
Оценка: 7 (5)
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, WolfHound, Вы писали:


WH>> SR>А кто сказал, что IIS создаёт поток на каждый запрос?


WH>> Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.

WH>> Вот и гоняйся потом с этим читером...

H>Отчего же, в таком случае, на кывте nginx, а не IIS стот как фронтенд?


Исключительно от того, что в данном случае, nginx позволяет весьма гибко спрятать все, что есть на сервере за 80-ый порт. Если заглянуть на неймсервер RSDN, то будет видно, что на нем крутятся:

1) svn.rsdn.ru

VisualSVN собственной персоной (читай: спиленный напильником по самую мушку Apache)

2) projects.rsdn.ru

Trac. Использует свой свобственный веб-сервер.

3) www.nemerle.org nemerle.org nemerle.net www.nemerle.net nemerle.rsdn.ru

Крутится на кастомной сборке WAMP (XAMPP, если быть точным), за исключением /Banners/ — этот локейшн уходит на IIS, т.к. баннеры генерятся Nemerle@ASP.NET кодом.

4) k-press.ru www.k-press.ru k-press.org www.k-press.org

Крутится под IIS

5) files.rsdn.ru

Статика

6) rsdn.ru www.rsdn.ru gzip.rsdn.ru wiki.rsdn.ru

Собственно куски сайта и веб-сервис януса. Крутятся под IIS.

Это только что, что предназначено для паблика, есть еще и закрытые ресурсы для тима. И как прикажешь разруливать весь этот зоопарк на одном порту, учитывая еще и то, что в перспективе, часть этих хостов может быть физически вынесена на второй сервер (/me очень надеется, что рано или поздно это произойдет)? Nginx используется только как реверс-прокси для всего перечисленного, кроме статики на files.rsdn.ru, ее он отдает сам. Не потому что он быстрее IIS, а потому что в этой конфигурации и запросы и ответы в любом случае идут через него и смысла обрабатывать их IIS'ом нет. Кроме того, это весьма кардинальный способ исключения уязвимостей типа LFI (local file including).

Когда, чуть меньше года назад, на RSDN была организована DDOS-атака, помогло лишь выставление наружу IIS со всем, что перечислено в п.6 и отключение nginx нафиг. Позднее, я около недели по ночам проводил нагрузочное тестирование, пытаясь оттюнить nginx так, чтобы он давал на статике производительность, сравнимую с IIS. Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.

Что впрочем, не умаляет всех его достоинств на *nix'ах.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: IIS vs nginx
От: Ночной Смотрящий Россия  
Дата: 16.10.10 20:25
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>MS верна себе — давать свои продуктам предпочтение и использовать методы, которые другие не могут себе позволить.


http.sys можно использовать даже из дотнета. Бери да пользуй.
Re: IIS vs nginx
От: Ночной Смотрящий Россия  
Дата: 16.10.10 20:25
Оценка:
Здравствуйте, FreddieM, Вы писали:

FM>Как я понимаю, nginx отдает статический контент намного быстрее


Не угадал. Статику IIS отдает быстрее.

FM> т.к. на каждый запрос не создается свой поток


Полная ерунда.

FM> и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так?


Нет.

Но самое главное, что противопоставлять IIS и nginx вообще бессмысленно, это разноплановые продукты. IIS полномасштабный веб-сервер и сервер приложений, а nginx это reverse proxy прежде всего.
Re[5]: IIS vs nginx
От: Anton Batenev Россия https://github.com/abbat
Дата: 16.10.10 23:48
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

k> Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.


Количество хостов для nginx при раздаче статики не должны иметь значения — он упирается либо в сеть, либо в диск. По крайней мере, это утверждение справедливо для православных ОС.

Вот на вскидку тест на домашней машинке без каких-либо оптимизаций ОС (настройки по умолчанию). К сожалению ab, как утилита тестирования, ущербна более чем полностью и подчистую выела одно (из двух возможных) ядер (а параллелиться она не умеет). В это же время на втором ядре курил от безделия nginx.

# ab -c 10000 -n 500000 -r 'http://localhost/favicon.ico'

Server Software:        nginx/0.8.41
Server Hostname:        localhost
Server Port:            80

Document Path:          /favicon.ico
Document Length:        2550 bytes

Concurrency Level:      10000
Time taken for tests:   97.325 seconds
Complete requests:      500000
Failed requests:        0
Write errors:           0
Total transferred:      1389747065 bytes
HTML transferred:       1281683550 bytes
Requests per second:    5137.43 [#/sec] (mean)
Time per request:       1946.500 [ms] (mean)
Time per request:       0.195 [ms] (mean, across all concurrent requests)
Transfer rate:          13944.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      200 1085 1018.1    788   10381
Processing:   220  846 319.0    768    2247
Waiting:      169  649 266.8    597    1708
Total:        694 1931 1009.7   1625   11297

Percentage of the requests served within a certain time (ms)
  50%   1625
  66%   1807
  75%   2077
  80%   2269
  90%   2837
  95%   4593
  98%   5146
  99%   5260
 100%  11297 (longest request)
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[3]: IIS vs nginx
От: Anton Batenev Россия https://github.com/abbat
Дата: 16.10.10 23:48
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH> Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.

WH> Вот и гоняйся потом с этим читером...

Так и nginx sendfile может спокойно использовать.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re: IIS vs nginx
От: Anton Batenev Россия https://github.com/abbat
Дата: 17.10.10 00:20
Оценка: 1 (1) +1
Здравствуйте, FreddieM, Вы писали:

FM> Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так?


Да, это так, при условии, что nginx будет работать в родной для него среде — т.е. на *nix. Если же ставить его под windows, то:

В качестве метода обработки соединений используется select, поэтому не стоит ожидать высокой производительности и масштабируемости: пока это бета-версия.


Другими словами, его обгонит любой, кто будет использовать хоть какую-то оптимизацию при работе.
avalon 1.0rc3 rev 363, zlib 1.2.3
Re[4]: IIS vs nginx
От: Sinix  
Дата: 17.10.10 03:23
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Добавлю. В системных вызовах есть 2-битовое поле вида АПИ. Одно значение — kernel, другое — win32k.sys, третье — IIS, четвертое зарезервировано.


Поделитесь источником плиз, Руссинович о таком предательски молчит. И рассказывает о всякой фигне типа хитрой диспетчеризации, Zw и Nt префиксах (см врезку Kernel-Mode System Service Dispatching)
Re[3]: IIS vs nginx
От: FR  
Дата: 17.10.10 06:43
Оценка:
Здравствуйте, WolfHound, Вы писали:

SR>>А кто сказал, что IIS создаёт поток на каждый запрос?

WH>Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.
WH>Вот и гоняйся потом с этим читером...

http://www.rsdn.ru/forum/decl/3998204.1.aspx
Автор: FR
Дата: 14.10.10
Re[4]: IIS vs nginx
От: WolfHound  
Дата: 17.10.10 07:33
Оценка: -1
Здравствуйте, Anton Batenev, Вы писали:

AB>Так и nginx sendfile может спокойно использовать.

Ему всеравно в user mode переключаться надо что бы sendfile вызвать.
А IIS все делает не выходя из ядра.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: IIS vs nginx
От: frogkiller Россия  
Дата: 17.10.10 07:37
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Когда, чуть меньше года назад, на RSDN была организована DDOS-атака, помогло лишь выставление наружу IIS со всем, что перечислено в п.6 и отключение nginx нафиг. Позднее, я около недели по ночам проводил нагрузочное тестирование, пытаясь оттюнить nginx так, чтобы он давал на статике производительность, сравнимую с IIS. Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.


А как ты проводил такое тестирование? Syn-флудом или честными запросами? Если syn-флудом, то может и так, потому что IIS может что-то сделать в кернел-моде. Если полноценными запросами, хотя бы статикой, то не верю.

Да, и как ты смог эмулировать 3000 машин? Для этого их нужно иметь несколько десятков самому. Или ты просто забивал канал под завязку флудом? Но это не совсем честное тестирование.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re[5]: IIS vs nginx
От: Pavel Dvorkin Россия  
Дата: 17.10.10 12:39
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>http.sys можно использовать даже из дотнета. Бери да пользуй.


Что, прямо, минуя Win32 ?
With best regards
Pavel Dvorkin
Re[5]: IIS vs nginx
От: Pavel Dvorkin Россия  
Дата: 17.10.10 12:45
Оценка: 5 (3)
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Добавлю. В системных вызовах есть 2-битовое поле вида АПИ. Одно значение — kernel, другое — win32k.sys, третье — IIS, четвертое зарезервировано.


S>Поделитесь источником плиз, Руссинович о таком предательски молчит.


Нет, не молчит. Именно из книги Соломона-Руссиновича

As you'll see in Chapter 6, each thread has a pointer to its system service table. Windows 2000 has two built-in system service tables, but up to four are supported. The system service dispatcher determines which table contains the requested service by interpreting a 2-bit field in the 32-bit system service number as a table index. The low 12 bits of the system service number serve as the index into the table specified by the table index. The fields are shown in Figure 3-9.

Figure 3-9 System service number to system service translation

<skipped — PD>

A primary default array table, KeServiceDescriptorTable, defines the core executive system services implemented in Ntosrknl.exe. The other table array, KeServiceDescriptorTableShadow, includes the Win32 USER and GDI services implemented in the kernel-mode part of the Win32 subsystem, Win32k.sys. The first time a Win32 thread calls a Win32 USER or GDI service, the address of the thread's system service table is changed to point to a table that includes the Win32 USER and GDI services. The KeAddSystemServiceTable function allows Win32k.sys and other device drivers to add system service tables. If you install Internet Information Services (IIS) on Windows 2000, its support driver (Spud.sys) upon loading defines an additional service table, leaving only one left for definition by third parties. With the exception of the Win32k.sys service table, a service table added with KeAddSystemServiceTable is copied into both the KeServiceDescriptorTable array and the KeServiceDescriptorTableShadow array.

>И рассказывает о всякой фигне типа хитрой диспетчеризации, Zw и Nt префиксах (см врезку Kernel-Mode System Service Dispatching)


Об этом он тоже рассказывает, верно.
With best regards
Pavel Dvorkin
Re[6]: IIS vs nginx
От: Sinix  
Дата: 17.10.10 13:28
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Нет, не молчит. Именно из книги Соломона-Руссиновича

Ух ты! Спасибо! В 5м издании абзац заканчивается на "The KeAddSystemServiceTable function allows Win32k.sys to add a system service table.". Вот что единственное, что не нравится в Руссиновиче — пока не сравнишь два издания, об изменениях во внутренностях не узнаешь
Re[7]: IIS vs nginx
От: Pavel Dvorkin Россия  
Дата: 17.10.10 13:32
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Нет, не молчит. Именно из книги Соломона-Руссиновича

S>Ух ты! Спасибо! В 5м издании абзац заканчивается на "The KeAddSystemServiceTable function allows Win32k.sys to add a system service table.". Вот что единственное, что не нравится в Руссиновиче — пока не сравнишь два издания, об изменениях во внутренностях не узнаешь

Одно из двух — либо убрали, либо к 5 изданию он посчитал, что это не так уж важно — книга-то не резиновая.
А поле там по-прежнему двухбитовое ?
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.