我的Windows服务接收来自不同GPS设备(目前有30台设备)的数据。一旦服务从其中一个设备接收数据,它就会创建一个新线程并开始对数据执行检查,最后将接收到的数据存储在数据库中。现在我有不同的方法来对数据进行不同的检查,并将相同的上下文对象传递给它们。例如,每个新线程调用以下方法。
ParentMethod(string receivedData) // Called when I have data from device
{
// Do something with received data
using(MyContext db= new MyContext())
{
CheckSpeed(db); // Checks For speed violation
CheckGeoFence(db); // Checks for Geo Fence entries
CheckForCommandsToBeSent(db); // Checks for any commands to be sent to device.
}
}
间歇性地,我在服务日志中看到超时问题。我跟随查询,如果有人可以提供帮助,我将非常高兴:
我在VPS上拥有4Gb的RAM,其中托管了DB(MSSQL Enterprise 2014)和服务。这足以处理每分钟约500条记录吗?目前,服务每分钟收到60条记录。
当我在SSMS中访问活动监视器时,我看到以下内容:我看到高锁等待时间,是吗?
在我的场景中,使用直接存储过程然后ef linq调用会更好吗?
感谢您一目了然。