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

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

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

Re[17]: WebBrowserの並列処理の高速化の方法


(過去ログ 85 を表示中)

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

■50340 / inTopicNo.1)  WebBrowserの並列処理の高速化の方法
  
□投稿者/ たか (61回)-(2010/06/03(Thu) 23:58:00)

分類:[.NET 全般] 

C# ,netframework3.5でWindowsアプリを作っています。

WebBrowserコンポーネントを使ってWEBの巡回ツールのような物を作っています。
複数のサイトを回りそのサイトの情報を収集していくのですが 処理を少しでも速くしようと考えているのですが
何かいいアイディアあったら教えてください。

なおクッキーを使用したりもするのでWebRequestやWebClientで代用することはできません。
WebBrowserコンポーネント以外でもいいですが 最低限Cookieが使えてFormに値をセットしたりリンクを押したりJavaScriptも通常通り動作することが条件です。


・WebBrowserを複数利用しそれぞれ非同期にサイトを巡回し値を収集する
 それぞれのWebBrowserの動きは独立しておりDocumentCompletedイベントをトリガーに
 指定した順序でWEBを巡回し情報を収集します。
 同時に4つ起動した場合 単独で起動した場合の1.5倍程度のスピードにしかなっていないので
 工夫の余地はあるのかもしれませんが 現状その方法が思いつきません。
 
 ちなみにHTTPの規格上は同一サーバーへの同時接続数が2だったり4だったりするわけですが
 違うサーバーに対してなら帯域の許す限りいくつでもいけそうな気がするのですが 実際のところ
 利用するWebBrowserの数を増やしても期待するほどスピードは上がっていません。
 4つ起動したら4倍とまでは言わないまでも2倍ぐらいにはなってほしいところなのですが・・・
 
 なお同時に4つWebBrowserを起動していますが接続先は基本的に別のサーバーです。(偶然一致することもありますが確率的にはかなり低いです)


・WebBrowserで画像や動画などを表示しないようにする
 (COMを使って指定しています) 


あとPCのスペックはクアトロコアのCPUにメモリ4GB 回線も光回線で実測40Mbpsぐらい出てるし
アクセス先も大手のサイトが多いので ハード的な要因がボトルネックになってるとはまず考えられません。
CPU利用率もメモリ消費量も大して使ってないし・・・


もし何かアイディアがあれば教えてください。よろしくお願いします。
引用返信 編集キー/
■50346 / inTopicNo.2)  Re[1]: WebBrowserの並列処理の高速化の方法
□投稿者/ ちゃっぴ (20回)-(2010/06/04(Fri) 02:52:53)
ちゃっぴ さんの Web サイト
速くしたいなら、やっぱり WebBrowser を利用しないのが一番ですね。

Cookie と JavaScript を問題にしているようですけど、Cookie は HttpWebRequest でも指定することができます。
JavaScript はその処理を emurate してやればなんとかなりますね。手間はかかりますが。
引用返信 編集キー/
■50357 / inTopicNo.3)  Re[2]: WebBrowserの並列処理の高速化の方法
□投稿者/ たか (62回)-(2010/06/04(Fri) 10:36:57)
>ちゃっぴーさん
ありがとうございます。

> 速くしたいなら、やっぱり WebBrowser を利用しないのが一番ですね。
>
> Cookie と JavaScript を問題にしているようですけど、Cookie は HttpWebRequest でも指定することができます。
> JavaScript はその処理を emurate してやればなんとかなりますね。手間はかかりますが。

うーん これはさすがにコストがあわないなぁ(大汗
Firefoxプロジェクト自分で立ち上げるようなものだし・・・
一から実装すればいろいろ融通聞くし高速化はできそうですけどね


ただWebBrowserを使わない、ってことでピンと来たのですがIEより軽いFirefoxやChromeのエンジンを利用できれば
高速化もできるのでは?と思いついてググってみました。

Geckoエンジンを使う方法
http://www.atmarkit.co.jp/fdotnet/dotnettips/658geckobrowserctrl/geckobrowserctrl.html

このあたりの使用経験者いたら実行速度とか使い勝手とか教えてください。
とりあえず自分でも試してみますが・・・


並列処理のアイディアも引き続き募集します。

引用返信 編集キー/
■50359 / inTopicNo.4)  Re[3]: WebBrowserの並列処理の高速化の方法
□投稿者/ ちゃっぴ (26回)-(2010/06/04(Fri) 11:15:36)
ちゃっぴ さんの Web サイト
負荷試験用の製品を利用する手もありますね。
引用返信 編集キー/
■50380 / inTopicNo.5)  Re[1]: WebBrowserの並列処理の高速化の方法
□投稿者/ れい (925回)-(2010/06/04(Fri) 18:58:02)
No50340 (たか さん) に返信
> もし何かアイディアがあれば教えてください。よろしくお願いします。

アイデアは別にないのですが。

>  ちなみにHTTPの規格上は同一サーバーへの同時接続数が2だったり4だったりするわけですが
>  違うサーバーに対してなら帯域の許す限りいくつでもいけそうな気がするのですが 実際のところ
>  利用するWebBrowserの数を増やしても期待するほどスピードは上がっていません。
>  4つ起動したら4倍とまでは言わないまでも2倍ぐらいにはなってほしいところなのですが・・・

容易に分割可能な問題なので、ほぼ4倍になってもいいはずですよね。

> あとPCのスペックはクアトロコアのCPUにメモリ4GB 回線も光回線で実測40Mbpsぐらい出てるし
> アクセス先も大手のサイトが多いので ハード的な要因がボトルネックになってるとはまず考えられません。
> CPU利用率もメモリ消費量も大して使ってないし・・・

じゃ、何がボトルネックなんでしょうか?

画期的なアイデアを探すより先に、
問題の本質的原因を探る方が先だと思います。
引用返信 編集キー/
■50385 / inTopicNo.6)  Re[2]: WebBrowserの並列処理の高速化の方法
□投稿者/ たか (64回)-(2010/06/05(Sat) 08:04:25)
>ちゃっぴーさん
返信ありがとうございます。
負荷試験用〜も調べてみます。


>れいさん

返信ありがとうございます。

> 容易に分割可能な問題なので、ほぼ4倍になってもいいはずですよね。
自分も並列処理でここまで遅くなる理由がわかりません。


> じゃ、何がボトルネックなんでしょうか?
肝心の情報を書いていませんでした。すみません。

所要時間のほとんどはwebBrowser.NavigateやwebBrowser.document〜.invoke("click")などで画面遷移の処理をしてから
DocumentCompletedイベントが発生するまでの待ち時間です。

並列処理するとこの待ち時間が単独で行うより平均して長くかかります。
そのため並列で動いているにも関わらずトータルの時間はたいしてあがっていません。

サーバーの状況もあるので一概には言えませんが長い時だとページの読み込みに10秒以上かかっています。


あとひとつ気になっているのは初回起動時に非同期で同時に呼び出すので別々の4ページをほぼ同じタイミングで読み込み始めていたのですが これにかかる時間が異常に長くタイムアウトを20秒に設定しているのですがほぼ毎回タイムアウトしていました。
現在は1秒ずつずらして非同期で開始するようにしたのでこの現象は回避していますが
同時に読み込むと遅くなるのはWebBrowser側の仕様として何かしらあるのではないか?と疑っています。
引用返信 編集キー/
■50388 / inTopicNo.7)  Re[3]: WebBrowserの並列処理の高速化の方法
□投稿者/ 渋木宏明(ひどり) (1354回)-(2010/06/05(Sat) 12:38:51)
渋木宏明(ひどり) さんの Web サイト
> 所要時間のほとんどはwebBrowser.NavigateやwebBrowser.document〜.invoke("click")などで画面遷移の処理をしてから
> DocumentCompletedイベントが発生するまでの待ち時間です。

プログラムの構造上の問題でしょ。

プログラムの構造が前のスレッドのままだとすると、プログラム要件による処理キューの処理だけがマルチスレッド化されていて、WebBrowser のメッセージポンプはメインスレッドのものが使われているはずです。

であれば、各 WebBrowser のメッセージ処理はシリアライズされるので、シングルスレッドでイベントベースで最大限に効率のよりプログラム構造よりも、トータルではむしろ性能は悪くなります。
引用返信 編集キー/
■50390 / inTopicNo.8)  Re[4]: WebBrowserの並列処理の高速化の方法
□投稿者/ れい (926回)-(2010/06/05(Sat) 15:59:42)
No50388 (渋木宏明(ひどり) さん) に返信
> プログラムの構造上の問題でしょ。

前のスレッド云々はよく理解していませんが、
わたしもそう思います。

No50385 (たか さん) に返信
> 所要時間のほとんどはwebBrowser.NavigateやwebBrowser.document〜.invoke("click")などで画面遷移の処理をしてから
> DocumentCompletedイベントが発生するまでの待ち時間です。
>
> 並列処理するとこの待ち時間が単独で行うより平均して長くかかります。
> そのため並列で動いているにも関わらずトータルの時間はたいしてあがっていません。
>
> サーバーの状況もあるので一概には言えませんが長い時だとページの読み込みに10秒以上かかっています。

それはおかしいと思いませんか?
WebBrowserが複数あって、CPUやメモリなどの資源も潤沢にあり、ネットワーク負荷も余裕があるなら、
WebBrowserが一つの時とほぼ同じ時間で各WebBrowserのDocumentCompletedがライズしてもいい筈ですよね?

> 同時に読み込むと遅くなるのはWebBrowser側の仕様として何かしらあるのではないか?と疑っています。

仕様に問題があるかどうかはいろいろな立場・状況があるので一概にはいえませんが、
並列ができないんじゃWebBrowserコントロールの価値半減です。

多少難しかったり複雑だったりするかもしれませんが、
並列化するくらいは極々基本的な処理のはずです。
できると考えるのが妥当でしょう。

ならばどこかで「待ち」が入っているに違いありません。

別スレッドで資源が完全に独立しているなら、同じ時間で処理が終わるはずです。
複数あるとDocumentCompletedになるまでの時間が長くなるということは、
その内部にシリアル化されてる場所がある=資源待ちが入っているということです。

いま出ている情報からはこれしかわかりません。
さて、何処で如何して「待ち」が入っているんでしょうね?
引用返信 編集キー/
■50391 / inTopicNo.9)  Re[5]: WebBrowserの並列処理の高速化の方法
□投稿者/ 渋木宏明(ひどり) (1355回)-(2010/06/05(Sat) 19:15:53)
渋木宏明(ひどり) さんの Web サイト
>>同時に読み込むと遅くなるのはWebBrowser側の仕様として何かしらあるのではないか?と疑っています。

それはカンタンに確認出来そうな気が。

例えば、フォーム上に WebBroweser を4個貼っただけの単純あ Windows.Forms アプリケーションを作って、ボタン押下で4つの WebBrowser コントロールに対して連続的に Navigation をかけてみて、すべての WebBrowser コントロールが Completed を返すまでにどれくらいの時間を要するかを見てみればいいんじゃないですか?

それで特に「遅い」ということがなければ、まぁほぼ WebBrowser そのものの問題である可能性は除去していいでしょう。少なくとも一事的には。
引用返信 編集キー/
■50439 / inTopicNo.10)  Re[6]: WebBrowserの並列処理の高速化の方法
□投稿者/ たか (65回)-(2010/06/07(Mon) 16:29:25)
2010/06/07(Mon) 16:36:15 編集(投稿者)
>渋木宏明(ひどり) さん
> 例えば、フォーム上に WebBroweser を4個貼っただけの単純あ Windows.Forms アプリケーションを作って、ボタン押下で4つの WebBrowser コントロールに対して連続的に Navigation をかけてみて、すべての WebBrowser コントロールが Completed を返すまでにどれくらいの時間を要するかを見てみればいいんじゃないですか?

こちらを試しにやってみましたがやはり遅いです。
大手のポータルサイトを順に回るプログラムで100アクセスを1つのブラウザを使った場合と4つのブラウザを使った場合をそれぞれ3回やりましたが
前者は平均38秒、後者は平均50秒でした。
つまり4つのブラウザを使用した結果 300%アップが期待できるところ32%のスピード向上ということです。


なおキャッシュによる結果の差異を減らすためテストの順番は 1,4,4,1,1,4の順でやっています。


一応Formクラス内のソースも貼り付けておきます。
テストのためなのでメンテ性無視してコピペで作ったので ソース汚いってご指摘はご勘弁^^
button1をクリックするとトータル100サイト読み込むまで読み続けるプログラムです。
(時間の計測は手動で)


=================================================
private int[] cnt;
String[] urls;
public Form1() {
    InitializeComponent();

    urls = new string[5] { "http://www.yahoo.co.jp", "http://www.google.co.jp", "http://www.goo.ne.jp", "http://www.livedoor.co.jp" ,"http://www.microsoft.com"};
    cnt = new int[4];
    for (int i = 0; i < 4; i++) {
        cnt[i] = 0;
    }
}


private void button1_Click(object sender, EventArgs e) {
    webBrowser1.Navigate(urls[0]);
    webBrowser2.Navigate(urls[1]);
    webBrowser3.Navigate(urls[2]);
    webBrowser4.Navigate(urls[3]);
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    if (getCntAll() >= 100) return;
    cnt[0]++;
    label1.Text = getCntString();
    webBrowser1.Navigate(getURL());
}

private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    if (getCntAll() >= 100) return;
    cnt[1]++;
    label1.Text = getCntString();
    webBrowser2.Navigate(getURL());
}

private void webBrowser3_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    if (getCntAll() >= 100) return;
    cnt[2]++;
    label1.Text = cnt.ToString();
    webBrowser3.Navigate(getURL());
}

private void webBrowser4_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    if (getCntAll() >= 100) return;
    cnt[3]++;
    label1.Text = getCntString();
    webBrowser4.Navigate(getURL());
}

private string getURL(){
    return urls[getCntAll() % 5];
}

private int getCntAll() {
    return cnt[0] + cnt[1] + cnt[2] + cnt[3];
}

private string getCntString() {
    return String.Format("{0}回({1},{2},{3},{4})", getCntAll(), cnt[0], cnt[1], cnt[2], cnt[3]);
}

引用返信 編集キー/
■50440 / inTopicNo.11)  Re[7]: WebBrowserの並列処理の高速化の方法
□投稿者/ たか (66回)-(2010/06/07(Mon) 16:34:31)
2010/06/07(Mon) 16:34:51 編集(投稿者)

その上でれいさんと渋木宏明(ひどり)さんの書き込みの中で自分が理解できていない部分で言うと下記の部分です。

>別スレッドで資源が完全に独立しているなら、同じ時間で処理が終わるはずです。
>複数あるとDocumentCompletedになるまでの時間が長くなるということは、
>その内部にシリアル化されてる場所がある=資源待ちが入っているということです。

>であれば、各 WebBrowser のメッセージ処理はシリアライズされるので、シングルスレッドでイベントベースで最大限に効率のよりプログラム構造よりも、トータルではむしろ性能は悪くなります。


もしこの部分がネックで上記のテストプログラムが遅いのであれば 参考になるサイトの例示いただけるとありがたいのですが・・・
メッセージポンプの概念はいくつかサイト見てわかりましたが じゃあ実際に並列処理するにはどうするの?
というのがまだわかっておりませんので・・・
引用返信 編集キー/
■50443 / inTopicNo.12)  Re[8]: WebBrowserの並列処理の高速化の方法
□投稿者/ 渋木宏明(ひどり) (1356回)-(2010/06/07(Mon) 17:12:22)
渋木宏明(ひどり) さんの Web サイト
>こちらを試しにやってみましたがやはり遅いです。

ごめんなさい、これは例が悪かったかもしれません。
ひょっとして、Navigate() からの復帰が遅くありませんか?

>もしこの部分がネックで上記のテストプログラムが遅いのであれば

「どこが」遅いのか、もう少し精密に測定してみて下さい。
(Navigate() 呼び出し開始から、復帰までに時間がかかっている、など)

>じゃあ実際に並列処理するにはどうするの?

前に書いたような気がしますが、ワーカースレッド内で WebBrowser のインスタンスを生成し、かつ同じスレッドでメッセージポンプを回します。
そうすれば、各 WebBrowser は完全にお互いに無関係な状態で並列動作します。


引用返信 編集キー/
■50450 / inTopicNo.13)  Re[9]: WebBrowserの並列処理の高速化の方法
□投稿者/ たか (67回)-(2010/06/07(Mon) 19:47:54)
>「どこが」遅いのか、もう少し精密に測定してみて下さい。
>(Navigate() 呼び出し開始から、復帰までに時間がかかっている、など)
Navigateを呼び出してからDocumentCompletedイベントの発生するまでの間です。


>前に書いたような気がしますが、ワーカースレッド内で WebBrowser のインスタンスを生成し、かつ同じスレッドでメッセージポンプを回します。
>そうすれば、各 WebBrowser は完全にお互いに無関係な状態で並列動作します。

このメッセージポンプの回し方がよくわからないです。
ワーカースレッドを立てて その中でWebBrowserをNEWして上記と同様の処理を書いてみましたが NavigateしてもDocumentCompletedイベントが発生しません。
Application.MessageLoopの値を見るとfalseになっているのでメッセージポンプが回っていないせい、というところまではわかったのですが
その回し方がわかりません。かなりググってるのですが Application.Runすれば勝手に作ってくれるって情報は結構あるのですが
ワーカースレッド内で回す方法がわかりません。
使用するクラスなどキーワードだけでも教えていただけないでしょうか?


ソース載せるとだいたいこんな感じです。

//一部略
private void button1_Click(object sender, EventArgs e) {
Thread[] threads = new Thread[4];
for (int i = 0; i < 4; i++) {
threads[i] = new Thread(new ParameterizedThreadStart(startThreadMain));
threads[i].ApartmentState = System.Threading.ApartmentState.STA;
threads[i].IsBackground = true;
threads[i].Start(i);
}
}


private void startThreadMain(Object o){
int num = (int)o;

ThreadWorker th = new ThreadWorker();
th.start(num);
}
//一部略


public class ThreadWorker{
//宣言略
public ThreadWorker() {
webBrowser = new WebBrowser();
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
}

public void start(int num) {
isBusy = true;
webBrowser.Navigate(urls[num]);
}

private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
if (cnt >= 100) {
isBusy = false;
return;
}
cnt++;
webBrowser.Navigate(getURL());
}
//一部略
}
引用返信 編集キー/
■50451 / inTopicNo.14)  Re[10]: WebBrowserの並列処理の高速化の方法
□投稿者/ 渋木宏明(ひどり) (1357回)-(2010/06/07(Mon) 20:18:39)
渋木宏明(ひどり) さんの Web サイト
2010/06/07(Mon) 20:19:14 編集(投稿者)

> Navigateを呼び出してからDocumentCompletedイベントの発生するまでの間です。

Navigate() の呼出から復帰までは時間がかかりませんでしたか?

> このメッセージポンプの回し方がよくわからないです。

Windows.Forms では、Application.Run() です。

引用返信 編集キー/
■50454 / inTopicNo.15)  Re[11]: WebBrowserの並列処理の高速化の方法
□投稿者/ たか (68回)-(2010/06/07(Mon) 21:57:33)
> Navigate() の呼出から復帰までは時間がかかりませんでしたか?
これは確かめてみます。


> Windows.Forms では、Application.Run() です。

Application.Runで見えないフォームを起動して・・・ってのは上の書き込み直後にすでに試していて
確かに100サイト読み込みに17秒だから 190%ぐらいの速度アップなのでその点ではいいのですが
そうすると今度は値をメインスレッドに返す部分で行き詰まります。
(サンプルは返さないからいいのですが 実際のアプリは収集結果をいろいろ返す必要があります)

今まではInvokeで必要箇所を返せてたけど別Applicationだとダメなので ファイル経由で渡すかDB経由で渡すか・・・
別スレッドに値渡すように手動でリスナー用意して・・・みたいなのもメッセージポンプ調べる課程で見たけど
結構面倒そうだし うーん、、、って感じです。
設計を根本的にやり直さないといけないので 今の時点でこの規模の改修はどうしようかな、、、と悩みます。


とりあえず一歩前進ということでありがとうございます。

引用返信 編集キー/
■50457 / inTopicNo.16)  Re[12]: WebBrowserの並列処理の高速化の方法
□投稿者/ 渋木宏明(ひどり) (1358回)-(2010/06/07(Mon) 23:39:02)
渋木宏明(ひどり) さんの Web サイト
2010/06/07(Mon) 23:47:35 編集(投稿者)

> そうすると今度は値をメインスレッドに返す部分で行き詰まります。

> 今まではInvokeで必要箇所を返せてたけど別Applicationだとダメなので ファイル経由で渡すかDB経由で渡すか・・・

同一プロセス内なら、いくらでも方法はあると思いますが…
具体的に、何がどうダメでしたか?

例えば、メインスレッドとワーカースレッドの間で、同期オブジェクトで保護したキューを共有するだけでも十分だと思うんですが、それじゃダメなんでしょうか?

引用返信 編集キー/
■50461 / inTopicNo.17)  Re[13]: WebBrowserの並列処理の高速化の方法
□投稿者/ ヴァン (75回)-(2010/06/08(Tue) 09:39:49)
こんにちは。

IEのコンポーネントを使ったときの同時接続数の制限ってありませんでしたっけ?
関係なかったらごめんなさい。

引用返信 編集キー/
■50462 / inTopicNo.18)  Re[14]: WebBrowserの並列処理の高速化の方法
□投稿者/ しづる (2回)-(2010/06/08(Tue) 09:57:15)
No50461 (ヴァン さん) に返信
> こんにちは。
>
> IEのコンポーネントを使ったときの同時接続数の制限ってありませんでしたっけ?
> 関係なかったらごめんなさい。
>
おそらく、これは同一サーバーの場合の制限なので、冒頭にあるように異なるサーバへの接続であれば問題ないかと。
そういう意味では、TCP/IP同時接続数制限は影響するかも。
引用返信 編集キー/
■50464 / inTopicNo.19)  Re[15]: WebBrowserの並列処理の高速化の方法
□投稿者/ 渋木宏明(ひどり) (1359回)-(2010/06/08(Tue) 10:18:34)
渋木宏明(ひどり) さんの Web サイト
> おそらく、これは同一サーバーの場合の制限なので、冒頭にあるように異なるサーバへの接続であれば問題ないかと。

ですね。

全体での接続数の制限とかあったかなぁ?

> そういう意味では、TCP/IP同時接続数制限は影響するかも。

は incoming だけじゃなかったでしたっけ?
引用返信 編集キー/
■50507 / inTopicNo.20)  Re[16]: WebBrowserの並列処理の高速化の方法
 
□投稿者/ たか (69回)-(2010/06/09(Wed) 14:08:07)
>渋木宏明(ひどり) さん
ありがとうございます。
昨日は一日出ていたので返信おそくなりました。


とりあえず見えないフォームを複数起動してその中でWebBrowserを・・・という方向で全変更しました。
送るデータがいろいろあり送りたいデータの構造も複雑なのでそれをいちいち中間データ作って送る処理と 受け取る処理を書くのがかなり面倒かな、と思いましたが まぁ力業で解決しました。
画面描画はほとんど自作の操作クラス経由で描画していたので修正範囲が該当クラス内だけで済んだのが不幸中の幸いでしたが・・・


ちなみに実装方法としては実行ログなど単純なデータはおっしゃるようにシリアライズしたキューを使い
複雑なデータは元々DBに保存する仕様だったのでその仕様に多少拡張を行うことで 直接送信ではなく DBに保存、DBから読み込みと DB経由で間接的に送信する方法をとりました。
たぶんデータ管理クラス作って直接送った方が処理は軽いけど まぁ実装の手間とてんびんにかけて・・・

いろいろありがとうございました。


>ヴァンさん、しづるさん
ありがとうございます。
IEの場合同一のサーバに対しての同時接続数は4ですが「同一」のサーバーに対してなので今回は問題ないです
TCP/IPの接続数の制限は確かなかったはずです。
あっても数万とかそういうレベルなので その制限より前にサーバーなりルーターなりハード的な問題が先にきます。
一応WEBシステム開発の方が本業なのでこのあたりはWindowsアプリのことよりは詳しいです(笑)

ちなみにアプリ単位で制限をかけていることはありますが とりあえず実験した範囲でIEは10個ぐらいは問題ないようです。


とか書きながらググってみたらWindows XPからOSとしてTCPIPの接続数の制限が入ったようです。
下記見ると XPだと10件まで Vistaも制限あるような記述あるけど 自分の使ってるUltimate版にはなかったから
エディションによって変わってくるのかな?

http://www.traceability-center.com/proserpine/pcSettings_TcpipMaxConn.html

自分もoutboundは無制限だと思ってたけどいつのまにかこんな制限増えてたんですね。
勉強になりました。
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -