問題タブ [warm-up]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - IIS 7.5 で ASP.NET MVC アプリケーションをウォームアップする方法は?
IIS 7.5 サーバーでホストされている ASP.NET MVC アプリケーションをウォームアップしたいと考えています。以前はhttp://forums.iis.net/t/1176740.aspxで利用できたウォームアップ モジュールは削除されました。
IIS または ASP.NET ワーカー プロセスがなんらかの理由で再起動するたびに、アプリケーションをウォームアップする必要があります。ウォームアップ期間中、IIS は、ウォームアップ状態またはクライアントにサービスを提供できないことを示す HTTP ステータス コードを返す必要があります。
HttpRequests を介してサイト内の必要なページをナビゲートする実行可能ファイルを作成することは良い考えでしょうか? 実行可能ファイルは、IProcessHostPreloadClient 実装からトリガーできます。IIS を構成して、localhost からの要求のみを受け入れ、実行可能ファイルが完了すると、すべてのクライアントに切り替えることができますが、その切り替えによって IIS の再起動がトリガーされることはありません (明らかに)。
手動で実行可能ファイルを作成する代わりに、Visual Studio 2010 - Web Performance Test を使用してアプリケーションをウォームアップすることはできますか? 他の選択肢はありますか?
PS: アプリケーションはフォーム認証とセッションを使用するため、状態 Cookie とその他の Cookie を維持することが重要です。
更新 1 - アプリケーションで .NET Framework 4.0 と Entity Framework (データベースが最初) を使用しています。EF クエリへの最初のヒットは遅いです。ウォームアップの背後にある理由は、これらの最初のヒットを邪魔にならないようにするためです. ほとんどの場所で既にコンパイル済みクエリを使用しており、EF 用にコンパイル済みのビューを実装しています。モデルとアプリケーションのサイズが非常に大きく複雑です。ウォームアップでは、エンド ユーザーがアプリケーションにアクセスする前に、コンパイル済みおよびコンパイルされていない EF クエリが少なくとも 1 回実行されるように、多くのページを確認する必要があります。
c# - IIS ウォームアップ ステップで ASP.NET MVC ビューをプリロードする
IProcessHostPreloadClient
私は最近、インターフェイスを使用してウォームアップ ステップを Web アプリケーションに適用する IIS の機能をいじり始めました(設定方法のガイダンスについては、こちらを参照してください)。私が行った「賢い」ことの 1 つは、コントローラーを繰り返し処理してレンダリングすることにより、ビューをプリロードしようとすることだったからです。
少し試行錯誤した後、動作するようになり、すべてがうまくいきました。つまり、システムのすべての検証が機能しなくなったことに気付くまで、クライアントとサーバーの検証も機能しませんでした。MVC が初めてビューを取得したときに、通常は検証がビューに接続されていると思いますが、そうできませんでした。これを私のソリューションに含める方法や、別の方法で行う方法を知っている人はいますか?
コード:
asp.net-mvc - 「IISシミュレートされたHTTP要求」とは何ですか?
System.Web.Hosting.IProcessHostPreloadClientで識別されたIISシミュレートされたHTTP要求機能の詳細をどこで見つけることができるか誰かが知っていますか?
IIS7.5でASP.NETMVCアプリケーションをウォームアップする方法と同様に、アプリケーションプールのリサイクル後の応答時間を短縮するために、「通常の」ASP.NETサイトのウォームアップを実行しようとしています。
私が使用しているもの:
- Windows Server 2008 R2
- IIS 7.5
- .NET 4.0
- ASP.NET MVC 3
IProcessHostPreloadClientドキュメント(上記のリンクを参照)の注釈には、次のように明示的に記載されています。
このインターフェイスは、主に非HTTPアプリケーションであるWCFアプリケーションでの使用を目的としています。ASP.NET WebアプリケーションをプリロードするASP.NET開発者は、IIS7.0でシミュレートされたHTTP要求を使用する必要があります...
この質問は、サイトをウォームアップするためにHttpWebRequestを正常に実装して起動したIProcessHostPreloadClientに関するものではないことに注意してください。これは基本的に同様の質問と同じであり、Web全体で他のいくつかの重複/再投稿がありますが、実際には回答されませんでした。
その他の(見かけの)赤いニシン:
- IISの「アプリケーションウォームアップモジュール」(http://forums.iis.net/t/1176740.aspx)。これは使用できなくなり、コア機能ではなくプラグインになっているようです。
- Application_Startをトリガーしないaspnet_compiler。
どんな援助でも大歓迎です。
java - 同じコード、同じ入力、時には速く、時には遅く、なぜですか?
さまざまな並べ替えアルゴリズムを評価/デモするために、いくつかのJavaクラスを作成しました。しかし、デモクラスを実行すると混乱しました。皆さんが私に説明をしてくれることを願っています。(この質問は宿題ではありません。)
まず、この質問に関連するいくつかのコードをリストします。
AbstractDemo
SortingDemo
ストップウォッチ
ランダム配列を生成する方法
ご覧のとおり、20000個の要素を持つint配列を生成します。また、getRandomIntArrayメソッドには固定シードがあるため、呼び出すたびに常に同じ配列があります。クラスSortingDemoにはmainメソッドがあり、このクラスを実行すると、次の出力が得られます。
大丈夫そうです。今、私を混乱させた何かが来ます。SortingDemoでdemoList.add()シーケンスを変更した場合、次のように言います。
私が得た:
なぜ出力が最初の実行と異なるのですか?OptimizedMergeSortは通常のMergeSortよりも時間がかかりました...
そしてfor (int x=1; x<6; x++)
、SortingDemoの行のコメントを外すと(同じ配列で5回テストを実行します)、次のようになります。
他の並べ替えの場合、結果は妥当に見えます。しかし、mergeSortの場合、最初の実行に後でよりもはるかに長い時間がかかったのはなぜですか?OptimizedMergeSortの場合は37ms:4ms。
Optimized / MergeSortの実装が間違っていたとしても、出力は同じままである必要があると思います。なぜ、同じメソッド呼び出しに時間がかかる場合と、時間がかかる場合があるのでしょうか。
情報として、これらすべての*Sortクラスは超抽象クラスSortingを拡張します。それは抽象的な方法を持っていますvoid sort(int[] data)
MergeSortにはmergeSorting
メソッドとmerge()メソッドがあります。OptimizedMergeSortはMergeSortを拡張し、mergeSorting()
メソッドをオーバーライドし(配列サイズ<= 7の場合、insertionSortを実行するため)、クラスmerge()
からメソッドを再利用します。MergeSort
この長いテキストとコードを読んでいただきありがとうございます。皆さんが私にいくつかの説明をしてくれれば幸いです。
すべてのテストは、LinuxのEclipseで実行されました。
caching - ウォームキャッシュとは何ですか?
ウォーム キャッシュでプログラムを実行するとはどういう意味ですか?
誰か親切に説明してくれませんか。
ウォーム キャッシュとは、クエリを実行するとキャッシュ ヒットが発生するキャッシュを意味しますか?
asp.net - ASP.NET ウォームアップ/初期化
.NET アプリケーションの起動/ウォームアップ時間を排除 (または少なくとも最小化) しようとしています。よくある懸念事項ですが、これを行う方法についてはよくわかりません。
.NET アプリケーションの起動が遅いことについて、たくさんの質問があります。これらは、プールのリサイクル、ワーカー プロセスの起動、.aspx ファイルの動的コンパイル、JIT などで簡単に説明できます。さらに、EntityFramework やアプリケーション キャッシュなど、アプリケーション内で初期化する必要があるものは他にもあります。
次のようなさまざまなソリューションがたくさん見つかりました。
ただし、上記の解決策のいずれにも完全に満足しているわけではありません。さらに、アプリケーションを Azure Web サイトにデプロイしているため (ほとんどの場合)、IIS へのアクセスが制限されています。
アプリケーションにリクエストを送信するためにさまざまな方法を使用するカスタム「ウォームアップ スクリプト」がいくつかあることは知っています (wget/curl など)。私の考えは、ASP.NET アプリケーションごとに "Warmup.aspx" ページを作成することです。次に、HTTP GET を各サイトの Warmup.aspx に 5 分ごとに送信するウォームアップ サービスがあります。このサービスは、Azure の WorkerRole またはオンプレミス インストールの Windows サービスである可能性があります。次に、Warmup.aspx は次のことを行います。
- アプリケーション内の各 .aspx ファイルに HTTP GET を送信します (ページを動的にコンパイルするため)。
- これは、aspnet_compiler.exe を使用して .aspx ページをプリコンパイルすることで回避できます。
- データベースにクエリを送信して EntityFramework を初期化する
- アプリケーションキャッシュなどを初期化する
最後の質問は、「Warmup.aspx」スクリプトよりも優れた代替手段があるかどうかです。それは良いアプローチですか、それとも他の方法をお勧めしますか? 上記の基準を処理する公式の方法が本当に欲しいです。
どんな提案でも大歓迎です、ありがとう!
java - JVMをウォームアップするためにJavaプログラムを何回実行する必要がありますか?
私がJavaプログラムを持っているとしましょうTest.class
。実行時間を測定したい。私はこれを行うためのラッパーを以下のように作成しました:
ここでどのように選択するかwarmupNum
、大きいほど良いですか?どれくらいの大きさで十分ですか?これは、Javaプログラムのパフォーマンスを測定するための「標準/一般的な」方法ですか?
java - GAEでリクエストを処理する前のウォームアップはありません
AppEngineが事前のウォームアップなしでコールドダイナミックインスタンスを使用してリクエストを処理するのはなぜですか?
私はSpringSecurityとSpringMVCを使用するWebアプリを持っているので、コンテキストの初期化には多くの時間がかかり、両方で約70秒かかります。したがって、初期化を2つのフェーズに分割しました。ここでは、ウォームアップ要求はアプリケーションコンテキスト(セキュリティ)のみを初期化し、SpringDispatcherサーブレットは次の要求で初期化されます。これにより、時間が最大60秒未満に保たれます。
現在、私の実稼働環境では、何らかの理由で、クライアント要求は2つの常駐(アイドル)インスタンスのいずれによっても処理されませんが、代わりに新しいコールドインスタンスによって処理されます。次に、このインスタンスはセキュリティ、ディスパッチャサーブレットを初期化し、リクエストを処理する必要があります。これは60秒後に中断されます。
コールドインスタンスの使用を可能な限り回避するために、最小保留待ち時間は500ミリ秒に設定され、最大は15秒に設定されていますが、これは大きな負荷なしで発生します。
asp.net - 要求を再マッピングせずにASP.NETWebサービス(ウォームアップ)用にIIS7.5アプリケーションを初期化する
IIS 7.5アプリケーション初期化拡張機能を使用して、Webアプリケーションのウォームアッププロセスを構成しようとしています。これは、アプリケーションプールのリサイクルによって引き起こされる速度低下を最小限に抑えるために私が取っているアプローチです。これは、StackOverflowに関する他の質問でよく説明されている問題です。
私が望んでいるのは、他の場所でリクエストを再マッピングすることなく、アプリケーションの初期化のメリットを享受することです。
私がこれまでにしたこと
基本的な使用例についてはIIS8の手順に従いましたが、うまく機能しています。app_starting.htmというスプラッシュページを作成しました。このコードを使用すると、アプリの初期化中に表示されます。
なぜこれが良くないのか
初期化を使用して、ASP.NETMVCを使用して記述されたRESTベースのWebサービスへの要求を高速化したい。このWebサービスは、いくつかのアプリケーションのバックエンドです。リソース(つまり/client/1/addresses
)にリクエストを送信すると、代わりにスプラッシュページの受信を処理できなくなります。
私が試したこと
remapManagedRequestsTo
属性を削除しました。ただし、初期化中にリソースを要求すると、初期化が完了するまで500エラーが発生します。その後、応答は通常に戻ります。このサービスに依存するアプリケーションも、初期化がエラー状態であってはならないため、500エラーにうまく応答しません。
必要なもの
再マッピングを実行せずに、リクエストの動作が通常に戻ることを期待しています。初期化が進行中の場合でも、アプリケーションへの他の要求はキューに入れられ、初期化が完了するまで待つ必要があります。
足りないものはありますか?これを達成できますか?
助けてくれてありがとう!
iis-8 - IIS 8 アプリケーションの初期化 - WCF サービスのウォームアップ
現在、WCF Web サービスを含むアプリケーションのウォームアップに AppFabric Auto-Start 機能を使用しています。
これは私たちが使用している唯一の AppFabric 機能であり、IIS 8.0 にアップグレードしているため、代わりにアプリケーションの初期化を使用したいと考えています。
1) これらのソリューション間に既知の違いがあるかどうかをお知らせいただければ幸いです。
2) サンプル プロジェクトの初期化をセットアップできました: http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization。しかし、WCF サービスに同じ設定を行っても、ウォームアップはありません。にリクエストを出すことでウォーミングアップを行っているためだと思います。
これは実際にはサービスに届きません。ウォームアップ リクエストを実行する必要があります
これを設定する方法はありますか?