FC2ブログ

HttpWebRequest.GetResponseが遅い問題が解消できたかも

.NETで自動売買プログラムの開発を始めた当初から悩んでいて、現在に至っても解決できていなかった問題がありました。
HttpWebRequest.GetResponse メソッドを実行すると同一プロセス内の初回呼び出しに限ってとても時間がかかるというもので(15秒~30秒くらいかかる)、ググってもあまり話題が無いので特定の環境に依存する問題だと思います(私の開発したアプリケーションだけでなく、これを内部で使っていると思われるはっちゅう君などでも起動に時間がかかっていました)。私の家にあるどのPCにもこの問題が発生していたので、原因が掴めませんでした(ちなみに、二度目以降は普通にアクセスできるので、売買プログラムの起動時にGetResponseメソッドを一回呼び出しておけば自動売買には影響なかった)。
その問題が今月のマイクロソフト月例アップデートで改善したようです。
アップデートの中にWindows XP 用の更新プログラム (KB934238)というのが着ていてアップデートに失敗していたのですが、これはMicrosoft .NET Framework 3.0 Service Pack 1用のものでした(.NET Framework 3.0SP1を予めインストールしておけば問題は発生しないようです)。もともとSP1を入れていなかったので不要なアップデートだったのですが、そのまま放置しておくのも嫌な感じがしたので、.NET Framework 3.0 SP1も一緒にインストールしました。
他にも幾つかアップデートしたので、これのせいかどうかはわからないのですが、アップデート後はHttpWebRequest.GetResponseの初回呼び出しが3秒くらいにまで短くなっています。はっちゅう君の起動も早くなりました。
この問題にはずっと悩まされていたので大助かりです。

2008.2.18 01:19 追記。
orz……上記の削除部分の件についてですが、自動売買プログラムのログを調べていたところ、実はアップデート前の2月12日には既に直っていたらしいということがわかりました(ここ数日、自動売買プログラムでHTTPに関わる変更をしていなかったので全く気付きませんでした)。で、思い当たることがあるとすればインターフェイス メトリックとデフォルトゲートウェイの設定を変更したことぐらい。これを弄った2台のPCで両方とも改善できているということは、これ以外に原因は考えられないのですが、詳細は不明です(連休中は自動売買とはあまり関係ないことを色々やっていたのですが、この作業以外頭に残っていないorz)。作業内容から考えて本ボシっぽいのですが、自信ないです(NICが1枚しか刺さっていないほうのノートPCでも早くなっているのがよくわからない。ルータとの相性もある?)。
いずれにせよ、いい加減なことを書いてごめんなさいorz。

前のエントリー | 次のエントリー

ALL Comment

私の環境では
webreq.Proxy = null;
で直りました。

app.configに以下を加えても同じです。
<system.net>
<defaultProxy
enabled="false"
useDefaultCredentials="false" >
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
</system.net>

URL | 2010/08/26(木) 16:51:17 | parasporospa #/l46PSeI | [ 編集]

報告ありがとうございます。
どうやらそれで解決できるようですね。

プロキシ設定によりWebページへのアクセスを高速化するには?@IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/673defaultproxy/defaultproxy.html

URL | 2010/08/27(金) 01:23:35 | 鴉揚羽 #HuejRtwY | [ 編集]

Comennt Entry

プロバイダによってはコメントやトラックバックが拒否される場合があります。

TeackBack URI

http://kakikukekou.blog83.fc2.com/tb.php/497-59e962fc

この記事にトラックバックする(FC2ブログユーザー)

TrackBackの一覧