2011-12-21 8 views
0

私はfastcgi-mono-server4(ubuntu server 11.04)とnative .net framework(windows server 2008)のasie.netをSiegeでテストしています。Mono:ソケットの選択がタイムアウトしました

私の.aspxページが(私はJSONを取得する)このように要求します:

protected void Page_Load(object sender, EventArgs args) 
{ 
    var url = "http://some_host/location"; 

    var request = WebRequest.Create(url) as HttpWebRequest; 

    using (var response = request.GetResponse() as HttpWebResponse) 
     using (var reader = new StreamReader(response.GetResponseStream())) 
      Content.InnerText = reader.ReadToEnd(); 
    Console.WriteLine ("Mono"); 
} 

私は要求をWindows Server上でページを.aspxのために作るとき、すべてがOKです:

siege -d0.1 -c200 -r10 windowsserver/TestPage.aspx 
Transactions:     2000 hits 
Availability:     100.00 % 
Elapsed time:     1.10 secs 
Response time:     0.07 secs 
Transaction rate:   1815.60 trans/sec 

私は、要求が変なものがあるのUbuntuサーバー上にあるページ.aspxのために作る:

siege -d0.1 -c200 -r10 ubuntuserver/TestPage.aspx 
Transactions:     1472 hits 
Availability:     73.60 % 
Elapsed time:     91.22 secs 
Response time:     1.10 secs 
Transaction rate:    16.14 trans/sec 

をそして私はアルを持っています

[alert] socket: 675498112 select timed out: Operation timed out 

Ubuntuのハードウェアは、Windowsよりも強力です(Windowsは仮想マシン上にあります)。

別のホスト(ページはUbuntuにあります)へのリクエストなしで.aspxページにリクエストすると、すべてOKです。モノはこのような状況では高速です。

だから何が問題だろうか? Ubuntuまたはfastcgi-mono-server4

答えて

0

Windows/IIS/ASP.NETでは、ASP.NET専用のスレッドプールにはスレッドが限られています。他のホストへのリクエストは遅いです。幸いにも、あなたのテストで競合が示されない場合、http://support.microsoft.com/kb/821268

Mono/ASP.NETが同じスレッドプール方法を使用する場合、エラーメッセージが枯渇したスレッドプールまたはユーザーポートによって引き起こされたかどうかを確認する必要があります。私はLinux/Monoに精通していませんが、それはあなたが探索することができる同様の設定を持っている必要があります。

関連する問題