IIS7 мигрирует с 32-битных на 64-битные проблемы
В настоящее время мы выполняем миграцию нескольких сайтов с x86 win 2008 на x64 win 2008. Мы скопировали каталог config и файлы wwwroot со старого сервера на новый сервер, но при запуске сервера мы получаем страницу с ошибкой 503 и в журнале событий 5 предупреждений, а затем ошибка.
Предупреждение:
A listener channel for protocol 'http' in worker process '2060' serving application pool 'SiteAppPool' reported a listener channel failure. The data field contains the error number.
XML события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-WAS" Guid="{524B5D04-133C-4A62-8362-64E8EDB9CE40}" EventSourceName="WAS" />
<EventID Qualifiers="32768">5139</EventID>
<Version>0</Version>
<Level>3</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2011-04-14T11:10:04.000Z" />
<EventRecordID>334493</EventRecordID>
<Correlation />
<Execution ProcessID="0" ThreadID="0" />
<Channel>System</Channel>
<Computer>WEBSRV64</Computer>
<Security />
</System>
<EventData>
<Data Name="AppPoolID">SiteAppPool</Data>
<Data Name="ProcessID">2060</Data>
<Data Name="param3">0</Data>
<Data Name="ProtocolID">http</Data>
<Binary>7E000780</Binary>
</EventData>
</Event>
Мы получаем 5 из них, но все с другим номером рабочего процесса.
После этого мы получаем эту ошибку:
Application pool 'SiteAppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
Мы не имеем ни малейшего понятия, почему происходит эта ошибка, мы сделали 1 на 1 копию сайта. В настоящее время мы все еще работаем на 32-битном сервере, но нам нравится мигрировать как можно скорее. Кто-нибудь знает, почему мы получаем эту ошибку?
2 ответа
Может быть много вещей, но несколько вещей, которые приходят мне на ум:
- Использовал ли старый сайт другой идентификатор для пула приложений, возможно, пользователь локального компьютера? Если это так, это может быть что-то внутреннее для самого приложения, которое не обрабатывает новый идентификатор должным образом.
- На новой машине установлена правильная версия.Net Framework?
- Вы сравнивали пулы старых и новых приложений по точкам, используя представление "Дополнительные настройки"?
Если вы создаете новый пул сайта / приложения и принимаете настройки по умолчанию, это все еще делает это для нового сайта?
Вероятно, это компонент на вашем сайте, который не совместим с x64. Это может быть фильтр isapi или некоторый управляемый код или вызов COM+.
Если это сразу не удается для http-запроса, то, скорее всего, это фильтр isapi. Вы можете подтвердить это, отключив все фильтры и протестировав страницу test.html. Затем добавьте вещи обратно, пока они снова не потерпят неудачу.
У вас есть 2 решения:
- Самый простой: запустить пул приложений в 32-битном режиме. Это хорошая настройка в любом случае. Вы можете установить его из дополнительных свойств пула приложений, одного из лучших вариантов. Установите его как пул приложений по умолчанию, и будущие пулы приложений также будут установлены таким образом. В IIS7 вы можете использовать большой объем памяти x64, продолжая работать с пулами приложений в 32-разрядном режиме.
- Кроме того, как только вы сузите компонент, о котором идет речь, получите обновление от поставщика.