109: (Default)
109 ([personal profile] 109) wrote2005-06-23 04:55 pm

читая майкрософтовский курс по Asp.Net

what's the difference between Web Farm and Web Garden?

[identity profile] belloff.livejournal.com 2005-06-23 10:32 pm (UTC)(link)
Первое - несколько разных вебсерверов в кластере, второе - просто одна машина с несколькими процессорами, обрабатывающими ASP.NET. Я тоже когда первый раз нашел - хихикал над этой тонкостью.

Кстати, по умолчанию, ASP.NET на мультипроцессорной машине исполняется только на одном процессоре.

[identity profile] 109.livejournal.com 2005-06-24 03:28 am (UTC)(link)
на одном процессоре

нафига?

[identity profile] belloff.livejournal.com 2005-06-24 06:28 am (UTC)(link)
Потому что ASP.NET процессы, исполняемые на разных процессорах, не могут иметь общей in-process сессии. То есть нужно настраивать либо отдельный сервер для хранения out-of-process сессии, либо SQL сервер. Чтобы упростить инсталляцию видимо сделали так. В этом несложно убедиться, если поглядеть на webGarden в machine.config.

[identity profile] 109.livejournal.com 2005-06-24 02:51 pm (UTC)(link)
чушь какая. процесс-то один. просто его треды могут исполняться на разных процессорах, как оно всегда и делается по умолчанию. так что сессия остаётся in-process.

[identity profile] belloff.livejournal.com 2005-06-24 03:56 pm (UTC)(link)
Делаете webGarden="true", и через две секунды убеждаетесь в обратном.

[identity profile] 109.livejournal.com 2005-06-24 03:58 pm (UTC)(link)
в чём именно обратном? вы часом не путаете "один процессор" и "один процесс"?

[identity profile] belloff.livejournal.com 2005-06-24 04:27 pm (UTC)(link)
> вы часом не путаете "один процессор" и "один процесс"?

А для ASP.NET это практически один хрен, по крайней мере, если речь идет о IIS5: он запускает отдельный рабочий процесс на каждом отдельном процессоре. Поэтому сессия у каждого своя. C IIS6 есть тонкости, но мне с ним еще работать не приходилось.

[identity profile] 109.livejournal.com 2005-06-24 05:19 pm (UTC)(link)
хм, я не знал даже, что asp.net встаёт на IIS5.

кроме того, неважно, на чём там запускается IIS, поскольку asp.net сессия хранится в пространстве процесса aspnet_wp.exe (на win2003 он по-другому называется), которому IIS просто передаёт реквест по ISAPI.

ну и наконец, даже если это правда, что aspnet_wp.exe использует только один процессор (в чём я сильно сомневаюсь), исходный вопрос так и остаётся неотвеченным: НАФИГА?

[identity profile] belloff.livejournal.com 2005-06-24 05:25 pm (UTC)(link)
Cделали так, чтобы упростить инсталляцию, видимо. Потому что пришлось бы тогда у админа спрашивать где сервер для сессий находится и т.п. А так тихо встала на один процессор и улю.

> aspnet_wp.exe использует только один процессор (в чём я сильно сомневаюсь)

Нет, его можно сконфигурировать, чтобы он на всех процессорах ранался или только на некоторых. Делается в два пинка. Но при инсталляцию он встает только на один.

[identity profile] 109.livejournal.com 2005-06-24 05:50 pm (UTC)(link)
Потому что пришлось бы тогда у админа спрашивать где сервер для сессий находится и т.п.

я ужасно извиняюсь за занудство, но мне всё время кажется, что у нас есть непонимание из-за разницы в терминологии. я под процессором понимаю CPU, камень, который в слот вставляется. железо. кремний, то есть. какое он отношение имеет к "у админа спрашивать где сервер для сессий находится"? запускаем один aspnet_wp процесс, он работает на всех имеющихся процессорах, как это в виндах принято по умолчанию, он же хранит state. всё. зачем усложнять?

[identity profile] belloff.livejournal.com 2005-06-24 05:53 pm (UTC)(link)
Не, разногласий насчет того, что такое процессор у нас с вами нет.

Зачем она запускает раздельные рабочие процессы, на разный процессорах, я не знаю. Это просто такая реальность данная нам в ощущениях. ;)