高并发下常见问题以及解决方案

本文详细分析了高并发环境下遇到的问题,包括MySQL锁等待、服务器带宽饱和、数据库CPU过高以及Nginx服务的504/502错误。针对这些问题,提出了相应的解决方案,如设置锁超时、采用读写分离、调整数据库和Nginx配置、使用CDN加速、优化内核参数等措施,以提高系统稳定性和性能。
摘要由CSDN通过智能技术生成

                                                     高并发下常见问题
1、高并发下mysql出现锁等待情况(Waiting for table metadata lock)
使用命令查询:SHOW PROCESSLIST;
常用原因:长事物运行,阻塞DDL,继而阻塞所有同表的后续操作(比如一个事务执行了11s还没执行完成)。
解决方法:1、避免长事务,将长事务分解成多个小事务,可以使用消息队列拆分   
                  2、设置锁超时短些 lock_wait_timeout (默认时间一年,可以设置成30分钟)

2、一台入口nginx阿里云服务器在高并发下带宽占满(200M),导致系统瘫痪
centos8系统下使用如下命令检查网卡流量
(1)、 yum install iftop 和 iftop -i eth0 -P 命令看是否可以查看到网卡带宽的具体占用情况
(2)、sudo yum install nethogs 和 nethogs  命令查看每个进程带宽具体占用情况
(3)、使用阿里云ECS实例详情中可以观察内网和外网流量情况
查询方法:(1)、查询最近一段时间nginx日志中,统计排行最前访问接口调用次数和大小,而且更要查询日志中存在的大的js、css,字体库文件,以及大于1M以上静态文件进行搜索,然后根据访问次数*文件大小判断出使用流量
如果所示:iftop -i eth0 -P

如图所示:nethogs

端口查询如图所示:netstat -antp|grep 48076

操作命令如下:
筛选出该接口明细列表:
cat -n access.log |grep "03/Jul/2020:20:03" |grep "/renren-fast/sys/padLogin" | more
统计出该接口请求次数:
cat -n access.log |grep "03/Jul/2020:20:03" |grep "/renren-fast/sys/padLogin" | wc -l
筛选出的数据保存到test.txt文本中:
cat tomcat.2020-07-07.log |grep "07/Jul/2020:21:36:" |grep "renren-fast/wechat/authorize" > test.txt

解决方法:(1)、将查询出来的静态文件(视频,音频,js,css,图片,其他静态文件等等)上传到阿里云OSS服务器上,将网络压力打到阿里云上。
                  (2)、对静态网站可使用阿里云全站加速(CDN加速)。
 
3、在阿里云购买的mysql单台服务器,CPU是8核,最大连接数:10000,最大IOPS:18000,业务层没有实现读写分离,业务部署在6个ECS实例上,每个实例16核32G内存,没有设置实例的堆内存最小和最大值,tomcat、mysql、redis都是默认配置,然后当1万个用户(学生上课)大量进来后数据库CPU超过80%,当达到100%时,整个系统因为数据库无法执行就彻底崩了,最后重启后还是一样。
原因:(1)、存在一些接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值