第一,内存泄漏
当内存是在子程序中被分 配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要 *** 作系统还在运行中,则进程就会一 直使用该内存。
第二,C指针错误
用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引 用指针中出现一个错误,就会导致 *** 作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量将访问一个空的对象引用。
第三,数据库中的临时表不够用
许多数据库的临时表数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。
4
第四,线程死锁
由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。
5
第五,磁盘已满
导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中。
6
第六,服务器超载
Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。
你可以尝试换一个服务器,我们这边很多用的都是禾禾谷数据的服务器,质量好还实惠,推荐你试试看。
B站崩了冲上热搜原因,众说纷纭,有之前公布的消息说是起火了导致服务器宕机。但后来上海消防又站出来,说没有接到这公司所在的地方的这个火警,相应的报警,至于原因是什么并没有人清楚。
B站是哔喱哔喱d幕视频网原来它就是一个网站,但是现在它已经有自己的APP了,就是哔喱哔喱,你去软件商店搜这个东西就能搜到。上面主要经营的模式是由up主本身产出优质的内容吸引浏览网站的人点赞,关注投币,然后这个视频的创作者能得到一定的收益,网站也能分得一部分的收益,再加上一定的广告展现量。所以说这些年b站的发展还算是不错,影响力也越来越大了,有很多人5年前甚至是更早就已经是这个注册的会员了。
就是因为他影响力越来越大了,突然宕机了才受到那么多人的关注,因为根据他们的官微阐述,是说服务器的机房起火了,正在紧急抢救,让我们为我们的数据祈祷祈祷这次能平安度过。但是后来上海消防又站出来,说没有接到这个公司所在区域的火警报警电话,因为要知道服务器那个东西一旦着火了,那可不是普通的水就能扑灭的,那需要专业人士,所以原因到底如何,这就没有办法知道了,因为官方并没有公布后续的相应消息呢。
人生到底是什么原因导致的?宕机为什么会出现这样的错误?这跟我们普通的消费者来说都没有那么重要。因为b站的会员他是注册会员不是花钱才能开的那种会员,大部分人都是免费用户,你注册了之后通过一定的答题你就可以成为这个网站的会员,在会员之上有一个叫做大会员的东西,那个是要花钱的,但那个是少一部分,大部分都是免费用户,出现偶尔的这个问题很正常,没有必要大惊小怪。
一个项目上线了两个月,除了一些反馈的优化和小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才知道爆了。
系统虽小,问题不大,但其实暴露的问题还是挺多。
这次线上小事故暂时分享到这,因为项目不大,所以没有做那么多监控,但以下建议,小伙伴可以参考一下:
文章来自>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)