3

ASP.NET MVC(3)サイトをホストにアップロードしましたが、すべてのページの初回ロードで(データフェッチがなくても)サイトの速度が大幅に低下しますか?

初めてスタートページにアクセスするときは時間がかかります7.30 s。1分後に再読み込みを押すと時間がかかります。1.05 s繰り返し再読み込みを押すととの間が表示さ500 ms800 msます。

約5分後に戻って7 s再ロードを押すと、再びロードされますか?

localhost(IIS7)から同じWebサイトを実行すると、1 s最初に取得してから650 ms、迅速にリロードします。

Webページはデータベースを使用していますが、どちらの場合も同じデータベースです(これは私のホストに配置されています)。

ウェブページはwww.biss.seです

どこから始めればいいですか?

編集:

これは私のApplication_Start()です

protected void Application_Start()
{
    AccountModel accountModel = new AccountModel();
    AreaRegistration.RegisterAllAreas();

    RegisterRoutes(RouteTable.Routes);
    MappingHandler.RegisterMappings();

    #region Register Extra DataNotations for Display Attribute
    ModelMetadataProviders.Current = new DisplayMetaDataProvider();
    #endregion


    if (!accountModel.CheckIfAdminAccountExists("adminAccount"))
    {
        accountModel.CreateUser("adminAccount",
                                    "Admin",
                                    "Admin",
                                    "",
                                    "",
                                    postCode: "",
                                    locationId: "",
                                    inactive: false,
                                    siteRole: Controllers.SiteRoles.Admin,
                                    activatedByUser: true);
    }

}
4

4 に答える 4

7

最初の要求がASP.NETアプリケーションにヒットすると、このアプリケーションはAppDomainを作成することによってWebサーバーによってメモリに読み込まれ、Application_Start内のコードが実行されます。このプロセスは、このイベント内で実行しているアクションとロードされるアセンブリの数に応じて、多少時間がかかる場合があります。非アクティブな期間が経過した後、または特定のメモリ/ CPUしきい値に達した場合、IISはアプリケーションをリサイクルし、メモリからアンロードできます。次のリクエストでは、同じプロセスが繰り返されます。

したがって、基本的に探しているのはApplication_Start、最初のリクエストで実行されるイベント内で実行しているタスクです。これらのタスクにデータベースアクセスなどのI/O操作が含まれる場合は、それらの実行にかかる時間をログに記録できます。このようにして、時間がかかるコードの正確な手順を特定し、それがあなたに依存している場合はそれを修正することができます。それが彼らの側に問題がある場合は、ホスティングプロバイダーに連絡することができます。

MiniProfilerは、このプロファイリングの目的に最適なツールです。

于 2012-07-08T19:31:36.223 に答える
1

IIS設定を調べる必要があります。IISは、特定の期間、要求に見舞われなかったすべてのサイトをシャットダウンします。

したがって、数分間リクエストがなかった場合、サイトはメモリからアンロードされ、必要になります

これが、ローカルマシンとリモートマシンで異なる動作をする理由です。1つの仮想マシン上のクライアントのメモリ使用量が少ないために、ホストがこの設定をブロックする場合があります。

変更した設定が思い出せません。誰かがもっと確実な答えを与えるべきです。

于 2012-07-09T18:25:03.770 に答える
0

IIS8Windows2012サーバーで実行されているASP.MVC3アプリでも同じ動作をしました。

何をしているのかがわかっている場合は、アプリプールを存続させるようにIISを構成できます。

解決策はここG+で見つけることができます

最も重要なことは、アプリケーションプールのアイドルタイムアウト設定を構成することです。

于 2013-08-09T14:10:28.520 に答える
-1

[詳細設定]の[アプリケーションプール]に移動すると、[最大ワーカープロセス]プロパティが表示され、値が1ではなく2に設定されます。

私はそのようにして問題を解決しました。

于 2015-02-10T00:34:38.550 に答える