• 流水文之访问速度慢


    流水文之访问速度慢
      作为运维,其实有时候我觉得特别委屈,领导总以为网站、应用访问速度慢就是服务器带宽不够或者资源吃满导致的。这个问题其实有点久远了,有点不吐不快,对事不对人哈,只是想提供给大家多点思考问题的角度~~~不要乱,一步步去排除问题原因!
      问题发生在5月19日,当时领导、开发们在开会,其中演示系统功能的时候,需要频繁去操作数据库,导致那台自建数据库的服务器因资源吃尽直接宕机了。上面刚好有个kafka,被线上业务A使用,如果kafka连不上,是会导致业务A的消息任务一直无法处理,给客户直观的感觉也是:访问速度慢!
      宕机的现象是那台服务器失联一样,虽然云控制台上看到状态“运行中“,但是无论从跟这台服务器同网段的机器ssh过去,还是直接从云控制台远程连接上去,都登不上,只能重启服务器了,还是强制重启的。。。
      重启之后开回数据库服务,还有kafka,话说这个kafka也挺神奇的,我到现在也搞不清原理,需要临时把zookeeper和kafka的端口先对外完全开放(0.0.0.0),然后等服务正常起起来后,再关掉。当时我可是加班处理完kafka的问题(日志显示能连上)才走人的,怎么知道第二天,领导说那个业务A的使用客户还是反映访问速度慢(手机钉钉里操作),叫我查带宽、系统资源(后面也是叫我查了3、4次),我当时是有点怀疑客户缓存问题,不会是kafka原因,因为日志没报错。
      这个问题比较诡异,它不是一直都访问慢,是一天有好几个时间段慢:
    上午11点,下午4-5点,晚上8-9点,反应得比较多

      而且我们公司的人测试很快,复现不了客户的问题。

      再者,是某一个区域的人反映慢,并不是大面积范围的人都反映慢。开发觉得是区域网络问题,我则觉得是程序代码问题(其实两边都有,代码引用被墙的js+区域网络管的严刚好把这地址墙了)。因为产品经理有说过,是最近在几个时间段,用这个业务的人数多了,以前从来没有过(我当时怀疑程序线程数)

      我觉得是程序代码问题,是因为看到有这样的报错日志,关键字:simpleasyncuncaughtexception,以为线程数开的不够来不及处理通知任务(后面说到这个原因也是不对的,虽然是程序,但是不是这个原因)

      然而,我领导始终把问题原因锁在运维这边,不仅@我跟一个测试储备,用一个叫Testin云测的东西【https://www.testin.cn/account/login.htm】,去最大限度模拟客户手机环境(包括硬件)去测试这个业务(跟客户的测试机型保持一致),当时我是这样的:= = ! (估计研发部的人都看到我脸黑了),因为我以为被抓去测业务流程。在公司里,作为运维的我是最不懂业务的,我也是看中基本不用懂业务所以才当的运维,因为不想记太多难记的东西,哈哈~~所以对于这个云测,最后还是给了那个储备去测试,我算是开开,原来进去后,有很多款测试模拟手机,好像商品一样琳琅满目,界面挺好看的~~放个图给大家欣赏下:

      云测也复现不了客户问题,我们测试正常(FQ+不FQ的网络环境都正常)

      过了几天,领导还是说那个区域的客户反馈很慢,叫再查下资源和带宽,无果。。。

      又过了几天,领导外出了,想误导我去分析nginx日志

      这么久了,nginx日志我没少分析过,往这个方向排查,很大可能是无用功!

    加一,xxx前后端nginx日志,你统计下超时访问的情况,还有有没有访问数据过大的情况
    如果有,收集一下访问的地址,都是哪些地址超时访问                             ---- 幸好我拒绝了,做了等于白做

      我说nginx日志分析做不到超时访问情况统计的,顶多能统计每个接口响应时间

    有类似timeout的记录不,nginx的超时时间是多少    --- 我就回了个600秒

      最后发了这个链接我【https://blog.csdn.net/xu710263124/article/details/118180821】

         我说我们日志没有这种报错(nginx的error log里面),那天,终于死心了。。。

      后来,在6月2日的时候,问题最终解决!

      当时一早叫我坐在他旁边(加一,我们一起来查 = =),看着他排查(老实说,我既不喜欢他在我电脑操作,或者要我看着他操作,浪费俺的宝贵时间,据说其他开发也吐槽,说他一过来正事做不了),真的有种莫挨老子的感觉。。。

      整个流程,他跟前端开发交流多,其实没啥我的事,可能看中我的观察力(我多次回我工位,他还是抓我回去看着他的骚操作),因为要改数据库的字段来模拟客户使用场景,偷客户的账号密码去登录(这个“偷”字,我觉得用的特别精辟,据说是用我们测试的账号密码123456加密过的密文,然后将这个已知123456的密文,来替换客户密码加密过的密文,这就能用客户账号登录了,密码就是123456嘛~)

      最后终于还我清白了,沉冤得雪了,感人肺腑 ~~不然跳进黄河都洗不清啦

    xxx访问慢的问题,已得到解决。以下是问题原因及解决方法,请周知!
    原因:由于程序中采用了域名cdn.jsdelivr.net下的cdn文件/代码,当前该域名被墙了,因此相关引用都会无法访问。
    解决方法:
    1、无用的cdn引用文件/代码删除
    2、将该cdn文件下载到本地,修改代码引用本地文件

      插一句题外话,这天还有另一个项目:公司文档编辑docsify,也存在FQ能看内容,不FQ白屏的问题:

     我就说不FQ看不了是因为页面调用的js访问不了。

     

      两个项目都了刚好也是用到npm环境,当时大家都醒悟了,原来这两个问题的解决方法是相通的,也就是说,npm引用到的js地址(cdn.jsdelivr.net)最近可能国家管的严,有些地区把这个地址墙了,有些没有,所以出现某区域客户访问慢的情况,有些区域的客户还是用的好好的,在乎你所在地域~~~

    总结:

      一路走的弯路历程:kafka ——》 系统资源、带宽 ——》 云测 ——》 nginx日志 

       总结下来就是,这种迟迟找不到原因的,一定要有开发介入处理,而不是直接把问题扔给运维(我领导也算是半个开发,所以有他帮忙就很快解决了)

  • 相关阅读:
    sql把字符数组转换成表 :把字符串1,2,3变成表里的行数据
    Excel中如何把时间转化成文本
    网页前段常用代码及网页自适应
    sql存储过程几个简单例子(一)
    Web调用安卓,苹果手机摄像头,本地图片和文件
    JQuery-方法
    JQuery-选择器
    AJAX-JSON
    Ajax-验证码
    DOM-XML(解析与创建)
  • 原文地址:https://www.cnblogs.com/windysai/p/16383820.html
Copyright © 2020-2023  润新知