C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: Webアプリの初回起動がとても遅い


(過去ログ 93 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■55261 / inTopicNo.1)  Webアプリの初回起動がとても遅い
  
□投稿者/ akira (17回)-(2010/11/24(Wed) 07:53:36)

分類:[ASP.NET (VB)] 

ASP.NETでDBにMS-Accessを利用し、イントラのWebアプリを作成しています。
しかし、ASP.NETで作成したWebアプリをプリコンパイルしたものでも、初回起動が約12秒
位かかります。2回目起動は約3秒です。
 ググってみると朝6時頃にダミーのASP.NETで作成したWebアプリを起動し終了して
おけば良さそうなのですが、
http://bbs.wankuma.com/index.cgi?mode=al2&namber=38682&KLOG=67
調べてもその具体的な方法を見付ける事ができませんでした。
Webアプリの初回起動から約3秒くらいで起動出来る方法の何かヒントとなるアドバイスを
頂けると助かります。よろしくお願いします。

Win Server2003, IIS 6.0, .NET 3.5, MS-Access2003のイントラ環境です。
引用返信 編集キー/
■55262 / inTopicNo.2)  Re[1]: Webアプリの初回起動がとても遅い
□投稿者/ m2 (5回)-(2010/11/24(Wed) 09:33:43)
2010/11/24(Wed) 09:43:44 編集(投稿者)

No55261 (akira さん) に返信

初回起動時にコンパイルされるので仕方がないことではあるのですがね。
以下を参照で。

http://msdn.microsoft.com/ja-jp/library/cc671425.aspx

引用返信 編集キー/
■55263 / inTopicNo.3)  Re[1]: Webアプリの初回起動がとても遅い
□投稿者/ todo (67回)-(2010/11/24(Wed) 09:36:35)
wget(フリーウエア)をコントロールパネルのタスクに登録して、朝6時にWebアプリにリクエストを出すとか。
引用返信 編集キー/
■55266 / inTopicNo.4)  Re[2]: Webアプリの初回起動がとても遅い
□投稿者/ akira (18回)-(2010/11/24(Wed) 12:39:21)
m2様
> 初回起動時にコンパイルされるので仕方がないことではあるのですがね。
> 以下を参照で。
>
> http://msdn.microsoft.com/ja-jp/library/cc671425.aspx

アドバイスありがとうございます。
既にご案内のページの方法でプリコンパイルしたWebアプリで、初回起動時間の検討を
しております。
プリコンパイル済みWebアプリで初回起動時間:約12秒、2回目起動時間:約3秒
プリコンパイルしていないWebアプリで初回起動時間:約13秒、2回目起動時間:約3秒
とプリコンパイル済みのものと、プリコンパイルしていないものでも起動時間にほとんど
差がない状況です。

今回の初回起動のみ、起動に時間が掛かってしまう原因と解決法はプリコンパイルの
問題以外の影響が大きいと考えています。

todo様
> wget(フリーウエア)をコントロールパネルのタスクに登録して、朝6時にWebアプリにリクエストを出すとか。

アドバイスありがとうございます。
http://tech.bayashi.net/svr/doc/wget.html
wgetはUNIX OS系のツールの模様です。
現状のサーバ環境は
Win Server2003, IIS 6.0, .NET 3.5, MS-Access2003
のWindows OSサーバです。
引用返信 編集キー/
■55267 / inTopicNo.5)  Re[1]: Webアプリの初回起動がとても遅い
□投稿者/ やじゅ (1780回)-(2010/11/24(Wed) 13:01:30)
やじゅ さんの Web サイト
No55261 (akira さん) に返信
>  ググってみると朝6時頃にダミーのASP.NETで作成したWebアプリを起動し終了して
> おけば良さそうなのですが、
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=38682&KLOG=67
> 調べてもその具体的な方法を見付ける事ができませんでした。

別にASP.NETのアプリである必要はありません、Windowsフォームアプリでもよいです。
PC起動直後の最初のマネージドコード実行に時間がかかるので、サーバーのスタート時に
起動してすぐ閉じればいいかな。
http://blog.livedoor.jp/dotnetmemo/archives/cat_161386.html

引用返信 編集キー/
■55374 / inTopicNo.6)  Re[1]: Webアプリの初回起動がとても遅い
□投稿者/ はつね (1325回)-(2010/11/28(Sun) 22:42:24)
No55261 (akira さん) に返信
> ASP.NETでDBにMS-Accessを利用し、イントラのWebアプリを作成しています。

たぶん、DLLのローディングとかが影響しているじゃないかと思うので、
Webアプリを配置したら1度だけ自分のPCからでもアクセスしておけばいいかと。

引用返信 編集キー/
■55394 / inTopicNo.7)  Re[2]: Webアプリの初回起動がとても遅い
□投稿者/ akira (19回)-(2010/11/29(Mon) 12:44:11)
No55267 (やじゅ さん) に返信
> 別にASP.NETのアプリである必要はありません、Windowsフォームアプリでもよいです。
> PC起動直後の最初のマネージドコード実行に時間がかかるので、サーバーのスタート時に
> 起動してすぐ閉じればいいかな。
> http://blog.livedoor.jp/dotnetmemo/archives/cat_161386.html

やじゅさん、アドバイスありがとうございます。
Webアプリの初回起動時間が約7秒と以前の約12秒から多少短くなりましたので報告
します。

VB2008 Express Editionで、以下の非常にシンプルなプログラムを作成し、ビルドし、
StartDum.exeというファイルを作りました。
次にWin Server2003のタスクで、StartDum.exeを毎朝8:00に自動起動
する様に11/26(金)に設定しました。

本日出社し、対象のASP.NETで作成したWebアプリをプリコンパイルしたものの初回起動
の時間を測ってみると約6秒という微妙な起動時間になりました。
このアプリを終了し、2回目起動してみると約3秒で起動しました。

VBアプリを早朝に自動起動・終了しておくことで、ASP.NETのプリコンパイル済みの
Webアプリの初回起動時間が短縮される事は体感できたのですが、2回目起動と同等の
約3秒で初回起動させたいです。
アドバイスがありましたらよろしくお願いします。

環境:Win Server2003, IIS 6.0, .NET 3.5, MS-Access2003のイントラ環境です。

Module Module1

Sub Main()
Dim a As String
End Sub

End Module

引用返信 編集キー/
■55395 / inTopicNo.8)  Re[2]: Webアプリの初回起動がとても遅い
□投稿者/ akira (20回)-(2010/11/29(Mon) 12:50:50)
No55374 (はつね さん) に返信
> ■No55261 (akira さん) に返信
>>ASP.NETでDBにMS-Accessを利用し、イントラのWebアプリを作成しています。
>
> たぶん、DLLのローディングとかが影響しているじゃないかと思うので、
> Webアプリを配置したら1度だけ自分のPCからでもアクセスしておけばいいかと。

はつねさん、アドバイスありがとうございます。
はい、自分のPCから1度だけアクセスしておけば、次に使う職場のみなさんは
ASP.NETで作成されたWebアプリはどれも約3秒で起動する様になるのは、判明し
ております。
最初に使用する人も、起動の約12秒を待つことなく、約3秒で起動させる方法を
検討しております。
ご指導よろしくお願いします。
引用返信 編集キー/
■55399 / inTopicNo.9)  Re[3]: Webアプリの初回起動がとても遅い
□投稿者/ tani (13回)-(2010/11/29(Mon) 14:02:27)
2010/11/29(Mon) 14:09:23 編集(投稿者)

私なら、初回起動は12秒かかりますと言ってしまいそうです。


それはさておき、
wgetはもともとUNIX系のプログラムですが、Windows用もあります。
http://www.google.co.jp/search?hl=ja&q=wget+windows&lr=lang_ja&rlz=1I7GZAZ_ja
タスクにwgetを登録しするのはどうでしょうか。


同様のことをvbsでしてもいいです。
タスクにvbsを登録し
vbsでIEを起動しイントラネット表示、その後終了をします。

■dummystart.vbs■■■■■■■■■■■■■■■■■■■■■■■■
Option Explicit
dim objIE
on error resume next

Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate "http://intraserver/applicationurl" ' URLを指定
While objIE.busy: Wend
While objIE.Document.readyState <> "complete": DoEvents : Wend


objIE.Height = 500
objIE.Width = 500
objIE.Visible = True
WScript.Sleep(3000) ' 3秒待機
objIE.Quit

引用返信 編集キー/
■55413 / inTopicNo.10)  Re[4]: Webアプリの初回起動がとても遅い
□投稿者/ PATIO (65回)-(2010/11/29(Mon) 19:46:05)
2010/11/29(Mon) 19:46:54 編集(投稿者)

.NET Frameworkを使っている実行ファイルと言うのは中間コードで
実際には実行時にネイティブコードに変換されて実行されるのでは?

単純にDLLのロードだけの話ではないような気がします。
問題のプログラム規模が分かりませんけれど、中間コードから
ネイティブコードへの変換で時間が掛かっているのであれば、
少なくともそのプログラムを一度動かさないと駄目なんじゃないかと思います。
メモリ上にキャッシュされているネイティブコードがキャッシュアウトされれば、
結局また変換が必要になるので一度動かしておけば絶対大丈夫とは言えないと
思いますけれど。

話を聞いている限りではそういう話なのではないかなと思います。
.NET Frameworkを使っている限り、これは仕方がないと思っていましたけど。

引用返信 編集キー/
■55422 / inTopicNo.11)  Re[5]: Webアプリの初回起動がとても遅い
□投稿者/ tani (14回)-(2010/12/01(Wed) 12:47:29)
追記:
私がするのだったら、次の方法を試します。それ以上はたぶん諦めます。
* OS:1週間に1回Windowsを再起動する。
* IIS:アプリケーションプールのリサイクルをやめる。
* IIS:プリコンパイルしたものを配置する。
aspnet_compiler -v PreCompile -p D:\web D:\webprecompile
* asp.net:外部コンポーネントを使っている場合は、トップページにすべてのコンポーネントを非表示で配置する。(DLL読込を一気にさせてキャッシュさせる。)
* asp.net:DB接続でコネクションプールを使う。
* クライアント:wgetでトップページをasp.netに処理させる。※同一サーバでも良い。
* クライアント:名前解決できているか確認する。名前解決に時間がかかっているとかじゃないですよね?

引用返信 編集キー/
■55431 / inTopicNo.12)  Re[3]: Webアプリの初回起動がとても遅い
□投稿者/ やじゅ (1782回)-(2010/12/01(Wed) 22:11:36)
やじゅ さんの Web サイト
No55394 (akira さん) に返信
> VBアプリを早朝に自動起動・終了しておくことで、ASP.NETのプリコンパイル済みの
> Webアプリの初回起動時間が短縮される事は体感できたのですが、2回目起動と同等の
> 約3秒で初回起動させたいです。
> アドバイスがありましたらよろしくお願いします。

WindowsフォームにWebBrowserコントロールを貼り付けて、起動したいサイトを指定して
表示完了後に閉じて終了させてみるってのはどうでしょうかね。
引用返信 編集キー/
■55488 / inTopicNo.13)  Re[6]: Webアプリの初回起動がとても遅い
□投稿者/ akira (21回)-(2010/12/03(Fri) 13:35:02)
No55422 (tani さん) に返信
> 追記:
> 私がするのだったら、次の方法を試します。それ以上はたぶん諦めます。
> * OS:1週間に1回Windowsを再起動する。
> * IIS:アプリケーションプールのリサイクルをやめる。
> * IIS:プリコンパイルしたものを配置する。
> aspnet_compiler -v PreCompile -p D:\web D:\webprecompile
> * asp.net:外部コンポーネントを使っている場合は、トップページにすべてのコンポーネントを非表示で配置する。(DLL読込を一気にさせてキャッシュさせる。)
> * asp.net:DB接続でコネクションプールを使う。
> * クライアント:wgetでトップページをasp.netに処理させる。※同一サーバでも良い。
> * クライアント:名前解決できているか確認する。名前解決に時間がかかっているとかじゃないですよね?

taniさん、アドバイスありがとうございます。
VBScriptでこの様な処理が出来るのですね。勉強になります。
また、初回起動時間短縮手法の多くのヒントありがとうございます。

VBScriptで、対象のプリコンパイル済みのWebアプリを早朝に自動起動し、終了する
様にタスクに定義しました。

今朝出社して対象のWebアプリを起動したところ、初回起動時間が約6秒と以前の
約12秒から短くなりました。
前回のVB.NETで非常にシンプルなexeプログラムを起動・終了した時とほぼ同じ
初回起動時間の結果となりました。
http://bbs.wankuma.com/index.cgi?mode=one&namber=55394&type=55261&space=30

初回起動時間を2回目起動時間の約3秒まで短縮するまでにはなっていませんが、
初回起動時間が約6秒であれば、実用上利用者が「あれ、トラブルかな?」とか
「起動遅過ぎる?」と感じないレベルかなと感じています。

もう少し初回起動時間の短縮の方法を検討は続けてみるつもりです。

質問:ASP.NETのWebアプリは皆様のところでも、初回起動は約12秒位掛かって
おり、2回目起動からは約3秒になると言う現象は発生しているのでしょうか?
また、この状態で運用を行っておられ、利用者の理解も得られているのでしょうか?
引用返信 編集キー/
■55570 / inTopicNo.14)  Re[7]: Webアプリの初回起動がとても遅い
□投稿者/ tani (15回)-(2010/12/06(Mon) 15:20:45)
2010/12/07(Tue) 09:05:39 編集(投稿者)

No55488 (akira さん) に返信
> 今朝出社して対象のWebアプリを起動したところ、初回起動時間が約6秒と以前の
> 約12秒から短くなりました。
> 前回のVB.NETで非常にシンプルなexeプログラムを起動・終了した時とほぼ同じ
> 初回起動時間の結果となりました。
> http://bbs.wankuma.com/index.cgi?mode=one&namber=55394&type=55261&space=30
>
> 初回起動時間を2回目起動時間の約3秒まで短縮するまでにはなっていませんが、
> 初回起動時間が約6秒であれば、実用上利用者が「あれ、トラブルかな?」とか
> 「起動遅過ぎる?」と感じないレベルかなと感じています。
>
> もう少し初回起動時間の短縮の方法を検討は続けてみるつもりです。
>
> 質問:ASP.NETのWebアプリは皆様のところでも、初回起動は約12秒位掛かって
> おり、2回目起動からは約3秒になると言う現象は発生しているのでしょうか?
> また、この状態で運用を行っておられ、利用者の理解も得られているのでしょうか?

私の場合
起動時間については全く問題になっていません。。。ですがAjaxで2〜5秒程度待つところでは当初速度アップを要求されましたが、今はご理解いただいています。

Ajaxが遅いのは、MSAjaxの問題とブラウザ側(IE8)の問題が大きいようですね。IE8が遅いのはどうしようもありませんでした。Google Chrome使えばとても速いです。
初回起動時は多少遅くログイン画面が出るまでに数秒程度かかりますが、1度表示すればGoogleなどと同じような応答速度です。
■ログイン画面(初回):数秒で表示
■ログイン画面(2回目以降):インターネット越しで0.5秒くらいで表示されます。
プリコンパイルの効果が大きく、予想以上にサクサク問題なく動いています。
負荷が軽すぎるので、参考にならなかったらすみません。


OS: Windows WebServer2008R2(ASP.net自体は32bit WOW32で動作)
DB: OracleへODP.net使用
ASP.net:ASP.net 2.0 (Visual Studio 2005)
GrapeCity社製ActiveReport使用。
プリコンパイル済み。binフォルダが7MB。プロジェクト名.dllが732KB。
用途:社内用Webシステムで、利用率はとても低い。ピーク時でも5ユーザ以内。
毎朝6時にASP.netのプロセスをリサイクル。また1日に3回くらいタイムアウト(3時間くらい?)でリサイクルされています。

※2010/12/07追記:ASP.netのプロセス = アプリケーションプールです。
引用返信 編集キー/
■55578 / inTopicNo.15)  Re[8]: Webアプリの初回起動がとても遅い
□投稿者/ ちゃっぴ (59回)-(2010/12/06(Mon) 22:05:14)
ちゃっぴ さんの Web サイト
ん? Application Pool の recycle は関係ないでしょう。
問題なのは Web application の自動 shutdown でわ?

それから、IIS6.0 とのことなので初回起動を強制的に起こす必要がありますが、おいらだったら、WebBrowser control なんて使わずに HttpWebRequest でやるけどな。

引用返信 編集キー/
■55602 / inTopicNo.16)  Re[9]: Webアプリの初回起動がとても遅い
□投稿者/ akira (23回)-(2010/12/07(Tue) 12:52:17)
No55570 (tani さん) に返信
> 私の場合
> 起動時間については全く問題になっていません。。。ですがAjaxで2〜5秒程度待つところでは当初速度アップを要求されましたが、今はご理解いただいています。
>
> Ajaxが遅いのは、MSAjaxの問題とブラウザ側(IE8)の問題が大きいようですね。IE8が遅いのはどうしようもありませんでした。Google Chrome使えばとても速いです。
> 初回起動時は多少遅くログイン画面が出るまでに数秒程度かかりますが、1度表示すればGoogleなどと同じような応答速度です。
> ■ログイン画面(初回):数秒で表示
> ■ログイン画面(2回目以降):インターネット越しで0.5秒くらいで表示されます。
> プリコンパイルの効果が大きく、予想以上にサクサク問題なく動いています。
> 負荷が軽すぎるので、参考にならなかったらすみません。
>
> OS: Windows WebServer2008R2(ASP.net自体は32bit WOW32で動作)
> DB: OracleへODP.net使用
> ASP.net:ASP.net 2.0 (Visual Studio 2005)
> GrapeCity社製ActiveReport使用。
> プリコンパイル済み。binフォルダが7MB。プロジェクト名.dllが732KB。
> 用途:社内用Webシステムで、利用率はとても低い。ピーク時でも5ユーザ以内。
> 毎朝6時にASP.netのプロセスをリサイクル。また1日に3回くらいタイムアウト(3時間くらい?)でリサイクルされています。
>
> ※2010/12/07追記:ASP.netのプロセス = アプリケーションプールです。

taniさん、実際の詳細な初回起動時間情報、2回目起動時間情報、サーバの仕様情報
ありがとうございます。とても参考になります。

私が使用しているサーバのハードスペックを確認して見ましたが、高機能な
物ではなく、CPUも古く、RAMも少なかったです。サーバのハードスペックが
低いことも、Webアプリの初回起動に時間が掛かってしまっている事の理由の
ひとつと感じました。

現状はAjax機能は利用しておりませんが、今後ユーザインタフェース機能向上に
Ajax機能の利用を計画しております。その際にも待ち時間に注意が必要そうですね。


No55578 (ちゃっぴ さん) に返信
> ん? Application Pool の recycle は関係ないでしょう。
> 問題なのは Web application の自動 shutdown でわ?
>
> それから、IIS6.0 とのことなので初回起動を強制的に起こす必要がありますが、おいらだったら、WebBrowser control なんて使わずに HttpWebRequest でやるけどな。

ちゃっぴさん、アドバイスありがとうございます。
●Application Pool の recycle はWebアプリの初回起動時間の長短には関係ない。
●WebBrowser control なんて使わずに HttpWebRequest でやる。
ASP.NET、Windowsサーバが動いている仕組みをもっともっと勉強しなければいけない
事が良くわかりました。
WebBrowser control、HttpWebRequestについて調べてみます。
今後ともご指導よろしくお願いします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -