优化软件系统,解决死锁问题,提升稳定性与性能 redis排队下单

项目背景:

随着用户数量的不断增加,我们的速卖通小管家软件系统面临了一个日益严重的问题:在从存储区提供程序的数据读取器中进行读取时,频繁出现错误。系统报告了一个内部异常:

异常信息如下:

从存储区提供程序的数据读取器中进行读取时出错。有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException: 事务(进程 ID 80)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

这个软件的用户量这么多,时间刻不容缓,我们迫切需要解决这个问题

 解决方案

为了应对这一问题,我们采取了以下两个关键步骤:

 步骤1:多用户并发排队操作

引入多用户并发排队操作: 利用Redis实现订单排队

为了有效地应对多用户并发下单操作,我们引入了Redis作为我们的解决方案的一部分。Redis是一个高性能的缓存和消息队列系统,它能够有效地处理并发请求,特别适用于排队和处理订单。通过将订单请求排队到Redis队列中,我们能够更好地管理用户的请求,减少了对数据库的过度访问和竞争,从而降低了死锁的风险。这一步骤极大地改善了系统的稳定性和性能。

redis排队后的效果图:

步骤2:监视SQL Server并解决死锁问题

监视SQL Server并解决死锁问题:利用SQL Server Profiler

为了深入解决死锁问题,我们使用了SQL Server Profiler来监视数据库的运行情况。通过监视SQL查询和事务,我们能够更准确地识别引起死锁的具体地方,并采取相应的改进措施。这可能包括优化查询、改善索引设计、调整事务隔离级别等。

测试发现:

最长耗时的sql是:

string sql = string.Format("delete from Product_AreaPrice_Head where Product_Sku_ID = '{0}'", sku.ID);

通过不断地分析和优化数据库操作,我们能够显著减少死锁的发生,提高系统的可用性和性能。

综上所述,通过采取多用户并发排队操作和监视SQL Server以解决死锁问题,我们成功地改善了系统的稳定性和性能。这些关键步骤使我们能够更好地满足用户需求,提供更可靠的服务,确保系统能够顺利运行,减少了不便和中断。我们将继续致力于优化系统,以确保用户体验的不断提升。

另外一个数据并发项目案例(平均一周的访问量有20多万流量)

晨希中医体质辨识软件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于abaqus的非等速生长Voronoi晶体模型生成插件

1. 非等速生长晶体模型简介 对于标准Voronoi而言,每个晶粒的生长速率是相同的,任意两个晶粒的交界线为其形核点连线的垂直平分线,交界线为一条直线,如图1.1所示。 图1.1 标准Voronoi晶粒交界线 而对于非等速生长Voronoi晶体而言…

mysql某批量更新导致死锁

#查询当前数据库全部线程show full processlist #查询当前运行的全部事务select * from information_schema.innodb_trx#查询锁情况select * from information_schema.innodb_locks#查询锁等待情况select * from information_schema.innodb_lock_waits #查看mysql设置等待锁时长…

Mysql高级——数据库设计规范(1)

数据库设计规范 1. 为什么需要数据库设计 数据库设计是为了有效地组织和管理数据。它是一个重要的步骤,用于创建一个结构良好、高效和可靠的数据库系统。以下是一些需要数据库设计的原因: 数据组织:数据库设计帮助我们将数据按照一定的结构…

NVR添加rtsp流模拟GB28181视频通道

一、海康、大华监控摄像头和硬盘录像机接入GB28181平台配置 1、海康设备接入配置 通过web登录NVR管理系统,进入网络,高级配置界面,填入GB28181相关参数。 将对应项按刚才获取的配置信息填入即可,下面的视频通道的编码ID可以保持…

Nginx使用指南

文章目录 前言一、源码编译1.1 编译1.2 第三方模块编译 二、配置文件2.1 配置语法2.2 location语法2.3 配置文件块2.4 全局变量 三、HTTP 服务器3.1 基本3.2 反向代理3.3 压缩3.4 负载均衡3.5 HTTPS 支持3.6 UrlRewrite3.7 防盗链配置3.8 跨域3.9 静态服务3.10 PC/手机端分离3.…

数据结构与算法--排序算法复习

目录 1.三种常见的简单排序: 1.1冒泡排序 1.2 选择排序 1.3 插⼊排序 2 常见高级排序算法 2.1 希尔排序 2.2 快速排序 2.3 归并排序 2.4计数排序 先上结论: 1.三种常见的简单排序: 1.1冒泡排序 1.⾸先在未排序数组的⾸位开始&#…

从统计语言模型到预训练语言模型---预训练语言模型(BERT,GPT,BART系列)

基于 Transformer 架构以及 Attention 机制,一系列预训练语言模型被不断提出。 ​BERT 2018 年 10 月, Google AI 研究院的 Jacob Devlin 等人提出了 BERT (Bidirectional Encoder Representation from Transformers ) 。具体的研究论文发布在 arXiv …

Guava Cache介绍-面试用

一、Guava Cache简介 1、简介 Guava Cache是本地缓存,数据读写都在一个进程内,相对于分布式缓存redis,不需要网络传输的过程,访问速度很快,同时也受到 JVM 内存的制约,无法在数据量较多的场景下使用。 基…

如何用好免费的ChatGPT

如何用好免费的ChatGPT 前言ChatGPT使用入口在线体验地址:点我体验 ChatGPT介绍ChatGPT初级使用技巧初级使用技巧:清晰明了的问题表达 ChatGPT中级使用语法中级使用语法:具体化问题并提供背景信息 ChatGPT高级使用高级使用:追问、…

出现 conda虚拟环境默认放在C盘 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法3.1 方法一3.2 方法二1. 问题所示 通过conda配置虚拟环境的时候,由于安装在D盘下,但是配置的环境默认都给我放C盘 通过如下命令:conda env list,最后查看该环境的确在C盘下 2. 原理分析 究其根本原因,这是因为默认路径没有足够的…

MySQL常见面试题(一)

😀前言 在数据库管理系统中,存储引擎起着核心的角色,它决定了数据管理和存储的方式。MySQL作为一个领先的开源关系型数据库管理系统,提供了多种存储引擎来满足不同的需求和优化不同的应用。除了选择合适的存储引擎,数据…

差值结构的顺序偏好

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A 中有5个点,B中有1个点,且不重合,统计迭代次数并排序。 第一种情况 差值结构 迭代次数 L E - - 2 10491.…