Огромная задержка при первом запросе браузера на mono-fastcgi-server4 с веб-приложением Nginx

Мы используем mono версию 3.10.0 (из $mono --version), Nginx (1.6.2) и mono-fastcgi-server4 для размещения веб-приложения ASP.Net MVC3, работающего на Debian jessie linux (ARM - Raspberry Pi).).

Похоже, у нас, похоже, есть те же проблемы, что и в этом вопросе: огромная задержка при первом запросе браузера к веб-приложению Mono XSP.

Когда первый запрос от браузера / посетителя веб-сайта сделан, моно-fastcgi-сервер использует весь процессор, он может получать до 120 секунд, пока веб-страница не отобразится в веб-браузере. Это происходит после каждого запуска / перезапуска веб-сервера.

Как я понял до сих пор, это вполне нормально и даже то же самое, если вы размещаете свой сайт с IIS на сервере Windows. Основное отличие заключается в том, что Windows-сервер намного быстрее...

Чтобы минимизировать время запуска, это то, что я уже пробовал:

  1. Прекомпилируйте мои бритвенные представления в dll с помощью функции "опубликовать веб-сайт" в Visual Studio. Это работает до сих пор, но, похоже, значительно не уменьшает время запуска.

  2. Следующей вещью, с которой я столкнулся, было AOTing (перед компиляцией) мои dll в папке bin (см. http://www.mono-project.com/docs/advanced/runtime/docs/aot/), которую я использовал 'mono - aot file.dll` для прекомпиляции моих сборок. Опять нет повышения производительности.

  3. Затем я узнал, что вы можете, конечно, также AOT всех библиотек в вашей системе (найти здесь: http://www.mono-project.com/docs/advanced/aot/) с помощью этих команд:

    mono --aot /usr/lib/mono/1.0/mscorlib.dll 
    for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done        
    

    Это заняло довольно много времени на майскую малину, но - опять же - тот же результат.

Я делаю что-то не так или упускаю что-то очевидное?

Автор предыдущего вопроса сказал в своем последнем комментарии о задержке:

Это вызвано генерацией и компиляцией видов бритвы, которые еще не могут быть предварительно скомпилированы. Эти файлы компилируются в /tmp/..., который отображается в память на встроенных устройствах и, следовательно, теряется после перезагрузки. Еще хуже то, что после каждого перезапуска веб-сервера XSP файлы будут компилироваться в новый подкаталог /tmp. Таким образом, перекомпиляция видов бритвы происходит каждый раз при запуске XSP.

Я думаю, что это кажется, что это то же самое со мной, независимо от использования XSP4, mono-fastcgi-server и, вероятно, также mod-mono при использовании Apache. (Что неудивительно, так как я думаю, что все они основаны на XSP - но, возможно, я ошибаюсь...)

Теперь упомянутый вопрос относится к 2011 году... Кто-нибудь знает, есть ли решение заставить веб-сервер использовать эти предварительно скомпилированные файлы?

Я благодарен за любую подсказку!

0 ответов

Другие вопросы по тегам