以编程方式发出HTTP POST请求时,哪些超时值是明智的?
在我的情况下,我想在PHP中发出POST请求时设置'合理'的超时值,但这适用于任何语言.
我需要能够发出一组请求,每个请求都是用户指定的URL.如果我确实需要连续处理请求而不是同时处理请求,我想指定一个合理的时间,超过该时间,请求被认为已经超时.
PHP的默认套接字超时为60秒.在决定请求无法完成之前,这似乎是一个不必要的等待时间.
由于这些是POST请求,因此它们应该快速完成 - 没有像GET请求那样检索和返回数据.
在大多数情况下,我们应该能够假设在X秒内未能对请求发出响应意味着主机不太可能在合理的时间内为X值显着小于60 发出响应.
当然主机很少需要超过60秒才能响应简单的POST请求.他们甚至很少超过10秒?5秒?
在实践中X可能是什么明智的价值?伴随建议的理由将是非常有益的.
我正在异步操作(一系列网络IO)上实现超时,我不确定哪个'更好'(从分配/性能)角度来看:创建EventWaitHandle并使用RegisterWaitForSingleObject,或者只是创建一个Timer并使用其Tick.
在我的特定情况下,EventWaitHandle是惰性创建的,但显然它必须被实例化以使用WaitForSingleObject.所以这真是一个关于WaitHandle + WaitForSingleObject与Timer的资源成本的问题.这两种方法都很容易实现.
我已经在不同的时间实现了这两个,所以我了解地形,我只是不确定哪种方法"更好".
我们的网站在一天中的90%都能正常工作,然后在我们的高峰时段,当流量大约是正常情况的两倍时,一切都会慢慢爬行.页面加载时间通常为1秒,需要30秒.检查我们的错误日志,看起来它可能是连接池问题.我们有3个Web服务器连接到1个sql server db.SQL服务器在所有核心上的利用率都低于25%.
我查看SQL服务器上的用户连接计数器,看看在我们的峰值期间,我们有400多个用户连接,但非工作时间大约为120+.
我很确定我们只是使用MS附带的任何默认设置来处理我们的应用程序池.我可以做些什么来测试是否存在应用程序池问题?将应用程序池大小增加到1000会有什么负面影响(我该怎么做?).
谢谢!
如何为webBrowser导航(url)事件设置超时
c #netframework 4.0
我如何使用POST上传一个大字符串(在我的情况下使用BLOB的XML)而不使用GetResponse获取Timeout?
更改超时有帮助,但这不是一个真正的解决方案.如果服务器确实死亡或POST中断,我必须等待极端大超时.
任何的想法?
HttpWebRequest webRequest = null;
string response = "";
byte[] bytes = Encoding.UTF8.GetBytes(xml);
try
{
webRequest = (HttpWebRequest)WebRequest.Create("http://" + this.host + ":" + this.port);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
webRequest.Timeout = 5000;
webRequest.ContentLength = bytes.Length;
using (Stream requeststream = webRequest.GetRequestStream())
{
requeststream.Write(bytes, 0, bytes.Length);
requeststream.Close();
}
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
{
response = sr.ReadToEnd().Trim();
sr.Close();
}
webResponse.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
return response;
Run Code Online (Sandbox Code Playgroud) NSData datawithcontentsofurl是否有超时期限?
我正在使用RestEasy Client调用Web服务.一个要求是,如果呼叫运行超过5秒,则中止/超时.我如何使用RestEasy Client实现这一目标?我只看到服务器端超时,即如果在一定时间内未满足,则Rest Easy websevice将超时请求.
我使用AFNetworking从我的Web服务中检索数据,每件事情都完美无缺,但我想检测超时错误.我在请求的故障块中使用了这段代码但是我没有工作
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if ([operation.response statusCode] == 408) {
//time out error here
}
}];
Run Code Online (Sandbox Code Playgroud)
代码408通常用于超时错误
我有功能f; 我想在启动f之后抛出异常1.我无法修改f().它可以在c ++中完成吗?
try {
f();
}
catch (TimeoutException& e) {
//timeout
}
Run Code Online (Sandbox Code Playgroud) System.Timeout中的超时功能有时无法停止无限计算。
例如,
timeout 1000 $ print $ length [0..]
Run Code Online (Sandbox Code Playgroud)
Nothing由于超时中断了无限计算,因此按预期返回。但
timeout 1000 $ print $ length $ cycle [1,2,3]
Run Code Online (Sandbox Code Playgroud)
永远循环。
在Mac上,使用ghc或ghci 8.6.4。
我希望第二个示例的行为与第一个示例相同,在1毫秒后中断无限计算并返回Nothing。而是,第二个示例挂起。