Додаток IIS7 ASP.NET - 2 однакових програми у 2 однакових пулах додатків, 1 - чуйний, а 1 - ні


12

У мене є веб-додаток ASP.NET (v4.0), яке встановлено у віртуальній каталозі (як додаток) і розміщене у його власному пулі додатків. Це повторюється для кожного екземпляра програми (тобто для кожного клієнта).

Пули додатків - це інтегрований (не класичний) режим, а для LoadUserProfile встановлено значення true. В іншому випадку налаштування за замовчуванням.

Кожен екземпляр на даний момент має власну копію коду / конфігурації та власну папку даних (основний файл читання / запис).

1 примірник цього додатка працює добре (робота для порівняння займає ~ 4 секунди). Кожен інший екземпляр працює повільно (від 10-25 секунд до тієї ж операції).

Якщо я переміщую повільний екземпляр до "найшвидшого" пулу додатків, цей екземпляр оживає. Якщо я переміщую швидший екземпляр у повільніше пул додатків, цей екземпляр сповільнюється до сканування.

Пули додатків були створені таким же чином спочатку - вручну. Пізніше я скористався рутинним режимом копіювання повноважень, щоб забезпечити точну копію прискореного пулу додатків і все ж поведінку. Порівняння файлів apppool.config показує, що вони ідентичні, якщо забороняти призначення віртуального каталогу.

Наскільки я не можу сказати, немає спільних ресурсів, які блокуються, і я перевірив це, вимкнувши пул додатків і перезапустивши ... повільно все ще повільно, а потім, коли я перезавантажую цей пул додатків (так що він завантажений останнє) все одно швидше ...


А папки додатків ідентичні байтам?
usr

Так, лише потрійно перевірено, але різниця полягає лише в web.config, де він вказує ім'я віртуальної каталоги, в якій він розміщений (і я двічі перевірив, що була і єдина різниця). Кожен інший файл має однаковий байт. .

Що додаток робить, що займає більше часу в одному додатку? Чи можете ви приєднати VS і призупинити налагоджувач, щоб профілювати його?
usr

У мене на сервері не встановлено VS, оскільки це виробнича система, але, схоже, це моя наступна зупинка. Я почасти через додавання масового багатослівного ведення журналу до компонентів доступу до даних та доступу до файлів, оскільки трасування у нас поки що не показало нічого конкретного. Я отримаю ще кілька статистичних даних і додаю це якнайшвидше - я був оптимістичним, що хтось, можливо, зіткнувся з подібним, щоб я міг уникнути цього шляху

1
Оскільки ви завантажуєте профіль користувача, схоже, це є ключовою відмінністю цих пулів додатків. Перевірте тимчасові місця розташування користувачів, введіть там дозволи на запис, а якщо ви підключаєтесь до бази даних за допомогою того самого користувача, тоді також перевірте дозволи на DB. Все, що потрібно, - це час очікування запиту для цього користувача, тому тестуйте з тим же БД, якщо можливо. Щасти!

Відповіді:


1

Для подальшого вирішення проблеми я б запропонував запустити Wireshark (або інший аналізатор пакетів) на хост-системі протягом двох сеансів. Я припускаю, що кожен пул додатків має або присвоєний йому унікальний IP-адресу, або унікальний порт.

Спочатку отримайте свою базову продуктивність, фільтруючи на IP: порт вашого швидкого пулу додатків. Подивіться, як виглядає трафік до додатка та з нього за звичайних умов.

У другому запуску вам потрібно буде зафіксувати трафік із пулу повільних / невідповідальних програм. Якщо все мережеве маршрутизація і таке правильне до цього поля, ви повинні бачити повторні запити в одну сторону, швидше за все, до програми з іншого місця, АЛЕ якщо ваш додаток - це те, що робить багато запитів на інший сервер, ваш трафік може бути важкий для виходу замість проникнення.

Цей тест покаже, чи є проблема в додатку чи це проблеми, пов’язані з TCP / IP, які призводять до вичерпання запитів на додаток через низький / відсутність зв'язку.

Співвіднесіть часові позначки ваших тестів із журналами подій сервера та (якщо це застосовано) журналами трассинку, і ви повинні мати змогу ввести нуль у проблемі.


0

Не вдалося відстежити запит (FRT) стане найкращим інструментом для відстеження цього. Він покаже трубопровід і скільки часу потрібно було виконати. Це повинно вказувати, чи є це щось в частині asp.net, чи це щось у самому конвеєрі IIS.

Щоб налаштувати FRT, з IIS на рівні сайту створіть правило FRT з діапазоном статусу http 200-999 та переконайтеся, що увімкнено FRT (це окремий крок від області дій).

Потім відтворіть проблему та подивіться на створені файли (% SystemDrive% \ inetpub \ logs \ FailedReqLogFiles \ w3svc {siteid}). Відкрийте їх в Internet Explorer.


0

Коли IIS затримується на тривалі періоди часу без видимих ​​причин, зазвичай це означає, що він чекає на вимкнення зовнішньої служби. Коли це робить, то він намагається інший підхід. У цьому питанні це стосується майже будь-чого в Windows або Linux. Першим підозрюваним для мене в цих ситуаціях є завжди конфігурація роздільної здатності мережі. Він винен, поки не буде доведений невинний.

Чи можна це відтворити, коли один користувач потрапляє на один із повторюваних сайтів? Було б добре знати, чим займаються процесор і диски, коли ви відтворюєте час відповіді від 10 до 20 секунд. Якщо виявляється, що протягом 10-20 секунд не відбувається багато часу, то слід перевірити свої прив’язуючі імена та роздільну здатність імен для пов'язаних імен. Якщо процесор або диски розжовуються, то вам потрібно буде з'ясувати, який процес працює надто сильно і чому.

Будь ласка, опублікуйте свої висновки, мені цікаво.

PS Я також перевірив дозвіл імен та доступ до будь-яких служб аутентифікації, які можуть бути в грі. Наприклад, якщо потрібна консультація щодо домену, переконайтеся, що перший DNS-сервер у вашому списку - DNS-сервер для домену.


0

Це не рішення, але ми будемо працювати над цим;

  1. Запустіть IISRESET (у години обслуговування) або вбийте W3WP, що належить до безвідповідального пулу додатків

  2. Запустіть додаток

  3. Хоча це і не відповідає, візьміть дамп-файл W3WP, який належить до повільного пулу додатків. Використовуйте або провідник процесів, або менеджер завдань, щоб створити дамп-файл

  4. Візьміть mscordacwks.dll і mscorwks.dll з під C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.XXXXX

  5. Зашпаркуйте та завантажте цей файл десь звідки я можу завантажити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.