我有一个方法可以检查数据库中是否存在某个记录(具有某个id)。如果有,它就会更新,如果没有,就会被创建。此方法是从ASP.NET Web API调用的,因此可以有许多并发调用。
现在,我在方法的开头使用了一个经典的.NET锁。它可以工作,但性能真的很差(正如预期的那样,锁定整个方法)。大多数请求都不冲突,使用不同的记录。
有没有更好的方法来更好地利用我使用的Linq to SQL?
我使用以下代码自动安装Windows XP下的Microsoft消息队列服务:
;@echo off
;sysocmgr.exe /i:sysoc.inf /u:MSMQsetup.bat
;GOTO Finished
[Components]
msmq_Core = ON
msmq_LocalStorage = ON
msmq_ADIntegrated = ON
msmq_TriggersService = ON
msmq_HTTPSupport = OFF
msmq_RoutingSupport = OFF
msmq_MQDSService = OFF
;:Finished
我使用的是一个ASP.NET web项目,该项目提供带有按钮的视图,该按钮通过MSMQ向Rebus发送消息。消息处理程序是长时间运行的操作(15-30分钟),我希望rebus命令处理程序在处理消息时向web发送更新。
public void Handle(ImportProducts message)
{
_bus.Send(new CommandStatusReply("Starting up import products job..."));
// One operation that takes about a minute
_bus.Send(
这就是问题所在:有一个典型的asp应用程序,它每天调用lame.exe来编码mp3s,并且无法控制从多个用户调用lame.exe的方式,换句话说,没有用于此目的的队列。所以我是这么想的:
//below code all are pseudo-code
//process_flag and mp3 and processId all are reside in a database
function addQ(string mp3)
add a record to database
and set process_flag to undone
then goto checkQ
end fu
我在它们上配置了两个SQL服务器(12.0.4100.1)和可用性组(AG)。有时有些服务器挂起。它在ping上进行响应,但是RDP连接不可用,Server没有响应等等。重新开始后一切都好。我正在试图找出服务器挂起的原因。我在两个节点上都获得了集群日志,并提供了以下信息:
Node1 (小学):
000016e0.00001808::2015/12/12-09:41:13.053 INFO [RES] SQL Server Availability Group: [hadrag] SQL Server component 'query_processing' health s