From 4a56038d11a82cb9b6a0e11cfe935e6c52948bd2 Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 2 Feb 2011 03:28:47 +0100 Subject: Change the timeout on WebUtil to 20s to help make more tps succeed --- OpenSim/Framework/WebUtil.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index d731ac5..0593341 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -138,17 +138,17 @@ namespace OpenSim.Framework /// public static OSDMap PutToService(string url, OSDMap data) { - return ServiceOSDRequest(url,data,"PUT",10000); + return ServiceOSDRequest(url,data,"PUT",20000); } public static OSDMap PostToService(string url, OSDMap data) { - return ServiceOSDRequest(url,data,"POST",10000); + return ServiceOSDRequest(url,data,"POST",20000); } public static OSDMap GetFromService(string url) { - return ServiceOSDRequest(url,null,"GET",10000); + return ServiceOSDRequest(url,null,"GET",20000); } public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout) @@ -275,7 +275,7 @@ namespace OpenSim.Framework /// public static OSDMap PostToService(string url, NameValueCollection data) { - return ServiceFormRequest(url,data,10000); + return ServiceFormRequest(url,data,20000); } public static OSDMap ServiceFormRequest(string url, NameValueCollection data, int timeout) -- cgit v1.1 From 83c78029e39848113939d5c2c386db42876136d7 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 31 Mar 2011 15:48:42 +0200 Subject: Make the login service's call to the sim time out quicker so we have a chance to try fallback before the client quits --- OpenSim/Framework/WebUtil.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 4f5add9..f59c8f8 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -139,17 +139,22 @@ namespace OpenSim.Framework /// public static OSDMap PutToService(string url, OSDMap data) { - return ServiceOSDRequest(url,data,"PUT",20000); + return ServiceOSDRequest(url,data,"PUT", 20000); } public static OSDMap PostToService(string url, OSDMap data) { - return ServiceOSDRequest(url,data,"POST",20000); + return PostToService(url, data, 20000); + } + + public static OSDMap PostToService(string url, OSDMap data, int timeout) + { + return ServiceOSDRequest(url,data,"POST", timeout); } public static OSDMap GetFromService(string url) { - return ServiceOSDRequest(url,null,"GET",20000); + return ServiceOSDRequest(url,null,"GET", 20000); } public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout) @@ -276,7 +281,7 @@ namespace OpenSim.Framework /// public static OSDMap PostToService(string url, NameValueCollection data) { - return ServiceFormRequest(url,data,20000); + return ServiceFormRequest(url,data, 20000); } public static OSDMap ServiceFormRequest(string url, NameValueCollection data, int timeout) -- cgit v1.1 From 763666e2d6e82dac4ae1514df8dcbe376c6f4cac Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 8 May 2011 19:50:35 +0200 Subject: Enable compressed (gzip) fatpack transfers. --- OpenSim/Framework/WebUtil.cs | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index e77b88b..4d486e6 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.IO; +using System.IO.Compression; using System.Net; using System.Net.Security; using System.Reflection; @@ -142,20 +143,25 @@ namespace OpenSim.Framework /// public static OSDMap PutToService(string url, OSDMap data, int timeout) { - return ServiceOSDRequest(url,data, "PUT", timeout); + return ServiceOSDRequest(url,data, "PUT", timeout, false); } public static OSDMap PostToService(string url, OSDMap data, int timeout) { - return ServiceOSDRequest(url, data, "POST", timeout); + return ServiceOSDRequest(url, data, "POST", timeout, false); + } + + public static OSDMap PostToServiceCompressed(string url, OSDMap data, int timeout) + { + return ServiceOSDRequest(url, data, "POST", timeout, true); } public static OSDMap GetFromService(string url, int timeout) { - return ServiceOSDRequest(url, null, "GET", timeout); + return ServiceOSDRequest(url, null, "GET", timeout, false); } - public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout) + public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout, bool compressed) { int reqnum = m_requestNumber++; // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); @@ -180,10 +186,31 @@ namespace OpenSim.Framework string strBuffer = OSDParser.SerializeJsonString(data); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer); - request.ContentType = "application/json"; - request.ContentLength = buffer.Length; //Count bytes to send - using (Stream requestStream = request.GetRequestStream()) - requestStream.Write(buffer, 0, buffer.Length); //Send it + if (compressed) + { + request.ContentType = "application/x-gzip"; + using (MemoryStream ms = new MemoryStream()) + { + using (GZipStream comp = new GZipStream(ms, CompressionMode.Compress)) + { + comp.Write(buffer, 0, buffer.Length); + comp.Flush(); + + ms.Seek(0, SeekOrigin.Begin); + + request.ContentLength = ms.Length; //Count bytes to send + using (Stream requestStream = request.GetRequestStream()) + requestStream.Write(ms.ToArray(), 0, (int)ms.Length); + } + } + } + else + { + request.ContentType = "application/json"; + request.ContentLength = buffer.Length; //Count bytes to send + using (Stream requestStream = request.GetRequestStream()) + requestStream.Write(buffer, 0, buffer.Length); //Send it + } } // capture how much time was spent writing, this may seem silly -- cgit v1.1 From ade09d0fa1e4c1331bedcf2a5f99402436d8f187 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 8 May 2011 23:23:33 +0200 Subject: Also compress the actual fatpacks --- OpenSim/Framework/WebUtil.cs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 4d486e6..41d7f03 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -141,6 +141,11 @@ namespace OpenSim.Framework /// PUT JSON-encoded data to a web service that returns LLSD or /// JSON data /// + public static OSDMap PutToServiceCompressed(string url, OSDMap data, int timeout) + { + return ServiceOSDRequest(url,data, "PUT", timeout, true); + } + public static OSDMap PutToService(string url, OSDMap data, int timeout) { return ServiceOSDRequest(url,data, "PUT", timeout, false); -- cgit v1.1 From 9c9b3e3976cbbac9330292bb3abd5935093a4849 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 10 Jul 2011 17:27:20 +0200 Subject: Dammit, loggin the type of an exception without providing the FULL DUMP is NOT going to help squash bugs! --- OpenSim/Framework/WebUtil.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index f176485..90ab982 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -245,6 +245,7 @@ namespace OpenSim.Framework catch (Exception ex) { errorMessage = ex.Message; + m_log.Debug("[WEB UTIL]: Exception making request: " + ex.ToString()); } finally { -- cgit v1.1 From 9f93bef1110e4f0152713e0ff0472bc55890d962 Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 14 Sep 2012 00:15:10 +0200 Subject: Allow setting connection limits, part 2 --- OpenSim/Framework/WebUtil.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 6a40cd5..8094b6d 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -695,6 +695,13 @@ namespace OpenSim.Framework public static void MakeRequest(string verb, string requestUrl, TRequest obj, Action action) { + MakeRequest(verb, requestUrl, obj, action, 0); + } + + public static void MakeRequest(string verb, + string requestUrl, TRequest obj, Action action, + int maxConnections) + { int reqnum = WebUtil.RequestNumber++; // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); @@ -706,6 +713,10 @@ namespace OpenSim.Framework Type type = typeof(TRequest); WebRequest request = WebRequest.Create(requestUrl); + HttpWebRequest ht = (HttpWebRequest)request; + if (maxConnections > 0 && ht.ServicePoint.ConnectionLimit < maxConnections) + ht.ServicePoint.ConnectionLimit = maxConnections; + WebResponse response = null; TResponse deserial = default(TResponse); XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); @@ -1003,6 +1014,11 @@ namespace OpenSim.Framework public static TResponse MakeRequest(string verb, string requestUrl, TRequest obj, int pTimeout) { + return MakeRequest(verb, requestUrl, obj, pTimeout, 0); + } + + public static TResponse MakeRequest(string verb, string requestUrl, TRequest obj, int pTimeout, int maxConnections) + { int reqnum = WebUtil.RequestNumber++; // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); @@ -1013,6 +1029,10 @@ namespace OpenSim.Framework TResponse deserial = default(TResponse); WebRequest request = WebRequest.Create(requestUrl); + HttpWebRequest ht = (HttpWebRequest)request; + if (maxConnections > 0 && ht.ServicePoint.ConnectionLimit < maxConnections) + ht.ServicePoint.ConnectionLimit = maxConnections; + request.Method = verb; if (pTimeout != 0) request.Timeout = pTimeout * 1000; -- cgit v1.1 From db00402fa86db6c3d945a48df13e266506e61486 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 5 Oct 2012 00:14:49 +0100 Subject: make sure a buffer is closed, and changed a misleading log msg --- OpenSim/Framework/WebUtil.cs | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 8094b6d..30a8c28 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -706,9 +706,10 @@ namespace OpenSim.Framework // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); int tickstart = Util.EnvironmentTickCount(); - int tickdata = 0; +// int tickdata = 0; + int tickdiff = 0; - // m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); +// m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); Type type = typeof(TRequest); @@ -751,8 +752,8 @@ namespace OpenSim.Framework requestStream.Close(); // capture how much time was spent writing - tickdata = Util.EnvironmentTickCountSubtract(tickstart); - + // useless in this async +// tickdata = Util.EnvironmentTickCountSubtract(tickstart); request.BeginGetResponse(delegate(IAsyncResult ar) { response = request.EndGetResponse(ar); @@ -769,7 +770,8 @@ namespace OpenSim.Framework finally { // Let's not close this - //buffer.Close(); + // yes do close it + buffer.Close(); respStream.Close(); response.Close(); } @@ -837,7 +839,6 @@ namespace OpenSim.Framework } // m_log.DebugFormat("[ASYNC REQUEST]: Received {0}", deserial.ToString()); - try { action(deserial); @@ -852,9 +853,10 @@ namespace OpenSim.Framework }, null); } - int tickdiff = Util.EnvironmentTickCountSubtract(tickstart); + tickdiff = Util.EnvironmentTickCountSubtract(tickstart); if (tickdiff > WebUtil.LongCallTime) { +/* string originalRequest = null; if (buffer != null) @@ -873,6 +875,13 @@ namespace OpenSim.Framework tickdiff, tickdata, originalRequest); +*/ + m_log.InfoFormat( + "[ASYNC REQUEST]: Slow WebRequest SETUP <{0}> {1} {2} took {3}ms", + reqnum, + verb, + requestUrl, + tickdiff); } } } @@ -903,6 +912,8 @@ namespace OpenSim.Framework request.Method = verb; string respstring = String.Empty; + int tickset = Util.EnvironmentTickCountSubtract(tickstart); + using (MemoryStream buffer = new MemoryStream()) { if ((verb == "POST") || (verb == "PUT")) @@ -979,11 +990,12 @@ namespace OpenSim.Framework int tickdiff = Util.EnvironmentTickCountSubtract(tickstart); if (tickdiff > WebUtil.LongCallTime) m_log.InfoFormat( - "[FORMS]: Slow request to <{0}> {1} {2} took {3}ms, {4}ms writing, {5}", + "[FORMS]: Slow request to <{0}> {1} {2} took {3}ms {4}ms writing {5}", reqnum, verb, requestUrl, tickdiff, + tickset, tickdata, obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); -- cgit v1.1 From ff518e7cbbb9f810db4bb9374b98390bd5fb3f11 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 17 Aug 2014 02:12:45 +0100 Subject: make webutilmore verbose on PUT for avatar updates. Reduce LargeTime debug level to 500ms from 3000ms --- OpenSim/Framework/WebUtil.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 33ef8e0..86e5293 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -81,7 +81,7 @@ namespace OpenSim.Framework /// Number of milliseconds a call can take before it is considered /// a "long" call for warning & debugging purposes /// - public const int LongCallTime = 3000; + public const int LongCallTime = 500; /// /// The maximum length of any data logged because of a long request time. @@ -208,6 +208,9 @@ namespace OpenSim.Framework string errorMessage = "unknown error"; int tickstart = Util.EnvironmentTickCount(); int tickdata = 0; + int tickcompressdata = 0; + int tickJsondata = 0; + int compsize = 0; string strBuffer = null; try @@ -225,6 +228,8 @@ namespace OpenSim.Framework { strBuffer = OSDParser.SerializeJsonString(data); + tickJsondata = Util.EnvironmentTickCountSubtract(tickstart); + if (DebugLevel >= 5) LogOutgoingDetail(strBuffer); @@ -243,13 +248,19 @@ namespace OpenSim.Framework // gets written on the strteam upon Dispose() } byte[] buf = ms.ToArray(); + + tickcompressdata = Util.EnvironmentTickCountSubtract(tickstart); + request.ContentLength = buf.Length; //Count bytes to send + compsize = buf.Length; using (Stream requestStream = request.GetRequestStream()) requestStream.Write(buf, 0, (int)buf.Length); } } else { + tickcompressdata = tickJsondata; + compsize = buffer.Length; request.ContentType = "application/json"; request.ContentLength = buffer.Length; //Count bytes to send using (Stream requestStream = request.GetRequestStream()) @@ -291,12 +302,16 @@ namespace OpenSim.Framework int tickdiff = Util.EnvironmentTickCountSubtract(tickstart); if (tickdiff > LongCallTime) m_log.InfoFormat( - "[WEB UTIL]: Slow ServiceOSD request {0} {1} {2} took {3}ms, {4}ms writing, {5}", + "[WEB UTIL]: Slow ServiceOSD request {0} {1} {2} took {3}ms, {4}ms writing({5} at Json; {6} at comp), {7} bytes ({8} uncomp): {9}", reqnum, method, url, tickdiff, tickdata, + tickJsondata, + tickcompressdata, + compsize, + strBuffer != null ? strBuffer.Length : 0, strBuffer != null ? (strBuffer.Length > MaxRequestDiagLength ? strBuffer.Remove(MaxRequestDiagLength) : strBuffer) : ""); -- cgit v1.1 From c643ff4cbadbe632654ff97d4d71f6abaa5b8605 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 15 Oct 2014 14:14:25 +0100 Subject: fix some errors when using http debug level > 4 --- OpenSim/Framework/WebUtil.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 86e5293..b5152e0 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -189,7 +189,10 @@ namespace OpenSim.Framework { if (DebugLevel == 5) { - output = output.Substring(0, 80); + int len = output.Length; + if(len > 80) + len = 80; + output = output.Substring(0, len); output = output + "..."; } @@ -1035,13 +1038,13 @@ namespace OpenSim.Framework { writer.Write(obj); writer.Flush(); + if (WebUtil.DebugLevel >= 5) + WebUtil.LogOutgoingDetail(buffer); } length = (int)obj.Length; request.ContentLength = length; - if (WebUtil.DebugLevel >= 5) - WebUtil.LogOutgoingDetail(buffer); Stream requestStream = null; try @@ -1188,14 +1191,13 @@ namespace OpenSim.Framework XmlSerializer serializer = new XmlSerializer(type); serializer.Serialize(writer, obj); writer.Flush(); + if (WebUtil.DebugLevel >= 5) + WebUtil.LogOutgoingDetail(buffer); } int length = (int)buffer.Length; request.ContentLength = length; - if (WebUtil.DebugLevel >= 5) - WebUtil.LogOutgoingDetail(buffer); - Stream requestStream = null; try { -- cgit v1.1 From f2ea426453e4672aeec3a26c607ca820833e96a3 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 1 Nov 2014 15:52:05 +0000 Subject: debug msg --- OpenSim/Framework/WebUtil.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index b5152e0..82e777b 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -281,7 +281,7 @@ namespace OpenSim.Framework { string responseStr = null; responseStr = responseStream.GetStreamString(); - // m_log.DebugFormat("[WEB UTIL]: <{0}> response is <{1}>",reqnum,responseStr); + m_log.DebugFormat("[WEB UTIL]: <{0}> response is <{1}>",reqnum,responseStr); return CanonicalizeResults(responseStr); } } -- cgit v1.1 From 377a8072dcc39728f171d3e15100ba269857aa7f Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 1 Nov 2014 16:04:22 +0000 Subject: remove last debug msg --- OpenSim/Framework/WebUtil.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Framework/WebUtil.cs') diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 82e777b..3625a1f 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -281,7 +281,7 @@ namespace OpenSim.Framework { string responseStr = null; responseStr = responseStream.GetStreamString(); - m_log.DebugFormat("[WEB UTIL]: <{0}> response is <{1}>",reqnum,responseStr); + //m_log.DebugFormat("[WEB UTIL]: <{0}> response is <{1}>",reqnum,responseStr); return CanonicalizeResults(responseStr); } } -- cgit v1.1