IIS останавливает поддомен -домен' s пул приложений?

У меня есть веб-сайт с одним субдоменом вроде этого:

enter image description here

мое доменное имя - «a.com», а имя субдомена - «api.a.com». Я опубликовал услугу в поддомене. Он отлично работает с запросами Get. но перед получением запроса POST (через api) пул приложений поддомена останавливается.

Поэтому я установил инструменты диагностики отладки на сервере. Я получаю 5 ошибок после каждого запроса POST в субдомен. вот результат анализа:

enter image description here

после поиска в Google я обнаружил, что ошибка w3wp связана с утечкой памяти или когда приложение пытается получить доступ к части памяти, которой не принадлежит. Я проверил весь свой код api, и не было объекта без удаления, и весь их жизненный цикл был PerWebRequest. Более того, я использовал Castle Windsor для управления жизненным циклом всех объектов, даже контроллеров.

 var container=new WindsorContainer();
        container.Register(Classes.FromAssemblyContaining<VisitorRepository>().BasedOn<IRepository>()
           .WithService.FromInterface().LifestylePerWebRequest());

        container.Register(Classes.FromAssemblyContaining<EventService>().BasedOn<IService>()
            .WithService.FromInterface().LifestylePerWebRequest());
        container.Register(Component.For<EventDatabaseContext>()
            .LifestylePerWebRequest()
            .Forward<DbContext>());

и для контроллеров:

private static void RegisterControllers(IWindsorContainer container)
    {
        container.Register(Classes.FromAssemblyContaining<VisitorController>()
            .BasedOn<ApiController>().LifestylePerWebRequest());
    }

но в качестве теста я вернул простую строку с любым кодом в методе POST , (что вызывает сбой), но ничего не изменилось, и после отправки запроса POST в веб-API пул приложений снова остановился.

После всех этих проверок я обнаружил, что идентификаторы поддоменов (в пуле приложений) для api.a.com "отличается от других поддоменов, таких как" cdn.a.com "и" test.a.com ". Поэтому я опубликовал свой код в одном из этих доменов, и все было в порядке.

после удаления и повторного создания" api " Идентификатор .a.com "был изменен, но пул приложений" api. sudo apt-get install zram-config Это не что иное, как простой служебный скрипт, который делает новый сжатый раздел подкачки 50% от размера вашей памяти. ...

Вы можете включить zram в системах Ubuntu, используя:
sudo apt-get install zram-config

Это не что иное, как простой служебный скрипт, который делает новый сжатый раздел подкачки 50% от размера вашей памяти.
Пример: 32 ГБ системной памяти приводит к разделу ZRAM 16 ГБ.

Конечно, вы можете изменить этот сценарий по своему усмотрению.
Вопрос такой:
Известно, что набор исправлений ZRAM и его поддержка являются «входящими и выходящими» из ядра. В некоторых версиях ядра он включен, в некоторых в Ubuntu он отключен. Это было связано с различными ошибками и проблемами. Но время шло.

Насколько безопасен и стабилен zram на последних ядрах?
Подходит ли он для производственного использования?
Как он работает с 32 ГБ / 48 ГБ ОЗУ?

1
задан 4 February 2017 в 14:04
1 ответ

Не знаю, как out, zram был повышен с промежуточного уровня в Linux 3.14. Он потратил немало времени на тестирование на небольших устройствах памяти, включая Android.

И в этом-то и дело, многие его варианты использования переключаются на очень медленное, ограниченное хранилище для записи. На серверах это не совсем так. Там, где добавить больше ОЗУ относительно дешево, люди редко утруждают себя написанием и настройкой скриптов для настройки пространства подкачки zram и добавления некоторой нагрузки на ЦП. Вам решать, достаточно ли внимания уделяется качеству.

Как всегда, производительность зависит от многих переменных. Версия ядра, используемый алгоритм сжатия, ЦП. В этом случае степень сжатия вы получите на страницах. Вы хотите настроить собственное тестирование с чем-то похожим на вашу рабочую нагрузку.

3
ответ дан 3 December 2019 в 18:31

Теги

Похожие вопросы