asp.net – Nlog数据库目标 – 是否使用keepConnection?
我在asp.net 2.0应用程序中使用NLog;它可以获得大量流量并记录大量数据(平均每天约5000条日志记录),用于错误记录和统计目的.它使用两个不同的数据库目标,每个目标都调用一个存储过程,并且都使用相同的连接字符串(SQL Server).
从某些文档中复制了目标定义后,两个目标都将keepConnection设置为“true”,我知道这是默认值.我的问题是,这是可取的吗?我经常看到NLog在数据库上打开了很多打开的连接(查看活动监视器中的打开进程),而且我有时在NLog中遇到连接失败;我很想尝试关闭keepConnection,但我也担心大量的开启和关闭操作.我没有查看源代码,我不确定我是否能够回答我自己的问题,所以我不确定连接相对于其父应用程序所在的池的工作原理. 有任何想法,警告或建议吗?我知道我的问题有点模糊 – 它只是帽子我找不到这个属性的简单文档,并希望得到一些反馈的优缺点 – 即,为什么它被放入NLog中第一名? 解决方法
传统上,keepConnection已启用,因为您说的确切原因,快速打开/关闭大量连接会很糟糕.如果禁用,NLog将打开一个连接,写一个单独的日志语句,并关闭每个连接.
如果要关闭连接,可以始终使用包装器通过批量写入日志来提高日志记录性能 检查异步缓冲区:https://github.com/nlog/nlog/wiki/AsyncWrapper-target 默认批量大小为100,这对您来说可能没问题.在这种情况下,可以禁用keepConnection.有了这个,NLog将排队100条日志消息,然后打开一个连接,将它们全部写入,然后关闭连接. 此外,每天5000对于日志记录来说真的很低,达到4对数/分钟,当然不是很重的负载.听起来像别的东西是错的. 首先想到的是您正在使用通常需要事务的SQL Server.默认情况下,它在NLog中被禁用,因此请确保在日志配置中显式启用事务. useTransactions=true https://github.com/nlog/nlog/wiki/Database-target (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 使用参数清理URL以获取MVC索引方法
- asp.net – 如何忽略Model属性的验证?
- 处理ASP.NET MVC中日期的最佳方法 – Javascript应用程序
- asp.net-mvc – Sitecore和ASP.net MVC
- ASP.NET 5自定义错误页面无法在Azure网站上呈现
- asp.net-core – .NET核心托管包
- asp.net – 自动插入HTML属性的双引号
- asp.net – 无法使用PreSendRequestHeaders()覆盖IIS中的ht
- asp.net中的javascript
- asp.net-mvc-3 – 可以用“@:@”修复的MVC4剃刀的可能的突
- .net – IIS 6.0和ASPX中的404自定义错误不起作用
- asp.net-mvc – 如何动态地将值从提交按钮传递给
- asp.net-mvc – 可以为多个部署转换MVC视图,例如
- 如果DataSource不包含任何项目,如何在ASP.NET C#
- ASP.NET C#捕获类中的所有异常
- asp.net-mvc – 如何在MVC 4.0 Razor中进行授权
- asp.net-mvc – 为什么Microsoft堆栈说成本高昂?
- asp.net-mvc-4 – Web API HTTP请求命名约定
- asp.net – 使用ASP:文本框作为
- asp.net-mvc – 传递给Html.ActionLink时在模型上