2016年03月09日

Windows Azure環境でタイムアウト

任意のクライアントからWindows Azure上のAPサーバにあるWebSeriviceに処理をさせるとき、APサーバ側の処理が20分を超えるとタイムアウトが発生することがあります。

より正確に言い換えると、長時間応答がないtcp接続をAzure環境のロードバランサ(もしくは仮想ネットワークアダプタ??)が切断してしまいます。

通常、

 クライアント<--->ロードバランサ<--->APサーバ

こんなかんじで接続されてて、クライアントからAPサーバにリクエストがあると、

クライアント:応答待ち
APサーバ:処理中

となります。
静的ページの表示などですぐにレスポンスが返るならば問題ないのですが、
APサーバ側の処理が長くて20分間応答が無いとロードバランサが双方に通知なく
接続を切断してしまうため、

 クライアント<--->   <--->APサーバ

こんな状態になり、長い処理を終えてAPサーバが結果を返しても

APサーバ:処理結果通知済みクライアントの応答待ち
クライアント:応答待ち

となって双方待ち状態となってしまいます。


対策としては、Azure環境の設定を変更することもできるようですが、
リクエストを送るクライアント側からtcpKeepAliveを設定して接続をキープしておくのが簡単なようです。

public HogeHogeClass()
{
InitializeComponent();
// Azure環境向けに設定
System.Net.ServicePointManager.SetTcpKeepAlive(true, 15000, 3000);
}

こんな感じでクライアント側処理のコンストラクタにtcpキープアライブを設定して、
応答に時間がかかっても接続を保つようにしておけば、APサーバの処理が長くなっても
大丈夫です。

まあ、そもそもAzure環境でそんな長時間かかる処理をやらすってこと自体が
どうかしてるのかもしれないけれど。

TECHNICAL MASTERはじめてのASP.NET Webフォームアプリ開発C#対応版 -
TECHNICAL MASTERはじめてのASP.NET Webフォームアプリ開発C#対応版 -
posted by しげ at 14:49| Comment(0) | TrackBack(0) | Windows | このブログの読者になる | 更新情報をチェックする

2016年03月04日

Windows10とVMwarePlayer

久しぶりのメモ。

ブログを丸2年放置している間に、HPのENVY 4-1020はWindows10になってます。


で、つい昨日Windows10のUpdateを行うとなにやら大掛かりなアップデートってことで
えらい長い時間をかけてアップデートしてくれて、VMが動かなくなりました。

まあ、これはよくあることでVMと共存できないHyper-Vを 以下のコマンドでOFFに
してやればOK(要管理者権限)なのですが・・・。

bcdedit /set hypervisorlaunchtype off


今回は、VMがネットワークに接続できなくなってしまってました。
なんか、「デバイスVMnet0のネットワークブリッジが動作していません」とかいうんですね。

で、ブリッジするネットワークアダプタを表示してみると、本来↓のように表示されるべきはずの
「VMware Bridge Protocol」がいなくなってました。

なぜじゃ。


20160304-001.jpg


原因がわかればあとは、簡単。


VMwarePlayerを修復すればOKです。
修復が上手く行かない場合は、VMwarePlayerを再インストールしましょう。




いろいろ調査してる最中に発見したACアダプタ。
純正は自宅用として持ち運び用に買ってみようかな。

AmazonにはサードパーティのACアダプタがたくさんあるもんですね。



posted by しげ at 12:37| Comment(0) | TrackBack(0) | VMware | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。