注意-我读过S.O上关于这个的其他话题,但不完全一样.
.net 461函数,c#
我有一个应用服务环境和一个应用服务计划,专用于这个单一的天蓝色功能,使用2x P2工作人员。
该函数本身响应于服务总线主题事件,速率约为每秒1-2次-响应时,我们通过存储过程将数据写入数据中心中的SQL服务器。
在我们的预生产环境中,负载大大减少,我们认为没有问题.在生产负载(如前所述)下,我们始终得到2条SQL错误消息:
发生了1- SqlException超时,这可能是由于连接池断开了连接。
然后,在该消息的第一个实例之后,每个函数运行的一致性都会给出默认值。
2- SqlException -超时发生,可以到达网络实例等。请检查SQL server是否存在。
已经进行了网络工作人员检查,通信量正在访问SQL服务器端口,但实际的SQL服务器连接列表中没有连接。
我们的c#代码,虽然我不能发布实际的代码,但非常简单--通过Dapper进行的一个存储过程调用封装在一个using块中。
using(var sqlConnection = new sqlConnection("connString"))
{
sqlConnection.Open();
// setup input params here
// execute sproc here
sqlConnection.Close(); // I know, shouldn't need this line when using a using block - but thought would check.
}我们不明白的是,在重新启动整个应用程序服务之后的第一次函数调用中,我们会立即得到连接池错误,然后是超时。
我们的SqlConnection字符串不包含对池大小或超时的特定更改(所有的SQL默认值都是如此)--唯一的事情是在非标准端口上运行生产SQL server (但这是可访问的)。
有两件事需要考虑:
1-我们是否应该使用OpenAsync()和ExecuteAynsc() -或者同步版本应该仍然足够,因为我们的负载不是非常高。
2-是否有任何特定于应用程序服务环境的更改与连接字符串池发生什么?
提前感谢
编辑
应要求:
异步任务RunAsync(BrokeredMessage消息,TraceWriter日志) {}
Datacentre Server是2008R2
呼叫在非生产中工作的平均持续时间是250到300 is (我们有特快路线)
有效载荷-非常小的5-8个字符串字段作为参数传递。
发布于 2018-02-05 19:42:56
弄明白了-连接池排水错误信息是一个令人沮丧的红鲱鱼。
标准网络防火墙问题!!
谢谢大家
https://stackoverflow.com/questions/48589426
复制相似问题