Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так? Т.е. сейчас IIS просто не справится с highload приложением, точнее отнимет намного больше ресурсов? В этом контексте IIS проигрывает nginx или это как-то решается?
Здравствуйте, FreddieM, Вы писали:
FM>Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так? Т.е. сейчас IIS просто не справится с highload приложением, точнее отнимет намного больше ресурсов? В этом контексте IIS проигрывает nginx или это как-то решается?
А может не парить и устроить "забег"?
Тут же самое главное не скорость отдачи контента, а затрачиваемые на это ресурсы.
Здравствуйте, Skipy Rich, Вы писали:
SR>А кто сказал, что IIS создаёт поток на каждый запрос?
Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode.
Вот и гоняйся потом с этим читером...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH> SR>А кто сказал, что IIS создаёт поток на каждый запрос?
WH> Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode. WH> Вот и гоняйся потом с этим читером...
Отчего же, в таком случае, на кывте nginx, а не IIS стот как фронтенд?
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, WolfHound, Вы писали:
WH>> SR>А кто сказал, что IIS создаёт поток на каждый запрос?
WH>> Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode. WH>> Вот и гоняйся потом с этим читером...
H>Отчего же, в таком случае, на кывте nginx, а не IIS стот как фронтенд?
Исключительно от того, что в данном случае, nginx позволяет весьма гибко спрятать все, что есть на сервере за 80-ый порт. Если заглянуть на неймсервер RSDN, то будет видно, что на нем крутятся:
1) svn.rsdn.ru
VisualSVN собственной персоной (читай: спиленный напильником по самую мушку Apache)
Крутится на кастомной сборке WAMP (XAMPP, если быть точным), за исключением /Banners/ — этот локейшн уходит на IIS, т.к. баннеры генерятся Nemerle@ASP.NET кодом.
Собственно куски сайта и веб-сервис януса. Крутятся под IIS.
Это только что, что предназначено для паблика, есть еще и закрытые ресурсы для тима. И как прикажешь разруливать весь этот зоопарк на одном порту, учитывая еще и то, что в перспективе, часть этих хостов может быть физически вынесена на второй сервер (/me очень надеется, что рано или поздно это произойдет)? Nginx используется только как реверс-прокси для всего перечисленного, кроме статики на files.rsdn.ru, ее он отдает сам. Не потому что он быстрее IIS, а потому что в этой конфигурации и запросы и ответы в любом случае идут через него и смысла обрабатывать их IIS'ом нет. Кроме того, это весьма кардинальный способ исключения уязвимостей типа LFI (local file including).
Когда, чуть меньше года назад, на RSDN была организована DDOS-атака, помогло лишь выставление наружу IIS со всем, что перечислено в п.6 и отключение nginx нафиг. Позднее, я около недели по ночам проводил нагрузочное тестирование, пытаясь оттюнить nginx так, чтобы он давал на статике производительность, сравнимую с IIS. Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.
Что впрочем, не умаляет всех его достоинств на *nix'ах.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>MS верна себе — давать свои продуктам предпочтение и использовать методы, которые другие не могут себе позволить.
http.sys можно использовать даже из дотнета. Бери да пользуй.
Здравствуйте, FreddieM, Вы писали:
FM>Как я понимаю, nginx отдает статический контент намного быстрее
Не угадал. Статику IIS отдает быстрее.
FM> т.к. на каждый запрос не создается свой поток
Полная ерунда.
FM> и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так?
Нет.
Но самое главное, что противопоставлять IIS и nginx вообще бессмысленно, это разноплановые продукты. IIS полномасштабный веб-сервер и сервер приложений, а nginx это reverse proxy прежде всего.
Здравствуйте, 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)
Здравствуйте, WolfHound, Вы писали:
WH> Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode. WH> Вот и гоняйся потом с этим читером...
Здравствуйте, FreddieM, Вы писали:
FM> Как я понимаю, nginx отдает статический контент намного быстрее т.к. на каждый запрос не создается свой поток и при очень большом количестве запросов он просто должен быть намного быстрее IIS. Это так?
Да, это так, при условии, что nginx будет работать в родной для него среде — т.е. на *nix. Если же ставить его под windows, то:
В качестве метода обработки соединений используется select, поэтому не стоит ожидать высокой производительности и масштабируемости: пока это бета-версия.
Другими словами, его обгонит любой, кто будет использовать хоть какую-то оптимизацию при работе.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Добавлю. В системных вызовах есть 2-битовое поле вида АПИ. Одно значение — kernel, другое — win32k.sys, третье — IIS, четвертое зарезервировано.
Поделитесь источником плиз, Руссинович о таком предательски молчит. И рассказывает о всякой фигне типа хитрой диспетчеризации, Zw и Nt префиксах (см врезку Kernel-Mode System Service Dispatching)
Здравствуйте, WolfHound, Вы писали:
SR>>А кто сказал, что IIS создаёт поток на каждый запрос? WH>Да я больше скажу... часть IIS'а живет в ядре и может раздавать статику даже не выходя в user mode. WH>Вот и гоняйся потом с этим читером...
Здравствуйте, Anton Batenev, Вы писали:
AB>Так и nginx sendfile может спокойно использовать.
Ему всеравно в user mode переключаться надо что бы sendfile вызвать.
А IIS все делает не выходя из ядра.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Когда, чуть меньше года назад, на RSDN была организована DDOS-атака, помогло лишь выставление наружу IIS со всем, что перечислено в п.6 и отключение nginx нафиг. Позднее, я около недели по ночам проводил нагрузочное тестирование, пытаясь оттюнить nginx так, чтобы он давал на статике производительность, сравнимую с IIS. Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.
А как ты проводил такое тестирование? Syn-флудом или честными запросами? Если syn-флудом, то может и так, потому что IIS может что-то сделать в кернел-моде. Если полноценными запросами, хотя бы статикой, то не верю.
Да, и как ты смог эмулировать 3000 машин? Для этого их нужно иметь несколько десятков самому. Или ты просто забивал канал под завязку флудом? Но это не совсем честное тестирование.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, 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)
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Нет, не молчит. Именно из книги Соломона-Руссиновича
Ух ты! Спасибо! В 5м издании абзац заканчивается на "The KeAddSystemServiceTable function allows Win32k.sys to add a system service table.". Вот что единственное, что не нравится в Руссиновиче — пока не сравнишь два издания, об изменениях во внутренностях не узнаешь
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Нет, не молчит. Именно из книги Соломона-Руссиновича S>Ух ты! Спасибо! В 5м издании абзац заканчивается на "The KeAddSystemServiceTable function allows Win32k.sys to add a system service table.". Вот что единственное, что не нравится в Руссиновиче — пока не сравнишь два издания, об изменениях во внутренностях не узнаешь
Одно из двух — либо убрали, либо к 5 изданию он посчитал, что это не так уж важно — книга-то не резиновая.
А поле там по-прежнему двухбитовое ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Одно из двух — либо убрали, либо к 5 изданию он посчитал, что это не так уж важно — книга-то не резиновая. PD>А поле там по-прежнему двухбитовое ?
Убрали вроде бы. И, да
As you’ll see in Chapter 5, each thread has a pointer to its system service table (on 32-bit and
IA64 versions of Windows only; otherwise, the table address is hard-coded). Windows has two
built-in system service tables, and third-party drivers cannot extend the tables to add their own
service calls. 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.
Кстати, а что это IIS делал в ядре win2k, если поддержка Kernel-Mode Caching появилась только в 6ке?
Здравствуйте, Ночной Смотрящий, Вы писали:
PD>>Что, прямо, минуя Win32 ?
НС>Смотря что понимать под Win32.
Возможны 2 варианта.
1. Дотнет непосредственно выполняет в каком-то своем месте sysenter (или int 2eh), а в ядре есть обработчик этого системного вызова, недоступный не-дотнетовским программам. Тогда говорить о вызове через Win API действительно не приходится.
2. Дотнет вызывает некую функцию Win API (kernel, user, gdi, advapi и прочее и прочее, в крайнем случае даже ntdll.dll), которая это делает. Эта же функция вполне может быть вызвана из недотнетовских приложений.
Иными словами — дотнет непосредственно переключает в нулевое кольцо или же через какую-то функцию какой-то недотнетовской DLL третьего кольца ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>2. Дотнет вызывает некую функцию Win API (kernel, user, gdi, advapi и прочее и прочее, в крайнем случае даже ntdll.dll), которая это делает. Эта же функция вполне может быть вызвана из недотнетовских приложений.
PD>Иными словами — дотнет непосредственно переключает в нулевое кольцо или же через какую-то функцию какой-то недотнетовской DLL третьего кольца ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>MS верна себе — давать свои продуктам предпочтение и использовать методы, которые другие не могут себе позволить.
Насколько я понимаю, даже кухарка может написать драйвер, не? И раздавать своё http не выходя в user mode?
Здравствуйте, WolfHound, Вы писали:
AB>>Так и nginx sendfile может спокойно использовать. WH>Ему всеравно в user mode переключаться надо что бы sendfile вызвать. WH>А IIS все делает не выходя из ядра.
Так, главное не паниковать!
Я тестил nging/lighttpd на правильной ОС (aka Debian Stable с ядром Linux 2.6.35) с помощью сервировки статических файлов случайного размера от 10 байт до 10 мегабайт. Он вполне себе догнал IIS на этом же железе. Профилирование показало, что большая часть времени уходит на сетевой стек и спасает receive packet steering из 2.6.35.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>2. Дотнет вызывает некую функцию Win API (kernel, user, gdi, advapi и прочее и прочее, в крайнем случае даже ntdll.dll), которая это делает. Эта же функция вполне может быть вызвана из недотнетовских приложений.
PD>>Иными словами — дотнет непосредственно переключает в нулевое кольцо или же через какую-то функцию какой-то недотнетовской DLL третьего кольца ?
НС>http://msdn.microsoft.com/en-us/library/aa384273(v=VS.85).aspx
Обе ссылки (и эта, и из следующего письма) ведут на нормальные куски Win API — по моему варианту 2, то есть не непосредственно. В этом смысле их вызов из дотнета ничем не отличается от вызова из дотнета какой-нибудь CreatePen.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Обе ссылки (и эта, и из следующего письма) ведут на нормальные куски Win API — по моему варианту 2, то есть не непосредственно.
Ну вобщем да.
PD> В этом смысле их вызов из дотнета ничем не отличается от вызова из дотнета какой-нибудь CreatePen.
В принципе да. Это не отменяет того факта, что услугами http.sys можно воспользоваться из своего кода.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>1) svn.rsdn.ru KV>VisualSVN собственной персоной (читай: спиленный напильником по самую мушку Apache) KV>2) projects.rsdn.ru KV>Trac. Использует свой свобственный веб-сервер.
Честно говоря, до сих пор не понимаю, почему вы их сделали отдельно.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, kochetkov.vladimir, Вы писали:
k>> Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.
AB>Количество хостов для nginx при раздаче статики не должны иметь значения — он упирается либо в сеть, либо в диск. По крайней мере, это утверждение справедливо для православных ОС.
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Когда, чуть меньше года назад, на RSDN была организована DDOS-атака, помогло лишь выставление наружу IIS со всем, что перечислено в п.6 и отключение nginx нафиг. Позднее, я около недели по ночам проводил нагрузочное тестирование, пытаясь оттюнить nginx так, чтобы он давал на статике производительность, сравнимую с IIS. Но чуда не приключилось, IIS как рвала его как тот тузик, так и продолжала рвать, как только количество хостов в эмулируемом ботнете переваливало за 2500-3000. До этого порога, они показывали сравнимую производительность.
F>А как ты проводил такое тестирование? Syn-флудом или честными запросами?
Честными, конечно. Syn-флуд данный конкретный сервер выдержит настолько, насколько выдержит его канал, поэтому его и смысла нет замерять.
F>Если syn-флудом, то может и так, потому что IIS может что-то сделать в кернел-моде. Если полноценными запросами, хотя бы статикой, то не верю.
Проверь
F>Да, и как ты смог эмулировать 3000 машин? Для этого их нужно иметь несколько десятков самому.
Я машины не эмулировал, я эмулировал ботнет. Машины были настоящие, и их было несколько сотен
F>Или ты просто забивал канал под завязку флудом? Но это не совсем честное тестирование.
Кроме того, я еще и атаковал сервер локально, отправляя максимально-достижимое количество запросов потоками со всех ядер, на которых не было воркеров nginx'а.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>В принципе да. Это не отменяет того факта, что услугами http.sys можно воспользоваться из своего кода.
Можно, только в том же смысле, что и услугами ntoskrnl.exe или win32k.sys. Напрямую нельзя, вызов пойдет через неуправляемую DLL 3-го кольца, соответственно kernel32.dll для ядра и Winhttp.dll в данном случае.
Здравствуйте, kochetkov.vladimir, Вы писали:
F>>А как ты проводил такое тестирование? Syn-флудом или честными запросами?
KV>Честными, конечно. Syn-флуд данный конкретный сервер выдержит настолько, насколько выдержит его канал, поэтому его и смысла нет замерять.
F>>Если syn-флудом, то может и так, потому что IIS может что-то сделать в кернел-моде. Если полноценными запросами, хотя бы статикой, то не верю.
KV>Проверь
А... Я уже понял, nginx ты запускал тоже под виндой. Ну так это тоже не честно
F>>Да, и как ты смог эмулировать 3000 машин? Для этого их нужно иметь несколько десятков самому.
KV>Я машины не эмулировал, я эмулировал ботнет. Машины были настоящие, и их было несколько сотен
Ай-ай-ай
F>>Или ты просто забивал канал под завязку флудом? Но это не совсем честное тестирование.
KV>Кроме того, я еще и атаковал сервер локально, отправляя максимально-достижимое количество запросов потоками со всех ядер, на которых не было воркеров nginx'а.
Ну, так можно стрелять только по тяжёлым бекендам.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>1) svn.rsdn.ru KV>>VisualSVN собственной персоной (читай: спиленный напильником по самую мушку Apache) KV>>2) projects.rsdn.ru KV>>Trac. Использует свой свобственный веб-сервер.
A>Честно говоря, до сих пор не понимаю, почему вы их сделали отдельно.
Наверное потому что выделено. Я не знаю способов поднять два вебсервера на одном порту на машине.
Здравствуйте, gandjustas, Вы писали:
A>>Честно говоря, до сих пор не понимаю, почему вы их сделали отдельно. G>Наверное потому что выделено. Я не знаю способов поднять два вебсервера на одном порту на машине.
Trac, SVN, MErcurial и почти всё остальное можно (и зачастую нужно) установить как модули в Апач.
Здравствуйте, adontz, Вы писали:
A>Trac, SVN, MErcurial и почти всё остальное можно (и зачастую нужно) установить как модули в Апач.
Я надеюсь ты не предлагаешь выставлять наружу апач?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
A>>Trac, SVN, MErcurial и почти всё остальное можно (и зачастую нужно) установить как модули в Апач. WH>Я надеюсь ты не предлагаешь выставлять наружу апач?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Можно, только в том же смысле, что и услугами ntoskrnl.exe или win32k.sys. Напрямую нельзя, вызов пойдет через неуправляемую DLL 3-го кольца, соответственно kernel32.dll для ядра и Winhttp.dll в данном случае.
Здравствуйте, Ночной Смотрящий, Вы писали:
PD>>Можно, только в том же смысле, что и услугами ntoskrnl.exe или win32k.sys. Напрямую нельзя, вызов пойдет через неуправляемую DLL 3-го кольца, соответственно kernel32.dll для ядра и Winhttp.dll в данном случае.
НС>Это что то меняет?
Конечно. Если бы речь шла о прямом вызове дотнет-ядро, это бы обозначало, что дотнет занял в системе совершенно иное место, чем сейчас, а именно, роль некоего системного АПИ, а не надстройки над АПИ
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Конечно. Если бы речь шла о прямом вызове дотнет-ядро, это бы обозначало, что дотнет занял в системе совершенно иное место, чем сейчас, а именно, роль некоего системного АПИ, а не надстройки над АПИ
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>1) svn.rsdn.ru KV>>VisualSVN собственной персоной (читай: спиленный напильником по самую мушку Apache) KV>>2) projects.rsdn.ru KV>>Trac. Использует свой свобственный веб-сервер.
A>Честно говоря, до сих пор не понимаю, почему вы их сделали отдельно.
Потому что visualsvn'овский апач кастомизирован поставщиками этого продукта и заточен под использование только с их продуктом. Под ним можно закрутить trac, но после следующего же обновления vsvn, вся эта конфигурация будет похерена обновляльщиком vsvn, либо будет похерен автообновляльщик, это как повезет.
Здравствуйте, frogkiller, Вы писали:
F>А... Я уже понял, nginx ты запускал тоже под виндой. Ну так это тоже не честно
Вообще-то я тут только про ситуацию "под виндой" и говорил, если что Честно или нет — другой вопрос, я же тестировал не для КСВ, а в рамках решения конкретной задачи, в которой nginx крутится под виндой.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Потому что visualsvn'овский апач кастомизирован поставщиками этого продукта и заточен под использование только с их продуктом. Под ним можно закрутить trac, но после следующего же обновления vsvn, вся эта конфигурация будет похерена обновляльщиком vsvn, либо будет похерен автообновляльщик, это как повезет.
Ну вот честно говоря, настроить апач для SVN и Trac мне оказалось проще, чем бороться с VisualSVN.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Ну вот честно говоря, настроить апач для SVN и Trac мне оказалось проще, чем бороться с VisualSVN. НС>А зачем с vsvn бороться?
Нестандартная (для VSVN) аутентификация, права доступа на проекты для групп пользователей, согласованные права доступа на SVN и Trac одного проекта. С нормальным апачем конфигурация для проектов (VCS + Trac) выглядит как всего одна строка:
Use PublicProject nabu
Use PrivateProject seshet
VSVN — страшненький кастрат, полный апач гораздо более мощный софт.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Нестандартная (для VSVN) аутентификация, права доступа на проекты для групп пользователей НС>Зачем это на rsdn?
Что зачем? Группы пользователей или аутентификация отличная от htpasswd?
A>>, согласованные права доступа на SVN и Trac одного проекта. НС>Они и так согласованы.
я говорю об удобстве администрирования.
A>>VSVN — страшненький кастрат, полный апач гораздо более мощный софт. НС>Только эта гораздость не всегда нужна.
Ну в том чтобы от неё отказаться я плюсов не вижу. Без помощи легко освоил администрирование апача в необходимом мне объёме.
Здравствуйте, adontz, Вы писали:
A>>>Нестандартная (для VSVN) аутентификация, права доступа на проекты для групп пользователей НС>>Зачем это на rsdn?
A>Что зачем? Группы пользователей или аутентификация отличная от htpasswd?
Единственная аутентификация, которая нужна на RSDN, это аутентификация по собственной кастомной БД. Готового модуля для Апача, хотя бы умеющего аутентифицировать по html-странице, как это умеет делать tracd, нету. Соотв. толку от апача ноль.
A>>>, согласованные права доступа на SVN и Trac одного проекта. НС>>Они и так согласованы.
A>я говорю об удобстве администрирования.
Насколько я понимаю, тебе прямо сказали, что намного удобнее установить VSVN не включая моск, нежели настраивать апач.
A>>>VSVN — страшненький кастрат, полный апач гораздо более мощный софт. НС>>Только эта гораздость не всегда нужна.
A>Ну в том чтобы от неё отказаться я плюсов не вижу.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Что зачем? Группы пользователей или аутентификация отличная от htpasswd? НС>Единственная аутентификация, которая нужна на RSDN, это аутентификация по собственной кастомной БД. Готового модуля для Апача, хотя бы умеющего аутентифицировать по html-странице, как это умеет делать tracd, нету. Соотв. толку от апача ноль.
Аутентификация по кастомной БД у апача есть, аутентификация HTML страничками — моветон.
A>>я говорю об удобстве администрирования. НС>Насколько я понимаю, тебе прямо сказали, что намного удобнее установить VSVN не включая моск, нежели настраивать апач.
А чего это ты раздражаешься? админситрировать надо tracd И VisualSVN.
A>>Ну в том чтобы от неё отказаться я плюсов не вижу. НС>А штатный админ rsdn, судя по всему, видит.
Здравствуйте, adontz, Вы писали:
A>Аутентификация по кастомной БД у апача есть
Ты уверен?
A>, аутентификация HTML страничками — моветон.
Зато работает. Да и чем оно тебе моветон — непонятно.
A>>>я говорю об удобстве администрирования. НС>>Насколько я понимаю, тебе прямо сказали, что намного удобнее установить VSVN не включая моск, нежели настраивать апач.
A>А чего это ты раздражаешься?
Тебе показалось
A> админситрировать надо tracd И VisualSVN.
Последний администрировать не надо. Запустил инсталлятор и оно работает. В том и прелесть.
НС>>А штатный админ rsdn, судя по всему, видит.
A>И что мешает их озвучить?
Спроси у него. Замечу, кстати, что пользователей у VSVN существенно больше одного, и все они тоже видят.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Аутентификация по кастомной БД у апача есть НС>Ты уверен?
mod_auth + mod_dbd
A>>, аутентификация HTML страничками — моветон. НС>Зато работает. Да и чем оно тебе моветон — непонятно.
Есть HTTP аутентификация со стандартными кодами. Например, 401 Authorization Required.
A>> админситрировать надо tracd И VisualSVN. НС>Последний администрировать не надо. Запустил инсталлятор и оно работает. В том и прелесть.
Тем не менее на репозитории SVN надо раздавать права доступа, причём эти права доступа коррелируют с правами доступа на проекты Trac, так что запустил-и-работает мягко говоря не соответствует истине.
НС>Спроси у него. Замечу, кстати, что пользователей у VSVN существенно больше одного, и все они тоже видят.
Пользователи VSVN — люди которым нужно быстро развернуть Subversion over HTTP не вникая в подробности реализации. Быстрый старт — единственное преимущество. Если уж на то пошло, что Apache, что Subversion, что Trac серверы запускать под Windows уже довольно таки неправильно в связи с ограничениями функциональности портированных версий. У меня не самая сложная инфраструктура, но я успел упереться в ограничения. Не думаю что у РСДН инфраструктура существенно проще моей.
Здравствуйте, adontz, Вы писали:
A>>>Аутентификация по кастомной БД у апача есть НС>>Ты уверен?
A>mod_auth + mod_dbd
Первый хранит информацию исключительно в файлах. Есть еще mod_auth_dbm и mod_auth_db, но речь о berkley db и исключительно собственном формате апача с его собственным хешем. Очень сомневаюсь, что на rsdn формат и хеш такие же.
Второй вообще не предоставляет пользовательского функционала и предназначен для программного использования в других модулях.
Итого, то о чем я и говорил — для rsdn аутентификации нужно писать свой собственный модуль.
A>>>, аутентификация HTML страничками — моветон. НС>>Зато работает. Да и чем оно тебе моветон — непонятно.
A>Есть HTTP аутентификация со стандартными кодами. Например, 401 Authorization Required.
И что? Именно HTTP аутентификацию со стандартными кодами trac и использует, как для собственно аутентификации, так и для обращения к аутентифицирующему url.
НС>>Последний администрировать не надо. Запустил инсталлятор и оно работает. В том и прелесть.
A>Тем не менее на репозитории SVN надо раздавать права доступа
Это в любом случае надо, вне зависимости от настроек апача.
A>, причём эти права доступа коррелируют с правами доступа на проекты Trac
Насколько я вижу никакой корреляции на rsdn нет.
НС>>Спроси у него. Замечу, кстати, что пользователей у VSVN существенно больше одного, и все они тоже видят.
A>Пользователи VSVN — люди которым нужно быстро развернуть Subversion over HTTP не вникая в подробности реализации. Быстрый старт — единственное преимущество.
Ага, так все таки преимущество есть. Осталось понять, что преимуществ у руками настроенного апача в случае rsdn нет.
A> Если уж на то пошло, что Apache, что Subversion, что Trac серверы запускать под Windows уже довольно таки неправильно в связи с ограничениями функциональности портированных версий.
Учитывая, что сервер у rsdn один и он под виндой, очень ценные у тебя советы получаются. Типичные шашечки вместо ехать.
Да, жаль тебя разочаровывать, но SVN не портирован под винду, это была изначально одна из основных его платформ. Что же касается Trac, то это вообще прекрасная демонстрация того, что ты даешь советы абсолютно при этом не разбираясь в предмете. Trac написан на Питоне и никто никуда его не портировал.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>mod_auth + mod_dbd НС>Первый хранит информацию исключительно в файлах. Есть еще mod_auth_dbm и mod_auth_db, но речь о berkley db и исключительно собственном формате апача с его собственным хешем. Очень сомневаюсь, что на rsdn формат и хеш такие же. НС>Второй вообще не предоставляет пользовательского функционала и предназначен для программного использования в других модулях. НС>Итого, то о чем я и говорил — для rsdn аутентификации нужно писать свой собственный модуль.
Ты значок '+' между имена модулей специально не заметил?
A>>Есть HTTP аутентификация со стандартными кодами. Например, 401 Authorization Required. НС>И что? Именно HTTP аутентификацию со стандартными кодами trac и использует, как для собственно аутентификации, так и для обращения к аутентифицирующему url.
Ты жаловался на отсутствие HTML страничек, не я.
НС>Это в любом случае надо, вне зависимости от настроек апача.
Вопрос только только в том, насколько это удобно.
A>>, причём эти права доступа коррелируют с правами доступа на проекты Trac НС>Насколько я вижу никакой корреляции на rsdn нет.
Корреляция очевидна. Например, какой смысл давать право закрывать тикет, но не давать право коммитить код?
A>>Пользователи VSVN — люди которым нужно быстро развернуть Subversion over HTTP не вникая в подробности реализации. Быстрый старт — единственное преимущество. НС>Ага, так все таки преимущество есть. Осталось понять, что преимуществ у руками настроенного апача в случае rsdn нет.
Вернее, лично ты их не видишь.
A>> Если уж на то пошло, что Apache, что Subversion, что Trac серверы запускать под Windows уже довольно таки неправильно в связи с ограничениями функциональности портированных версий. НС>Учитывая, что сервер у rsdn один и он под виндой, очень ценные у тебя советы получаются. Типичные шашечки вместо ехать.
Сервер у РСДН не один, ты плохо информирован. Кроме того, никто не заставляет хранить dev окружение на том же сервере. Для разработки хватило бы дешёвой VDSки.
НС>Да, жаль тебя разочаровывать, но SVN не портирован под винду, это была изначально одна из основных его платформ. Что же касается Trac, то это вообще прекрасная демонстрация того, что ты даешь советы абсолютно при этом не разбираясь в предмете. Trac написан на Питоне и никто никуда его не портировал.
Жаль разочаровывать тебя, не SVN писался не с нуля и использует всякие дурацкие библиотеки типа neon. Подумай почему под виндой нет 64битной версии SVN, а под Линуксом запросто, прежде чем писать всякие глупости. И трак это не только питон, но и куча плагинов, а питон — не только python.exe, но и куча библиотек. Я уже несколько лет поддерживаю конфигурацию apache+trac+subversion (последний год ещё и apache+trac+mercurial), начиная с версии 0.9 трака, на нескольких серверах, сам компилирую и модули апача и интепретатор питона, и плагины к траку ставлю. Не надо мне рассказывать как это работает, я это прекрасно знаю сам.
Здравствуйте, adontz, Вы писали:
A>Ты значок '+' между имена модулей специально не заметил?
Ну не томи уже, расскажи про чудесную фичу.
НС>>И что? Именно HTTP аутентификацию со стандартными кодами trac и использует, как для собственно аутентификации, так и для обращения к аутентифицирующему url.
A>Ты жаловался на отсутствие HTML страничек, не я.
Ты даже не понял о чем я. В Trac, точнее в плагине к нему есть режим аутентификации, когда эта аутентификация делегируется внешнему http ресурсу. Таким образом для прикручивания rsdn аутентификации к нему достаточно просто на IIS выставить страничку со штатной аутентификацией по родной базе. Думаю, именно так на rsdn аутентификация в траке и сделана.
НС>>Это в любом случае надо, вне зависимости от настроек апача.
A>Вопрос только только в том, насколько это удобно.
И что неудобного в VSVN? Там есть нормальный гуевый редактор настроек, где все просто и понятно.
НС>>Насколько я вижу никакой корреляции на rsdn нет.
A>Корреляция очевидна. Например, какой смысл давать право закрывать тикет, но не давать право коммитить код?
Насколько я знаю, на rsdn ни на одном инстансе трака нет деления большего, чем админ/аутентифицированный юзер/аноним. И вроде бы никто от этого не страдает.
НС>>Ага, так все таки преимущество есть. Осталось понять, что преимуществ у руками настроенного апача в случае rsdn нет.
A>Вернее, лично ты их не видишь.
И админы rsdn тоже не видят. Один Рома видит.
НС>>Учитывая, что сервер у rsdn один и он под виндой, очень ценные у тебя советы получаются. Типичные шашечки вместо ехать.
A>Сервер у РСДН не один, ты плохо информирован.
А может ты плохо проинформирован?
A> Кроме того, никто не заставляет хранить dev окружение на том же сервере. Для разработки хватило бы дешёвой VDSки.
Админ из тебя, уж извини ...
A>Подумай почему под виндой нет 64битной версии SVN
О, еще одна демонстрация твоего знания предмета. С тобой даже аргументы особо не нужны, ты сам себя дискредитируешь http://www.collab.net/downloads/subversion/
A>И трак это не только питон, но и куча плагинов
Ага, тоже на питоне.
A>, а питон — не только python.exe, но и куча библиотек.
И тоже, что характерно, на питоне в основном. Ну разве что за исключением вещей типа низкоуровневой части биндингов к БД.
A> Я уже несколько лет поддерживаю конфигурацию apache+trac+subversion (последний год ещё и apache+trac+mercurial), начиная с версии 0.9 трака, на нескольких серверах, сам компилирую и модули апача и интепретатор питона, и плагины к траку ставлю. Не надо мне рассказывать как это работает, я это прекрасно знаю сам.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Ты значок '+' между имена модулей специально не заметил? НС>Ну не томи уже, расскажи про чудесную фичу.
Можно для аутентификации использовать SQL запрос
НС>Ты даже не понял о чем я. В Trac, точнее в плагине к нему есть режим аутентификации, когда эта аутентификация делегируется внешнему http ресурсу. Таким образом для прикручивания rsdn аутентификации к нему достаточно просто на IIS выставить страничку со штатной аутентификацией по родной базе. Думаю, именно так на rsdn аутентификация в траке и сделана.
Можно интегрироваться с базой RSDN способо описанным выше.
A>>Вопрос только только в том, насколько это удобно. НС>И что неудобного в VSVN? Там есть нормальный гуевый редактор настроек, где все просто и понятно.
Просто и понятно != удобно. Блокнот — простая и понятная программа.
НС>Насколько я знаю, на rsdn ни на одном инстансе трака нет деления большего, чем админ/аутентифицированный юзер/аноним. И вроде бы никто от этого не страдает.
То есть кто угодно может закрыть тикет? Ну-ну.
НС>И админы rsdn тоже не видят. Один Рома видит.
Ты админ РСДН? Ты их спрашивал? Они не маленькие, сами за себя скажут. И ты говори за себя.
A>> Кроме того, никто не заставляет хранить dev окружение на том же сервере. Для разработки хватило бы дешёвой VDSки. НС> Админ из тебя, уж извини ...
Аргументов не осталось, переход на личности. Да, production и development на одном сервере явно круче.
НС>О, еще одна демонстрация твоего знания предмета. С тобой даже аргументы особо не нужны, ты сам себя дискредитируешь НС>http://www.collab.net/downloads/subversion/
Эти версии не включают 64битной интеграции с Apache, ты бы это знал если бы пользовался Subversion не на уровне поиска в гугле.
A>>И трак это не только питон, но и куча плагинов НС>Ага, тоже на питоне.
Использование языка, само по себе, не может обеспечить кроссплатформенности.
A>>, а питон — не только python.exe, но и куча библиотек. НС>И тоже, что характерно, на питоне в основном. Ну разве что за исключением вещей типа низкоуровневой части биндингов к БД.
Использование языка, само по себе, не может обеспечить кроссплатформенности.
Здравствуйте, adontz, Вы писали:
НС>>Ну не томи уже, расскажи про чудесную фичу.
A>Можно для аутентификации использовать SQL запрос
SQL запрос научился хеш вычислять? И можно ссылочку на подобное, чтобы без написания кода?
НС>>И что неудобного в VSVN? Там есть нормальный гуевый редактор настроек, где все просто и понятно.
A>Просто и понятно != удобно.
Кому как
A> Блокнот — простая и понятная программа.
Зато апачевский конфиг — не очень.
НС>>Насколько я знаю, на rsdn ни на одном инстансе трака нет деления большего, чем админ/аутентифицированный юзер/аноним. И вроде бы никто от этого не страдает.
A>То есть кто угодно может закрыть тикет? Ну-ну.
На публичных — так и есть.
НС>>И админы rsdn тоже не видят. Один Рома видит.
A>Ты админ РСДН? Ты их спрашивал?
Зачем спрашивать, если известен результат — используется VSVN?
A> Они не маленькие, сами за себя скажут.
А они уже сказали. Ты не забыл с чего этот тред начался?
A>Аргументов не осталось, переход на личности. Да, production и development на одном сервере явно круче.
Если сервер один — вариантов нет. А предлагать рукопашную настройку апача в виртуалке с другой ОС вместо инсталляции VSVN и мотивировать это простотой администрирования — на подобную логику только уникумы способны.
A>Эти версии не включают 64битной интеграции с Apache
Ты хвостом то не виляй. Ты утверждал что самого svn не бывает 64-хбитного. О том что апач для винды неродной я и не спорил.
A>Использование языка, само по себе, не может обеспечить кроссплатформенности.
В случае трака — может.
НС>>И тоже, что характерно, на питоне в основном. Ну разве что за исключением вещей типа низкоуровневой части биндингов к БД.
A>Использование языка, само по себе, не может обеспечить кроссплатформенности.
Хватит уже абстрактную ерунду писать. Давай конкретно — что в траке плохо работает на винде? Конкретные факты. Иначе это пустой треп.
Здравствуйте, kochetkov.vladimir, Вы писали:
k> AB>Количество хостов для nginx при раздаче статики не должны иметь значения — он упирается либо в сеть, либо в диск. По крайней мере, это утверждение справедливо для православных ОС. k> Ну извините
Да, но винить в этом случае nginx как продукт как-то неправильно. Винить порт nginx сделанный по принципу "абы-работало" — не вопрос.
Здравствуйте, Ночной Смотрящий, Вы писали:
A>>Эти версии не включают 64битной интеграции с Apache НС>Ты хвостом то не виляй.
То есть ты не раздражаешься, не хамишь, на личности не переходишь. Ага. Видимо ты не можешь признать ошибку, подтвердив что Subversion (а вовсе не Apache) для Windows не родной, потому что модули Subversion для Apache — часть Subversion, а не Apache. Чтобы это знать, надо этим пользоваться. 64битный Apache под Windows есть.
A>>Использование языка, само по себе, не может обеспечить кроссплатформенности. НС>В случае трака — может.
Озвученные фантазии не становятся реальностью.
НС>>>И тоже, что характерно, на питоне в основном. Ну разве что за исключением вещей типа низкоуровневой части биндингов к БД. A>>Использование языка, само по себе, не может обеспечить кроссплатформенности. НС>Хватит уже абстрактную ерунду писать. Давай конкретно — что в траке плохо работает на винде? Конкретные факты. Иначе это пустой треп.
Плохо работает не Trac. Плохо работают некоторые плагины Tracи плохо работает Apache . Если бы ты не только писал, но и читал, мне бы не пришлось это объяснять в каждом сообщении. Если оставить в покое все прелести использования для Apache родной ОС и вернуться к сути вопроса, tracd и VisualSVN — решения, единственным преимуществом которых является быстрое развёртывание.
Здравствуйте, adontz, Вы писали:
НС>>И админы rsdn тоже не видят. Один Рома видит. A>Ты админ РСДН? Ты их спрашивал? Они не маленькие, сами за себя скажут.
Здравствуйте, Anton Batenev, Вы писали:
AB>Да, но винить в этом случае nginx как продукт как-то неправильно. Винить порт nginx сделанный по принципу "абы-работало" — не вопрос.
Антон, вот ответь мне на один простой вопрос. Ну что мне нужно было написать, чтобы мое сообщение не воспринималось как наезд на nginx. А то, даже
Что впрочем, не умаляет всех его достоинств на *nix'ах.