【问题标题】:Setting a deadlock victim设置死锁牺牲品
【发布时间】:2011-12-01 19:01:13
【问题描述】:

我们使用的是 siteCore 6.5,每次我们开始发布项目时,正在浏览网站的用户都会收到服务器 500 错误,最终会出现

事务(进程 ID ##)在锁定资源上死锁 另一个进程并被选为死锁受害者。重新运行 交易。

我们如何设置 SQL Server 以优先处理特定应用程序?我们无法修改任何查询或代码,因此必须通过 SQL Server(或连接字符串)来完成

我见过"deadlock victim" in transaction, how to change the priority?http://msdn.microsoft.com/en-us/library/ms186736(v=SQL.105).aspx,但这些似乎是每个会话,而不是全局。

我不在乎它是对 SiteCore 的修复/更改还是 SQL 解决方案。

【问题讨论】:

    标签: sql sql-server-2008 sitecore sitecore6


    【解决方案1】:

    我认为您不能全局设置死锁优先级 - 这是一个仅限会话的设置。我不知道任何连接字符串设置。可以找到可能的 SqlConnection 字符串设置列表here

    【讨论】:

    • 这也是我发现的。
    【解决方案2】:

    在我看来,您实际上遇到了缓存问题,并且每次发布时,它都会清除缓存,因此您在同时进行所有这些调用时遇到死锁。我还没有看到 6.5 发生这种事情,所以你可能还想检查你的缓存。查看您的 Sitecore 日志并查看在创建缓存时是否发生这种情况会很有帮助。无论哪种方式,请查看 SDN 上的缓存指南,看看是否有帮助。

    【讨论】:

    • 已经确定在进程完成之前不会清除缓存。这是用 sitecore publish 测试的。我们编写了自己的发布框架,它保证在所有项目发布之前不会触发任何事件。但是我们的系统仍然使用 SiteCore 发布管理器来进行实际发布,所以我们仍然依赖于 sitecore 的查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多