- PR -

LAN内とLAN外で画面起動時間が大きく異なる(VB.NET)

投稿者投稿内容
ume
会議室デビュー日: 2005/08/22
投稿数: 12
投稿日時: 2006-05-31 13:16
いつもお世話になっております。

今回、自身では解決に至らない問題が発生した為、掲示板に投稿させて頂きました。
お忙しい中、申し訳御座いませんが、皆様のお知恵を拝借させて頂ければ幸いです。

1.前提条件
 (1)クライアント
  OS:Windows XP(SP2)
 (2)DBサーバー
  OS:Windows Server2003(SP1)
  DB:Oracle9i
 (3)APサーバー
  OS:Windows Server2003(SP1)

 使用言語 :VB.NET
 DBミドルウェア:ODP.NET
 帳票ツール :Crystal Reports11(SP1)

2.現象
 開発が一通り完了し、現在システムテストのフェーズに入っております。
 その際、「機能の画面が立ち上がる速度が遅い」問題が発生しております。

 今回、作成したシステムは3拠点(本社と支社2拠点)に提供する予定で、
 本社(同じLAN内)においては、速度に問題は無いのですが、支社(ルーターの外)
 に関しては速度が異常に遅くなります。
 (本社の3〜4倍程度。具体的には画面が立ち上がるまで25秒前後)
 .NETは初回起動時は時間がかかる物と認識していますが、2回目以降も遅い為、
 運用に耐えられない状況です。。。

 APサーバー、DBサーバーは本社のLAN内にあり、EXE類はAPサーバー内に配置しています。
 クライアントには、APサーバーに配置している「システムのエントリポイントへのショートカット」
 を置いています。

 また、今回使用している開発ツールは「.NET 2003(VB)」「SPREAD」「Crystal Reports11(SP1)」
 「Oracle」のみです。
 またクライアントPCには「Symantec」社の「Norton AntiVirus」を常駐させています。

3.試した事
 (1)調査をしていた所「ネイティブ イメージ ジェネレータ」を使用した場合、初回起動時の速度
  が早くなるケースがあるといった記述を発見した為、以下の条件で実施しました。
  (結果的に効果はありませんでした。)
  @サーバーのキャッシュにネイティブ イメージを置いた場合          :速度に変化無し
  AクライアントのキャッシュにサーバーのEXEのネイティブ イメージを置いた場合:速度に変化無し
  Bサーバー、クライアントにサーバーのEXEのネイティブ イメージを置いた場合 :速度に変化無し

現在、支社(2拠点)には緊急対応としてEXEをクライアントに配置し、システムテストを実施しています。
(クライアントにEXEを配置した場合には、本社と同等の速度が出ます)
最悪の場合、2拠点にはこのままクライアントにEXEを置いて運用しますが、EXEの配布等々を考えた場合、
出来ればサーバーで管理したい思いがあります。
(通常のクライアント/サーバーではEXEはクライアントに置くのが正だと思いますが、、、)

似たような現象を対応した事がある方がいらっしゃいましたら、対応方法等ご教授頂ければ幸いです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-31 13:49
引用:

 今回、作成したシステムは3拠点(本社と支社2拠点)に提供する予定で、
 本社(同じLAN内)においては、速度に問題は無いのですが、支社(ルーターの外)
 に関しては速度が異常に遅くなります。



ということなら、

引用:

 .NETは初回起動時は時間がかかる物と認識していますが、2回目以降も遅い為、
 運用に耐えられない状況です。。。



いわゆる「.NET は初回起動が遅い」というのは関係ないと思います。

何かネットワーク構成上の問題があるんじゃないでしょうか?

まったくの勘ですが、外部ネットワークからのアクセスに関して、認証辺りに問題があるんじゃないでしょうか?
ume
会議室デビュー日: 2005/08/22
投稿数: 12
投稿日時: 2006-05-31 15:38
お世話になっております。
早速のお返事有難う御座います。

引用:

何かネットワーク構成上の問題があるんじゃないでしょうか?

まったくの勘ですが、外部ネットワークからのアクセスに関して、認証辺りに問題があるんじゃないでしょうか?



認証とは.NET Frameworkにおけるセキュリティの部分の事でしょうか?
もしくはWindowsの認証部分の事でしょうか?

.NET Frameworkのセキュリティに関する部分として、各ゾーンのセキュリティをFull Trustとする事で対応を取っています。(Exe起動時に.NET Frameworkのセキュリティに関する部分で問題がある場合、System.Security.SecurityExceptionのエラーが発生するかと思いますが、現在これが発生していない為、当該箇所に関しては問題は無い物と見ています。)

Windowsの認証に関する部分では特に特記するような仕掛けはしておりませんが、外部ネットワークに接続する際には、何か注意事項等が御座いますでしょうか?
お手数ですが、参考になるURL等、ご紹介頂ければ幸いです。
もふー。
会議室デビュー日: 2005/09/15
投稿数: 10
お住まい・勤務地: かながわ→なごやん
投稿日時: 2006-05-31 15:43
本当にルータの外であることが原因なのでしょうか?
端末自体に問題ありませんか?

引用:

またクライアントPCには「Symantec」社の「Norton AntiVirus」を常駐させています。


これに関しての確認がありませんよね? (´・ω・`)
評価するにあたり、構成を縮小していくのは基本だと思います。
ume
会議室デビュー日: 2005/08/22
投稿数: 12
投稿日時: 2006-05-31 16:28
お返事有難う御座います。

引用:

本当にルータの外であることが原因なのでしょうか?
端末自体に問題ありませんか?


引用:

またクライアントPCには「Symantec」社の「Norton AntiVirus」を常駐させています。




これに関しての確認がありませんよね? (´・ω・`)
評価するにあたり、構成を縮小していくのは基本だと思います。



大変失礼致しました。
『試した事』の記述漏れですが、「Norton AntiVirus」を無効にして検証も行なっております。結果は変化無し(起動が遅い)でした。
ゴングラッチェ
常連さん
会議室デビュー日: 2006/03/03
投稿数: 36
投稿日時: 2006-05-31 17:07
引用:
渋木宏明(ひどり)さんの書き込み 2006-05-31 13:49
いわゆる「.NET は初回起動が遅い」というのは関係ないと思います。
何かネットワーク構成上の問題があるんじゃないでしょうか?


この回答に同意です。記述された質問から想像すると、EXEレベルや.NETレベルの話ではないような気がとってもします。環境面を確認してボトルネックとなる可能性が高い箇所を確認してみると視界が開けるかもしれません。

私が思う確認点はこんなところです。
○EXEサイズの確認
 サイズが大きければクライアントPCがプログラムをロードするのに時間がかかります。そんな大きなサイズではないとは思いますが。念のため確認するのもよいかと。
○単純にコピーする時の所要時間の確認
 ・本社内でServer to PCで単純にEXEをコピーした時の所用時間
 ・支社内でPC to PCでコピーした時の所要時間
 ・本社-支社間でServer to PCでコピーした時の所要時間
 これらを計測してみたらいかがでしょ。本社-支社間が時間がかかるのでは?支社内でももしかしたら時間がかかるのかもしれません。
○ネットワークの回線速度の確認
 支社が10Mbpsとか、本社-支社間がInternetなんてことがあったりして。設計情報として入手してればそれを確認しましょう。入手していなければ入手しておいたほうが良いです。とはいいつつ、この状況では必須と思います。pingコマンド打って見比べるとかもしてみるとよさそうです。
○ネットワークの経路とボトルネックの確認
 tracertコマンドを実行して経路とボトルネックをしてみるとどうでしょう。本社と支社で取り比べ、ボトルネックと思われるルータが存在しないか確認します。

ネットワーク上にはさまざまな関所があります。危なそうなファイルが来るとバイナリレベルでチェックし、ウィルスがないか検査するわけですな。拡張子が"exe"のファイルはまず間違いなく検査対象になります(無論ルータの設定によります)。ネットワークの経路上にルータが数多くあると、それは関所がいっぱいあるのとほぼ同じ意味です。行く先々で検査されてたら目的地に到着するまで時間がかかりますね。EXEファイルのサイズが大きかったら1つの関所でかかる検査時間も相応にかかります。そこらへんを確認してくと幸せになれるかもしれません。

引用:
こりん@人口知能さんの書き込み 2006-05-31 15:43
端末自体に問題ありませんか?


テスト端末がエンドユーザが使用するPC環境と同じならば問題箇所を切り分け、特定するためにちょっと変更してみるくらいにしておいたほうが良いと思います。単体テストや結合テストレベルだったら構成縮小しますが、システムテストではやらないような気がします。
また、運用時にウィルスチェックを止めるわけにはいかないでしょうし、Personal Firewallが搭載されていたとしても、時間がかかるだけで起動はするとのことなので問題の原因としては可能性は薄そうと思うとです。チューニングのしようがないですし。いかがかしら。

引用:
現在、支社(2拠点)には緊急対応としてEXEをクライアントに配置し、システムテストを実施しています。
(クライアントにEXEを配置した場合には、本社と同等の速度が出ます)


支社方にオンボロでもいいから空きPCはないでしょうか?本社のでもOK。あったらならば、それを"支社用サーバ"ということにしちゃうという案はいかがでしょ?この手が打てれば、EXEの配布の懸念について希望的観測が得られるかもしれません。少なくともクライアントにばらまかずにすみますね。
"社内ルール"とか"支社方の抵抗"とか"開発者が支社サーバを管理するはめに"とかがあるかもしれませんが。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-05-31 18:01
とっちゃんです。

実行するEXEは、どういう起動方法をとっているのでしょうか?

サーバー上のEXEを直接起動しているのでしょうか?(UNC指定など)

もし直接読み込んでいるのであれば、それが原因だと思います。

インターネット越しで、本社<->支社をつないでいるのか
専用線でつないでいるのかはわかりませんが、LANと同程度以上の
実効転送速度が出ない限り、同程度の起動時間になることは絶対にありません。

また、LANの内部であっても、初期の実効2Mくらいしか出ないような
無線LANとかで試してみれば同じように、時間がかかりますよ。

サーバー上のEXEを直接ロードする場合、クライアント側のスペックよりも
ロードにかかる転送速度そのものがボトルネックになります。

あとは、ルーターやファイヤーウォールなどの影響ももちろん実効速度に
影響します(より高性能、高速なものであれば最終的には回線スペックそのものが
となりますが)。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
ume
会議室デビュー日: 2005/08/22
投稿数: 12
投稿日時: 2006-05-31 19:56
お忙しい中ご返答有難う御座います。

ゴングラッチェ様

 的確なご指摘有難う御座います。
 次回、お客様訪問時に、いくつかご教授頂いた検証方法を実施しようと思っております。結果は後日、ご連絡致します。
 (残念ながら社内にお客様の本社と同様の環境はありますが、本社⇔支社の環境は存在しないのです・・・)

 また、支社側にサーバーを置く件も、実は社内で検討したのですが、追加でサーバーを購入して頂く事は非常に難しく、また捨てるようなPCはお客様の環境には存在しない為、断念しております。



とっちゃん様

 まさにご指摘の通り、実行するEXEはサーバー上のEXEを直接起動しております。(UNC指定です。)


ゴングラッチェ様にご教授頂いた検証方法を実施し、それでも解消の兆しが見えない。もしくは解消を実施した際の費用対効果(多大な労力を要しても数秒しか変わらない等)が得られない等の場合、クライアントにEXEを置く方向で話を進めて行きます。


お忙しい中、ご回答頂き有難う御座いました。

スキルアップ/キャリアアップ(JOB@IT)