运维实战之web网站打开反应慢无法显示实时数据的排查与解决(seq_server数据库之内存踩坑记,亲测)

web网站打开反应慢无法显示实时数据的排查与解决

这个问题已经有几年了,这个web也是在17年搭建的,运行了有3年了,平台主要是对废水排放进行监测的。客户那边老是反应说平台反应慢,平台可以正常的打开,但是里面的实时数据有时候要等半个小时才能反应过来。
小编也是新换的岗位,上班才几个月就遇见了这个好几年存在的问题了,但是小编相信技能将会战胜一切,最后成功的将他拿下,解决了问题

  • 问题发生的场景

  • 多平台共用一个数据库

  • 平台运行时间较长

  • 后端数据库操作卡顿

  • 问题发生比较随机,随心所欲

  • 问题的原因

  • 数据库连接问题

  • 数据库里面的数据过于庞大

  • 数据库运行时间超过3个月(针对sql_server数据库)

废话少说,不服就干

先看问题现象

第一、打开web界面,展示实时数据较慢或者不展示

在这里插入图片描述

第二,重启一下平台接收端就恢复一会,过一会问题还会复现

接收端:就是接收上传过来的数据,并负责写进数据库里面
在这里插入图片描述

第四,查看状态为500的,到底是卡在了什么地方

在这里插入图片描述

好吧,小编承认,这个没怎么看懂,但是里面有个send的字符,这个凭多年的经验,40%是和数据库要挂边了

找实时数据反应慢的原因

查看平台到后端取提取数据所花费的时间

在这里插入图片描述

可以很清楚的看见是30秒请求没成功,就进行下一次请求,一般平台都有这个api机制的,超过30秒没请求下来就重新发送请求
现在已经是60%与数据库有关系了

长时间观察这个请求的情况

在这里插入图片描述

发现规律了吧,就是平均每4到5分钟才能请求到一次数据,这个也就是客户所说的,半个小时才能显示实时数据,现在已经是70%与数据库相关了

查看数据库,状况

在这里插入图片描述

通过上面可以看到,数据库服务器的内存使用率已经达到了81%l了,而且数据库服务器操作还非常的卡,基本上80%可以断定与数据库有关系了

注意:到这里了,大家可能以为,既然服务器内存都已经达到了81%了,那就查看占用内存大的进程,并想法解决内存问题,恢复服务器稳定运行呢
如果大家这样想的话,那就与小编当时的想法是一样的,第一,让服务器内存降下来,确保服务器操作起来不卡顿,第二,测试数据库,然后在对数据库进行一系列的优化。
但是,我想告诉大家的是,如果这样想的话,那就错了,而且会越来越糟

继续,查找占用内存较大的服务

在这里插入图片描述

一看就是sql server占用的内存最大了,好了,知道了占用内存最大的是sql_server,达到了13G,总共内存才16G,于是对sql_server最大使用内存做了限制。限制为5G.(之前限制为10G,方法请百度,特别简单),但是小编要告诉大家的是,这样是解决不了问题的

查看问题是否解决

答案是没有,问题依旧,而且更严重了。全是请求500,2个小时过去了都是500,有这个数据库还不如没有这个数据库。当时就有人支招了,到数据库吧,换个数据库,可能服务器有问题了,但是老铁,服务器卡成这样怎么到数据库呀,动都没法动,而且,还不一定能解决问题

引发的其他问题
  • 接收端服务无故报错,连接不上数据库
  • 共用数据库的另一个平台的web无故也不显示数据了
  • 接收端日志里面出现大量的未入库数据
  • navicat远程连接数据库已经连接不上
恢复sql_server当初的内存限制及原因分析

恢复了之前的sql_server10G的内存限制,数据库可以正常连接了,未入库数据也在逐渐的减少,其他平台都也恢复了

看来不是说sql_server占用的内存大了,才导致的问题的发生,而是给sql_server的内存太少了,导致sql_server“忙不过来”

问题解决,web界面打开贼流,实时数据显示可以说是毫秒级

第一、加大sql_server内存限制,提高到了12G,服务器总共才16G
第二、增加了4G的虚拟内存,数据库服务器操作也流畅了起来
第三、由于网站查询操作较多,写入的操作较少,给查询最小内存增加到了2G
第四、提交工单,购买内存条

结语

简单的介绍一下sql_server这个数据库,这个数据库是一直在不断的吃内存的,而且是只吃不吐的那种,时间越长吃的越多,最后lock所有内存,所以有了内存限制这一说,当时自己的想法就是把服务器的内存降下来,服务器流畅了,那数据库也应该就好了,但是这样的想法是错的,为什么呢,sql_server在没有足够的内存工作的时候,他就会放弃工作,没错,你没有听错,如果你不行的话,你可以把内存限制小一点,你会发现sql_server这个服务都不起来,这个也就是自己每想到的地方,还有就是sql_server限制的内存不是sql_server占用的总内存,sql_server在服务器里面占用的内存要比你设置的内存现在要高一点,但不会高太多。
有什么不懂得,我们一起交流把

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘帅0952

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值