войти зарегистрироваться

Microsoft whois

индекс
74,63

Интервью с Program Manager в команде Internet Information Services Русланом Якушевым

imageРуслан Якушев начал работать в должности Program Manager в команде Internet Information Services (IIS) около двух лет назад. За это время он руководил разработкой и выпуском нескольких ключевых компонентов IIS: FastCGI, URL Rewriter, Dynamic IP Restrictions.
В дополнение к этому, одно из направлений деятельности Руслана это взаимодействие и сотрудничество с сообществом PHP разработчиков для улучшения функциональности и производительности PHP приложений на Windows платформе.

До работы в IIS команде, Руслан 5 лет работал в команде BizTalk Server, где он участвовал в выпуске Microsoft BizTalk Server 2004 и 2006. Дополнительную информацию о Руслане можно найти в его блоге ruslany.net.

Вопросы к интервью задавали в этом топике.

Прошу прощения за длительную задержку с публикацией ответов. Интервью с Женей Осоветским и Алексом Могилевским на подходе.

Текст интервью с Русланом


Что в последнее время написали на PHP для себя (личное пользование)?

[RY]: В течение последних нескольких месяцев в свободное от работы время я пишу плагин для WordPress (http://wordpress.org/extend/plugins/wp-media-player/). Я опубликовал первую версию в январе этого года и с тех пор было около 900 скачиваний плагина. Недавно я выпустил новую версию, которая содержит несколько новых возможностей.

Почему при множестве узлов метабазы размер памяти потребляемый IIS7 более чем в 5 раз больше чем в IIS6?

[RY]: Как правильно заметил пользователь, который задал вопрос (dmach ), IIS 7 использует конфигурационную систему основанную на XML, и это увеличивает раходы памяти по сравнению с IIS6. Так же в IIS 7 добавлено делегирование и изоляция конфигурации, что делает необходимым хранение нескольких копий конфигурации. Вместе с тем IIS команда сделала множество оптимизаций для уменьшения потребления памяти, так как IIS 7 позиционируется как сервер который может быть использован в хостинг компаниях с множеством сайтов на одном сервере. Проблемы повышенного потребления памяти никогда не упоминалась хостерами с которыми мы работали. Но это может быть потому, что хостеры используют отдельные рабочие процессы для разных сайтов, и не все рабочие процессы активны в одно и то же время. dmach похоже использует один рабочий процесс для тысячи веб сайтов. Это поддерживаемая конфигурация, но не рекомендуемая. Может быть это вызывает пятикратное увеличение потребления памяти. Тяжело сказать не зная деталей. Если dmach может предоставить детали конфигурации где он наблюдает повышенное потребление памяти, то можно будет более конкретно разобраться, чем это вызвано. Также, недавно IIS команда выпустила QFE, в котором исправлен баг, вызывающий повышенное потребление памяти в некоторых ситуациях. dmach может попробовать установить этот QFE. Для более конкретной информации по этому вопросу можно связатся со мной напрямую через мой блог: ruslany.net/contact/

Очень хочется в будущих версиях иметь возможность смотреть, сколько памяти потребляют отдельные сайты или исполняемые запросы в рамках одного рабочего процесса. Рассматривается ли такая возможность?

[RY]: Нет, не рассматривается. Рекомендуемая конфигурация в IIS — это разделение сайтов в отдельные рабочие процессы. Все инструменты мониторинга в IIS настроенны под эту конфигурацию.

Будет ли следующая версия IIS понимать привязки IDN-доменов в виде xn--blablabla как это сейчас умею все остальные веб-сервера включая IIS версии 6? IIS версии 7, к сожалению, не умеет. Подробнее тут — dmach.livejournal.com/136446.html

[RY]: В следующей версии IIS привязки IDN-доменов будут происходить также как и в IIS7. Чтобы указать IDN-домен в IIS7, надо использовать Unicode формат. Конвертация в punycode будет произведена в IIS автоматически. Более подробную информацию о том как работать с IDN – доменами в IIS7 можно прочитать здесь: blogs.iis.net/thomad/archive/2008/03/05/hosting-220-bersites-iis7-support-for-international-domain-names-idn.aspx
Так как это изменение может сломать сайты при миграции с IIS6 на IIS7, IIS Web Deployment команда рассматривает вариант добавления поддержки конвертации punycode при миграции сайтов с IDN-доменами с IIS6 на IIS7.

Можно ли исполняемые процессы php в режиме FastCGI под IIS версии 6 запускать с правами отличными от прав рабочего процесса IIS с модулем? Если нет — планируется ли развитие этого модуля для прошлых версий IIS с указанной (или вообще любой другой, не важно) функциональностью или он зафиксирован в текущем виде и развиваться не будет?

[RY]: Сейчас такой возможности нет. Eсть impersonation, но насколько я понимаю, это не совсем то, что спрашивает dmach. Технически это сделать не сложно, и теоретически это звучит как интересная возможность. Просто никто об этом не спрашивал до сих пор. Я заинтересован узнать подробнее в каких конткретных случаях impersonation недостаточно. Если есть реальные ситуации где будет полезно конфигурировать права для запуска FastCGI процессов, то я не вижу особых проблем с добавлением такой функциональности в будущих версиях FastCGI модуля. Как раз недавно мы выпустили FastCGI extension 1.5 Beta и отзывы и предложения еще принимаются. Можно посылать предложения по функциональности конкретно мне, или на форум: forums.iis.net/1103.aspx (либо через gaidar — прим. gaidar)

Будет ли в будущих версиях IIS консоль управления оптимизирована для работы с клавиатуры и к минимальным расширениям экрана типа 800x600? Это имеет смысл для работы с IIS в условиях отличных от… хороших, например в дц на неизвестном мониторе, который больше не может или на ноутбуке (или, прости господи, нетбуке) через RDP.

[RY]:IIS консоль поддерживает работу с клавиатуры. Так же с ней можно работать при разрешении 800х600. Это конечно не так удобно как при большем разрешении – приходится больше скролировать. Никаких изменений, наскольно я знаю, в этом отношении не планируется.

Планирует ли Microsoft в будущих версиях создать для IIS/FTP свою базу пользователей не привязанных (или опционально) к пользователям Windows (как сейчас сделано, к примеру, в SQL Server)? Какие недостатки этого подхода применительно к IIS вы видите?

[RY]: В IIS есть своя база пользователей. Существует поддержка IIS Management Users, которую можно использовать с FTP: learn.iis.net/page.aspx/321/configure-ftp-with-iis-70-manager-authentication/. Эта же база пользователей может быть использована для удаленного администрирования веб сайтов learn.iis.net/page.aspx/159/configuring-remote-administration-and-feature-delegation-in-iis-7/.

Внутри компании Microsoft IIS позиционируется как решение для поддержки одного-двух сайтов на сервере или как решение для широкого круга задач? Проводились ли внутренние тестирования IIS версии 7 в условиях десятков тысяч сайтов на одну IIS-единицу? Если да — была ли группа тестирования удовлетворена результатами такого тестирования?

[RY]: Внутри Microsoft IIS позиционируется как решения для широкого круга задач. Например, одно из направлений – это поддержка хостинга. Проводился ряд внутренних тестирований IIS7 как хостинг-платформы. При тестирование использовалось до 4000 сайтов различных типов (ASP, APS.NET, PHP, static) на одном сервере. Конфигурация сервера соответсвовала всем рекомендациям, которые мы даем хостинг компаниям ( learn.iis.net/page.aspx/31/hosting-guidance-for-the-microsoft-web-platform/ ). При такой конфигурации результаты тестов были вполне приемлемыми и соответствовали требованиям хостинга.

Насколько большая команда разработчиков работает над IIS?

[RY]: По сравнению с другими командами в Microsoft, IIS комадна довольно небольшая – немногим больше 40 человек.

С какими сложностями сталкивался Руслан в работе program manager'a? Каким образом были решены такие проблемы?

[RY]: Самая большая сложность была, когда я начинал работать в Microsoft’е. Было совсем не понятно, что ожидается от program manager’а и что надо делать. Девелоперы пишут код, тестеры тестируют, а PM’ы казалось ничего конкретного не делают. Только через некоторое время я начал понимать что конкретно надо делать и как я могу приносить пользу.
Другая сложность, которая существует не только в работе PM’а, но и у девелоперов и тестеров – это постоянная рандомизация. Со временем начинаешь понимать, что надо очень жестко приоритизировать задачи и надо научится не отвлекаться и, если надо, то отказыватся, когда кто-то о чем то тебя просит. Иначе просто не возможно делать какую-либо работу качественно.

Какие фичи запланированы на будущее?

[RY]: Я не буду говорить о конкретных фичах, так как это конфиденциальная информация. Сейчас у команды есть несколько приоритетных направлений работы, так что в основном новые фичи будут связаны с этими направлениями. Например, очень важно, чтобы популярные веб приложения поддерживались на IIS, легко устанавливались и настраивались. Microsoft Web Platform Installer это первый шаг в этом направлении и IIS команда будет продолжать работать над этим проектом. Также, PHP поддержка в IIS продолжает быть приоритетным направлением, потому что большинствро популярных веб приложений на данный момент используют PHP. Сейчас PHP в Windows все еще отстает по производительности от Linux. IIS команда активно работает в этом направлении.

комментарии (7)

  • По пункту про память. Замечу, что проблема была не про потребление памяти рабочим процессом — а суммой основных служб IIS, можете исключить из списка процессов процессы рабочих процессов :-) и вы получите потребление памяти не в 5 раз больше а существенно выше. Конфигурация рабочих процессов тут как-то мимо кассы. Это раз. Во-вторых — то есть, поддержка 1000 активных сайтов на сервере по мнению группы IIS эффективнее в режиме с выделением рабочего процесса на КАЖДЫЙ сайт? Можно ссылку на рекомендацию на официальном сайте? Вместо одного процесса w3wp иметь 1000 процессов? Кроме того, что это бред, извините, множество рабочих процессов IIS не снимут проблему потребления памяти другими службами IIS, ведь так?
  • Подробнее ещё раз — www.iis7.ru/iis7memory.gif

    Исключаем рабочие процессы:

    IIS7:
    inetinfo.exe — 838 mb
    svchost.exe — 1054 mb

    IIS6:
    inetinfo.exe — 35 mb
    svchost.exe — 39 mb

    При этом на тот момент сайтов на IIS6 больше.
  • Форма ruslany.net/contact/ не работает: жму send message, крутится крутилка, ничего не происходит. И так много раз. Ну, ладно.

    Собственно, хотелось бы вам такой вот фидбэк дать про IIS. У меня есть тайная надежда, что это поможет. Может быть вы ещё кому-нибудь покажете что-нибудь типа dmih.livejournal.com/tag/iis7 (вы смотрели?), и он что-нибудь сделает.

    Будет плохо, если вы просто посмотрите, ответите что-нибудь сюда, все прочитают а потом забудут. Для этого и затевать всё это не стоило. Хочется надеятся, что что-нибудь из этого всё же посмотрят поближе и сделают выводы. Хотя бы в IIS8.
    • Я Руслану передам feedback. И на счет форму расскажу.
      • Спасибо. Я могу передать необходимые подробности, если потребуется. Тут есть сложность, что это всё у нас не тестовые сервера а реальные с клиентскими сайтами. Просто так взять и все предоставить я не могу :-)
  • dmach, я поговорил с девелопером который кодировал WAS — он подтвердил, что WAS действительно потребляет больше памяти, особенно в случае хостинга когда на одной машине находится множество сайтов. Причина, как было уже упомянуто, в том что WAS загружает все содержимое applicationHost.config в память и потом соединяет и раздает конфигурацию в рабочие процессы. Размер памяти потребляемой WAS прямо пропорционален размеру applicatioHost.config. Команда, которая работает над WAS'ом, сказала, что они слышали об этой проблеме от клиентов и рассматривают способы улучшить это в IIS8 (надо уточнить что в Win7 и Windows Server 2008 R2 будет IIS 7.5, с существующей конфигурационной системой).
    Насчет разделения сайтов в различные рабочие процессы — это не бред :), вот ссылка на хостинг документацию, которая была написана IIS командой. Там есть MS Word атачмент к посту (его не очень легко заметить). Мы работали с многими хостерами, чтобы проанализировать типичную веб нагрузку на серверах. На основе этого был определено, что не все сайты активны не сервере одновременно. В среднем обычно 10% сайтов работают, что уменьшает количетсво рабочих процессов на сервере. Конечно, веб нагрузка может отличатся от хостера к хостеру. Параметры тестированя которые использовались IIS командой были следуюшие:
    1. До 4000 веб сайтов в отдельных рабочих процессах(не все рабочие процессы работают одновременно)
    2. Нагрузка: 90% запросов на 10% сайтов (примерно 400 рабочих процессов работают одновременно)
    Это тестировалось на машине с 4 Гб памяти и все это выдавало приемлемые результаты. Я не упоминаю здесь детали других преимуществ разделения процессов (security isolation, manageability, etc).
    Наверняка есть какие то причины по которым вы выбрали конфигурацию с использованием одного рабочего процесса для 1000 сайтов. Некоторые хостеры, которые работают с IIS7 используют такую конфигурацию. С такой конфигурацией размер DefaultAppPool.config будет сравнимый с размером applicationHost.config (вы это упоминали в своем блоге). Если бы использовались отдельные рабочие процессы то размеры каждого временного .config намного меньше. Это конечно же не значит, что полное потребление памяти на сервере будет меньше если будут работать 1000 рабочих процессов вместо одного, но если не все 1000 сайтов активны в одно и то же время, то возможно, что полное потребление памяти будет меньше.
    Теперь конкретно о svchost.exе и inetinfo.exe. Насколько я понимаю, вы используете metabase compatibiliy для конфигурирования сервера. Опять же, наверняка у вас есть какие то причины для этого, но если бы вы могли избавится от metabase compat, и использовать новые средства конфигурации, то тогда бы у вас не было intinfo.exe.
    Как я уже упоминал, размер svchost.exe, где находится WAS, прямо пропорционален размеру applicatioHost.config. Я слышал (но сам не тестировал), что при использовании ADSI, может получится, что конфигурация по умолчанию в applicationHost.config файле дублируется для индивидуальных сайтов, что в некоторых случаях может увеличить размер конфиг файла. Если вы можете выслать мне applicationHost.config файл (пожатый) на ruslany at microsoft dot com, то можно будет более точно подтвердить это.
    Спасибо за коментарии, было интересно почитать ваш блог :). Я починил контакт форму на своем сайте (баг в WordPress плагине) — так что можете использовать ее (http://ruslany.net/contact/), если есть какие то вопросы по IIS. Также, можете использовать email адрес упомянутый выше.
    • Спасибо, что-то сюда не заглядывал пару дней. Добавлю, что та ссылка была не на мой блог а на блог другого нашего человека, но это не столь важно :-)

      То, что данные дублируются из-за ADSI — это мы знаем, но у нас пока общая система для управления сайтами IIS6/IIS7 и её «разбиение» на две части процесс не быстрый, к сожалению.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.