计算最大和打开的 EF 连接

Posted

技术标签:

【中文标题】计算最大和打开的 EF 连接【英文标题】:Count maximum and opened EF connections 【发布时间】:2012-10-16 11:51:30 【问题描述】:

我的 ASP.NET MVC 应用程序遇到了性能瓶颈。我想分析 EF 连接并找出允许的最大 EF 连接和当前打开的连接。任何建议如何做到这一点?

我的仓库代码

    using EntityFramework.Patterns;


     public class ServiceRepository : IServiceRepository
        
            private readonly IRepository<User> _userRepository;
            private readonly IUnitOfWork _unitOfWork;


            public ServiceRepository(DbContext dbContext)
            
                var dbContextAdapter = new DbContextAdapter(dbContext);
                _unitOfWork  = new UnitOfWork(dbContextAdapter);            
                _userRepository = new Repository<User>(dbContextAdapter);
            

            public IQueryable<User> GetUsersByProduct(int productId)
            
                return _userRepository.AsQueryable().Where(p => p.Orders.Any(o => o.ProductId == productId));
            
//Skip code

        public void Commit()
        
            _unitOfWork.Commit();
        

    

用 Ninject 注入

private static void RegisterServices(IKernel kernel)

       var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
       kernel.Bind(typeof(DbContext)).ToMethod(context => new DbContext(connectionString)).InRequestScope();           
       kernel.Bind<IServiceRepository>().To<ServiceRepository>().InRequestScope();

【问题讨论】:

您是否正在使用“使用”构造来处理您的 DbContext/ObjectContext 对象?如果不是,您可能正在泄漏连接。另外,你确定这个问题是由悬空连接引起的吗?你是怎么知道的? 我正在使用 Ninject 将 DbContext 注入到具有 InRequestScope() 范围的存储库中。我认为应该处置 DbContext。我不确定我的性能问题是否与连接有关。只是想一点一点地找到它的位置。 你看到了什么?您的性能问题的症状是什么?您是否尝试过分析您的应用? 【参考方案1】:

EF 连接使用底层连接类型,这可能是您的问题 - 您的 EF 上下文使它们保持打开状态。

你是在反对sql server吗? 如果是这样,那么问题可能是您的 sql 连接。使用 ANTS 分析器找出性能问题所在并从那里进行优化。

您可以使用 MiniProfiler 或 glimpse 查看您的实体框架查询和一些执行统计信息。我还将确保您在每个请求之后处理您的上下文,因此每个请求都创建一个新的。

【讨论】:

以上是关于计算最大和打开的 EF 连接的主要内容,如果未能解决你的问题,请参考以下文章

修改电脑最大连接数

iis最大连接数和队列长度

最大并发连接数和最大会话数的区别

如何修改windows server 2003远程桌面最大连接数

mysql查看和修改最大连接数

MongoDB 最大连接数 设置失效的异常分析