我正在使用 Azure Durable Functions .Net Core。
[FunctionName("Calculate")]
public async Task RunOrchestrator(
[OrchestrationTrigger] IDurableOrchestrationContext context, ILogger log)
{
await context.CallActivityAsync<object>(FuncConstants.Cal1, null);
await context.CallActivityAsync<object>(FuncConstants.Cal2, null);
await context.CallActivityAsync<object>(FuncConstants.Cal3, null);
await context.CallActivityAsync<object>(FuncConstants.Cal4, null);
await context.CallActivityAsync<object>(FuncConstants.Cal5, null);
await context.CallActivityAsync<object>(FuncConstants.Cal6, null);
await context.CallActivityAsync<object>(FuncConstants.Cal7, null);
await context.CallActivityAsync<object>(FuncConstants.Cal8, null);
await context.CallActivityAsync<object>(FuncConstants.Cal9, null);
}
[FunctionName("Starter_Calculation")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestMessage req,
[DurableClient] IDurableOrchestrationClient starter,
ILogger log)
{
string instanceId = await starter.StartNewAsync("Calculate", null);
return starter.CreateCheckStatusResponse(req, instanceId);
}
Run Code Online (Sandbox Code Playgroud)
这里,每个函数需要超过 5-6 个小时来执行一些逻辑计算(算术运算),因为它们处理超过 27-3000 万条数据库记录。
我收到第一个函数本身的错误为 "Timeout value …
timeoutexception long-running-processes azure-durable-functions
分析日志文件我注意到在Silverlight客户端,大约1%的服务调用以TimeoutException结束.服务(wcf)非常简单,不执行长计算.根据日志,对服务的所有调用总是在1秒内处理(即使在客户端上发生TimeoutException!),因此它不是服务器超时.
那有什么不对?可以是配置还是网络问题?我怎么能避免呢?哪些其他日志记录信息可以帮助您本地化此问题?
我想到的唯一一种解决方法是在超时后重试服务调用.
我将在这个问题上给予任何帮助!
更新:启动时,应用程序执行17个服务调用,同时执行12个服务调用(可能是失败原因?).
更新: WCF日志未包含有关此问题的有用信息.似乎有些服务调用没有到达服务器端.
我遇到了一个非常奇怪的问题.我正在构建一个分布很广的应用程序,其中每个应用程序实例可以是WCF服务的主机和/或客户端(非常像p2p).一切正常,只要客户端和目标主机(我指的是应用程序,而不是主机,因为目前一切都在一台计算机上运行(所以没有防火墙问题等))不一样.如果它们是相同的,那么应用程序挂起正好1分钟,然后抛出TimeoutException.WCF-Logging没有产生任何帮助.这是一个小应用程序,它演示了这个问题:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
var binding = new NetTcpBinding();
var baseAddress = new Uri(@"net.tcp://localhost:4000/Test");
ServiceHost host = new ServiceHost(typeof(TestService), baseAddress);
host.AddServiceEndpoint(typeof(ITestService), binding, baseAddress);
var debug = host.Description.Behaviors.Find<ServiceDebugBehavior>();
if (debug == null)
host.Description.Behaviors.Add(new ServiceDebugBehavior { IncludeExceptionDetailInFaults = true });
else
debug.IncludeExceptionDetailInFaults = true;
host.Open();
var clientBinding = new NetTcpBinding();
var testProxy = new TestProxy(clientBinding, new EndpointAddress(baseAddress));
testProxy.Test();
}
}
[ServiceContract]
public interface ITestService
{
[OperationContract] …Run Code Online (Sandbox Code Playgroud) 我们在SqlConnection.Open()上获得Timeout过期异常.
以下是代码:
public int ExecuteNonQuery(SqlParameter[] param, string strSPName)
{
using (SqlConnection conn = new SqlConnection(_connStr))
{
int i = 0;
using (SqlCommand cmd = new SqlCommand(strSPName, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(param);
conn.Open();
i = cmd.ExecuteNonQuery();
}
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
语句中的return关键字是否using会打开连接,从而导致此问题?
c# ado.net database-connection sqlconnection timeoutexception
我正在尝试在 Ubuntu 18.04 和 Ubuntu 20.04 上使用 pip 安装一个包(任何包)。但是,我最终得到以下错误消息:
$ pip install --upgrade pip
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443):
Read timed out. (read timeout=15)")': /simple/pip/
...
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,但没有奏效: