订单并发问题分析及解决

订单并发

问题:

当多人同时购买同一件商品时,有可能会产生订单并发问题。 

例如:

id为16的商品库存有10件,两人同时购买这件商品,每人购买5件,产生订单并发问题之后,两个下单都成功,但是商品的库存变为5件。

订单并发解决方案:

1)悲观锁

在事务中查询数据的时候尝试对数据进行加锁(互斥锁), 获取到锁的事务可以对数据进行操作,获取不到锁的事务会阻塞,直到锁被释放。
悲观锁有死锁问题,不推荐使用

2)乐观"锁"

乐观锁本质上不是加锁,查询数据的时候不加锁,对数据进行修改的时候需要进行判断,修改失败需要重新进行尝试。

3)任务队列

将下单的代码封装成celery任务函数,在下单API中只是发出下单的任务消息,同时celery的worker工作进程进行只创建一个。
mysql事务隔离级别:
隔离级别说明
Repeatable read 可重复读在一个事务中执行同一个查询语句时,获取到的查询结果永远和第一次获取到结果一致,即使其他事务已经修改了对应的数据并且也进行了提交,当前事务也获取不到更新之后结果。
Read committed 读取已提交其他事务只有修改了对应的数据并且也进行了提交,当前事务就能获取更新之后的结果。

mysql数据库的事务默认隔离级别是: Repeatable read 可重复读

修改mysql事务隔离级别
# 1. 修改mysql数据库配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# 2. 添加配置项
 27 [mysqld]
 28 #
 29 # * Basic Settings
 30 #
 31 user        = mysql
 32 pid-file    = /var/run/mysqld/mysqld.pid
 33 socket      = /var/run/mysqld/mysqld.sock
 34 port        = 3306
 35 basedir     = /usr
 36 datadir     = /var/lib/mysql
 37 tmpdir      = /tmp
 38 lc-messages-dir = /usr/share/mysql
 39 skip-external-locking
 40 # 将mysql事务的隔离级别设置为读取已提交
 41 transaction-isolation=READ-COMMITTED
 
# 3. 重启mysql服务
sudo service mysql restart

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 针对ECShop系统的登陆功能进行高并发性能测试,可以按照以下步骤进行: 1. 准备测试环境:搭建一台性能测试主机和多台被测服务器,保证测试主机和被测服务器之间的网络连接畅通。 2. 配置测试场景:使用LoadRunner工具创建测试场景,设置虚拟用户数量、登录脚本、登录数据等,并进行参数化处理,确保每个虚拟用户的登录数据都是唯一的。 3. 进行性能测试:在测试环境中运行测试场景,模拟多个用户同时进行登录操作,观察系统的响应时间、吞吐量、并发数等指标,以确定系统的性能瓶颈和极限。 4. 分析测试结果:根据LoadRunner生成的测试报告,分析系统的性能数据和趋势,找出系统的性能瓶颈和优化方案。 5. 优化系统性能:根据测试结果和分析报告,对系统进行优化,如增加服务器数量、优化数据库配置、改进代码性能等,以提升系统的性能和稳定性。 在进行高并发性能测试时,需要注意以下几点: 1. 确保测试场景设置合理,模拟真实用户的操作流程和数据访问方式。 2. 控制虚拟用户数量,避免测试过程中对系统造成过大的负荷。 3. 监控被测服务器的资源使用情况,如CPU、内存、磁盘I/O等,及时发现系统瓶颈。 4. 对测试过程进行记录和分析,及时发现和解决测试中出现的问题。 5. 根据测试结果和分析报告,制定合理的性能优化方案。 ### 回答2: ECShop是一款常用的电子商务系统,为了确保系统在高并发条件下具备良好的性能,可以使用性能测试工具如LoadRunner对其登录功能进行高并发性能测试。 首先,我们需要配置LoadRunner环境,包括安装LoadRunner软件并设置服务器相关参数。 然后,我们需要创建并录制登录功能的脚本。在LoadRunner中,可以使用脚本录制器录制一系列与登录相关的操作,例如输入用户名和密码、点击登录按钮等。录制过程中,系统会自动生成脚本代码。 接下来,我们需要配置并运行虚拟用户(Vuser)脚本。在LoadRunner中,可以设置并发用户数量、用户行为模式和持续时间等参数。我们可以通过增加并发用户数量来模拟高并发场景,以验证系统在压力下的性能表现。 在测试执行过程中,LoadRunner会对系统进行模拟性能压力,并收集相关指标,例如响应时间、吞吐量、错误率等。测试结束后,我们可以通过这些指标来评估系统的性能表现。 最后,我们可以根据测试结果进行性能优化。如果测试显示系统响应时间过长或吞吐量低下,我们可以通过优化系统架构、增加服务器资源或优化数据库查询等方法来提升系统性能。 综上所述,通过使用性能测试工具如LoadRunner对ECShop系统的登录功能进行高并发性能测试,可以帮助我们发现系统存在的性能问题,并提供优化方案,以确保系统在高并发条件下具备出色的性能。 ### 回答3: ECShop系统是一种流行的开源电子商务平台,为了测试其登陆功能在高并发情况下的性能,可以使用性能测试工具LoadRunner。LoadRunner是一款功能强大的性能测试工具,使用它可以模拟大量用户同时对系统进行操作,从而评估系统在高负载情况下的性能指标。 在进行高并发性能测试之前,首先需要对测试场景进行规划。针对登陆功能的测试,可以模拟多个用户同时尝试登陆系统,并在登陆后进行相关操作,例如浏览商品、下订单等。同时,可以设置一定的持续时间或者事务数,以模拟真实的用户行为和负载。 其次,需要配置LoadRunner的虚拟用户脚本。可以通过录制或手动编写脚本,模拟用户的登陆操作,包括输入用户名和密码、点击登陆按钮等步骤。可以设置不同的用户名和密码组合,以模拟多个用户同时登陆系统。 然后,进行性能测试的参数配置。可以设置虚拟用户数量、测试持续时间、负载模型等。对于高并发性能测试来说,虚拟用户数量应该设置为较大数目,以模拟真实环境下的高并发访问。测试持续时间也应该足够长,以确保系统在高负载下的稳定性。 最后,执行性能测试并进行结果分析。通过模拟多个用户同时登陆系统,可以评估系统在高并发情况下的性能表现,包括登陆响应时间、吞吐量等性能指标。可以通过LoadRunner提供的分析工具对测试结果进行统计和图表展示,以便更好地理解系统的性能。 综上所述,通过使用LoadRunner进行高并发性能测试,可以全面评估ECShop系统的登陆功能在高负载下的性能指标,并为系统性能的优化提供有价值的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值