100ms的SQL把服务器搞崩溃了

100ms的SQL把服务器搞崩溃了,第1张

一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利;前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一下压测,绝对是没得问题的;但是,就在两个月后的一天,系统突然跑的比乌龟还慢,投诉开始就陆续反馈过来了。

经过排查,原来是频繁执行一条耗时100ms的SQL导致,100ms感觉不长,但就是把系统搞崩了,具体细节如下。

项目采用ABP进行开发,集成统一的认证中心(IDS4),部分数据对接第三方系统,拆分后的这个项目架构相对简单。

考虑并发量不高,就算是高峰期也不会超过1000,于是就搞了个单台的数据库服务器(MySQL),测试环境中经过压测,完全能抗住。

上线时,由于线上资源的关系,DB服务器的配置没有按测试环境的标准来分配,相关人员想着后续看情况进行补配。上线推的比较紧,简单评估了配置风险,初步判断没啥大问题,于是就推上线了。

相关技术栈:ABP、IdentityServer4、Autofac、AutoMapper、QuartzNET、EF Core、Redis、MySQL等,这都不重要,重要的是100ms的SQL把系统搞崩了。

由于系统相对不大,并没有把分布式日志、调度监控,性能监控集成上去。

上线期间,前期处于使用推广阶段,一切正常。两个月后的一天,系统处于使用高峰时段,突然陆续收到反馈:系统有点卡!!!于是赶紧进行排查。

由于系统已经是集群部署的,慢这个问题首先怀疑是数据库服务器,于是让DBA的同事排查了一下,没有锁,只是有大量事务等待提交(waiting for handler commit),通过如下命令可查的:

看到都是插入审计日志记录导致,一看日志记录频率,差不多一秒500条记录。DBA同事说可能是记录插入频繁导致,此时CPU已经爆到100%了,为了快速解决问题,于是就赶紧关掉了一些不必要的日志记录。

这么一改,稍微降了一点,没有事务提交的记录,系统勉强可以撑着用,但是CPU还是在85%~97%波动;

看到这种情况,当然还是不放心,继续排查。 中间有对服务器的配置产生过怀疑,但非常肯定的是这不是主要原因,于是和DBA的同事继续排查。

系统虽然可以正常使用,但时不时的也看看监控屏,CPU一直处于高水位状态,还是有点慌的,因为一有问题,信息和电话都要爆。

突然DBA同事发现有一个单表查询的SQL执行比较频繁,于是单独拿出来试了一下,查询时间150ms左右,这个表的数据量不大,8万左右,但没有加任何索引,因为想着数据量不大,查询时长还可接受,所以当时就没有加相关索引。

定位到这条SQL后,想到的第一步就是增加索引,在测试环境上试了一把,执行效率直接飞速提高到1ms;效果如下:

所以和DBA同事达成一致意见,在生成环境上增加复合索引( 创建索引一定要注意字段顺序 ),在中午时候,系统使用频率不太高,于是就在生成上快速加了索引,我去,CPU一下降到了20%以内,意不意外;就算在使用高峰期,也没超过20%,通过zabbix工具监控看到CPU的效果:

问题算是解决了,总算松了一口气。

这里有个问题: CPU都爆了为什么没有报警提醒,这块DBA同事正在排查相关配置。这里发现CPU爆了,还是无意的远程到服务器,发现很卡,一看CPU才知道爆了。

系统虽小,问题不大,但其实暴露的问题还是挺多。

这次线上小事故暂时分享到这,因为项目不大,所以没有做那么多监控,但以下建议,小伙伴可以参考一下:

文章来自>

飞书官方对于这一次的网络服务器崩溃还是非常重视的,在当天下午的一点就已经给出了回复,表示之所以会出现故障,主要就是因为机房网络瘫痪导致他们的服务器没有办法正常的运行,目前服务器已经被修复完毕。说句实在话,整个维修过程还是非常快速的,从这里就可以看出,他们的技术团队还是非常强力的,今天就跟大家来探讨一下,这一次的服务器崩溃。

第一,具体是什么原因导致服务器的崩溃?飞书官方对外并没有进行多的解释,他们只是表示是因为网络的故障导致服务器瘫痪,没有办法进行正常的交互使用,才导致部分功能没有办法运营。而且这一次影响的范围其实并不大,在当时还是有很多的用户是可以正确的使用飞书软件的。其实从这里就可以看出,他们把自己的服务器进行了分流,从而保证在出现问题的时候,不至于全面瘫痪。

第二,维修的时间是非常快速的。在当天上午的时候出现网络故障,在下午1点的时候,官方网站就已经给出了解释,并且表示已经进行了维修,从这里就可以看出,他们的技术团队反应速度非常快。当然在互联网这个领域,其实我国的发展是非常迅速的,可能是后起之秀,也让我们在很多的软件和硬件上进行了更新。

第三,如何看待这一次的网络故障?我认为服务器出现这样的网络故障是非常正常的,毕竟像飞书以他背后的公司,每天都要处理数10亿以上的文件交流信息的流量是非常大的,服务器自然也是需要有多个元器件参与到其中的。任何的断电或者温度上升以及网络波动都可能会导致其运营出现问题。

飞书这款软件还是非常好的,大家也是可以在飞书这款软件上进行沟通和交流。很多人也都觉得飞书这款软件比较适合开会议的时候使用,所以说很多的人也都会选择下载这款软件。如果使用的人比较多,那么也会造成这款软件出现崩溃的现象。不少网友也都反映道,飞书这款软件的服务器出现了崩溃的情况。之所以有这种现象,这也是因为磁盘空间溢出所导致的。所以说大家也是应该很好的看待这款软件,毕竟每一款服务器也是有一定的承受限制。

服务器崩溃很不好

如果说大家使用服务器的人数比较多,那么就会导致服务器出现崩盘的情况。所以说很多的人也都觉得这种崩溃的现象很不好,也会让大家出现一些不必要的麻烦。如果说有这种情况的发生,那么大家也是应该向服务后台反映一下。这样也是能够更好的进化这款软件,也方便人们更好的使用。

飞书软件使用起来很方便

大家也都觉得飞书这款软件使用起来特别方便,这也给人们带来了比较多的好处。所以说大家使用起来也会感觉到特别的顺手,还有很多的人也都觉得这款软件能够帮助人们办公。所以说很多的办公室人员也都会选择下载这款软件,因为这款软件也是给人们带来了方便。大家在使用的时候也是应该很好的注意,如果发现服务器崩溃,那么也是需要及时的维修这个系统。

黑客的技术和渗透力很强

随着网络科技不断的发展,黑客的技术和渗透力也是比较强的。如果发现服务器崩溃,那么也是出现了不可预测的危险。所以说大家也是应该重视这个情况,然后把被攻击的风险率降低到最小。这样也能够维护一个比较好的网络环境,还能够方便人们更好的使用办公软件。

服务器崩溃了,首先尝试重启服务器的 *** 作。如果重启还是不能解决问题,就要把能插拔的硬件重新插拔一下,重点是硬盘和内存。如果插拔完硬件还是不能恢复,就要检测是不是硬件故障;如果硬件检测没有问题,那就考虑重做系统了。

是因为网络攻击导致的,从2020年11月2日开始,卡普空集团部分网络遇到了一些问题,使得部分系统如邮件以及文件服务器的访问受到影响。公司已经确认这是由于有未经授权的第三方进入网络而导致的,并且在当天已经暂停部分内网的运作。”

常见原因:
第一,内存泄漏
当内存是在子程序中被分配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要 *** 作系统还在运行中,则进程就会一直使用该内存。
第二,C指针错误
用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引用指针中出现一个错误,就会导致 *** 作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量将访问一个空的对象引用。
第三,数据库中的临时表不够用
许多数据库的临时表数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。
第四,线程死锁
由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。
第五,磁盘已满
导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中。
第六,服务器超载
NetscapeWeb服务器的每个连接都使用一个线程。NetscapeEnterpriseWeb服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13447257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-08
下一篇 2023-08-08

发表评论

登录后才能评论

评论列表(0条)

保存