4

Mono (2.10) XSP4 Web サーバーを使用して、open-embedded Linux (ARM) で実行される ASP.Net MVC3 Web アプリケーションをホストしています。XSP4 を起動すると、準備が整いリクエストを受け入れるまで数秒かかります。これまでのところ問題ありません。

しかし、ブラウザ/ウェブサイト訪問者からの最初のリクエストが行われると、XSP4 はすべての CPU を使用して、ウェブページがウェブブラウザに (正常に) 表示されるまで約 55 秒間使用します。これは、XSP を開始/再起動するたびに発生します。

私の最初の考えは、これは Web アプリケーション全体のジャストインタイム コンパイルであるということでした。そこで、バイナリ、.css、.js、およびビュー (.cshtml) のみを含む展開パッケージを作成しました。それは機能しましたが、それでもこの大きな遅延がありました。

次に、Visual Studio を使用してその Web アプリケーションをプリコンパイルしようとしました (いくつかの Mono リリース ノートに記載されています)。この場合も、Web サイトは正常に機能しましたが、依然として大きな遅延が発生していました。

実際に私の心にあるいくつかの質問:

  1. 最初のブラウザ要求が入ったときに XSP Web サーバーが何をしているか知っている人はいますか? コンパイル済みの Web アプリケーションであっても、これはジャストインタイム コンパイルですか?
  2. 再起動するたびにそれを行うのはなぜですか?
  3. 巨大な遅延を一般的にどうにかして減らすことはできますか?
  4. Web アプリケーションの更新後の最初のブラウザ要求でのみ行われるように、大幅な遅延を減らすことはできますか (XSP の後続の実行間でキャッシュされます)。

どんな助け/アイデアも素晴らしいでしょう。

更新:その間、Mono / ASP.Net コンパイラ dcms が MVC3 カミソリ ビューを構築およびコンパイルして /tmp/root-aspnet.../ にメモリにマップされているため、永続的ではないことが遅延の原因であることがわかりました。XSP4 / Mono.WebServer / Mono-Asp.Net がこれらのコンパイル済みファイルを格納する場所を制御する方法を探しています。誰かがこれに精通しているなら、私に知らせてください;-)

4

2 に答える 2

1

これは、ネイティブ コンパイルのオーバーヘッドである可能性があります (これは、プリコンパイルとは別のものです)。システム ライブラリをAOT すると速度が向上するかどうかを確認できます。

mono --aot /usr/lib/mono/1.0/mscorlib.dll
for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done
于 2011-11-16T13:13:40.997 に答える