Windows服务DbContext传递 - 性能问题

时间:2015-01-07 08:28:49

标签: c# sql-server entity-framework

我的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.
    }
}

间歇性地,我在服务日志中看到超时问题。我跟随查询,如果有人可以提供帮助,我将非常高兴:

  1. 我是否通过不同方法传递上下文做得对?或者我应该在每种方法中创建新的。
  2. 我在VPS上拥有4Gb的RAM,其中托管了DB(MSSQL Enterprise 2014)和服务。这足以处理每分钟约500条记录吗?目前,服务每分钟收到60条记录。

  3. 当我在SSMS中访问活动监视器时,我看到以下内容:enter image description here我看到高锁等待时间,是吗?

  4. 在我的场景中,使用直接存储过程然后ef linq调用会更好吗?

  5. 感谢您一目了然。

0 个答案:

没有答案