所以说,偶然性事件,不能说大部分!
但是夜间割接倒是正常,选择在用户最少的时候做可能影响业务的必要事情是常识。
首先很荣幸能够为大家解答这个问题,让我们一起走进这个问题,现在我们一起探讨一下。
下面我为大家分享,我个人对这个问题的看法与意见,希望我的回答能给大家带来帮助,也希望大家能够喜欢我的分享。
夜黑风高,杀人越货。这个时间点是正常人休息时间,而黑客则选择在这个时候活动,不论是安全攻击,或者是DDOS,都可能造成服务器故障。
大家如果有更好的关于这个问题的解答,还望一起评论出来共同讨论这话题。
我最后在这里,祝大家生活愉快每天开开心心工作快快乐乐生活, 健康 生活每一天,家和万事兴,年年发大财,生意兴隆,谢谢!
来自16年经验老程序员的靠谱回答。
主要有以下几个原因
首先,确实服务器的宕机一般都发生在凌晨使用率最低的时候,但是这个使用率只是针对用户而言的。
实际上,在凌晨的时候,服务器是很忙的。主要忙哪些事情呢?主要是一些定时任务,还有数据库备份等。很多比较耗时的 *** 作比如报表统计都会安排在半夜,以免半天影响正常业务,所以这个时候,服务器都是在高负荷运转的,容易产生事故。
同理,发布新代码或者更改功能,也会选择在晚上的业务低峰期。无论前期的测试工作做的多么到位,也难免会隐藏一些bug,到了凌晨,这些bug(比如死循环)已经跑了一段时间了,在无人值守的情况下就可能触发各种故障。
如果上线时间比较短还好,遇到更新比较大的情况下,程序员奋战到大半夜,这个情况下人是很疲惫的,更容易忙中出错。
比如死循环和内存泄漏,是需要经过一段时间才能表现出来的。白天有人实时监控,自然出现故障的几率比较小,就算出现故障了,也能很快修复,让用户无法觉察。
夜黑风高,杀人越货。这个时间点是正常人休息时间,而黑客则选择在这个时候活动,不论是安全攻击,或者是DDOS,都可能造成服务器故障。
计科专业从事嵌入式软件开发多年,最近因为公司需要搞后台研发,经常选择升级的时机放在凌晨,而且大型的数据处理也是放在这个时间段内,经常发生的服务器宕机也是在这个时段。都是在用户使用少的时候开始折腾,折腾的次数多也就容易出现服务器问题。由于做的是物联网设备,在工作中遇到的宕机主要有这么几种情况,对大量数据的 *** 作导致CPU占比在一段时间内骤增从而导致数据接收模块出问题,导致系统监控出现问题,很多设备信息检测不到了。
对数据库的 *** 作太频繁导致效率的下降,也是影响系统性能很重要的一部分,其实服务器也是普通电脑的构成,主要的资源是CPU和内存,这两个因素无论是哪种都有可能导致系统的崩盘,如果是CPU被占满了,系统的反应会变得异常缓慢,时间长了可能还会慢慢缓过劲来,内存如果占满了那么会导致系统的崩溃,直接运行不下去了,其实宕机核心点不会跑出这两种因素。
现在就常见的服务器宕机问题做个归纳总结:
1磁盘空间被占满,现在程序员运行的时候都习惯于带上log打印,如果时间长了加上没有清理的机制早晚会出问题,这个错误在平时运行过程中经常出现,如果使用的云计算服务器通常在系统崩盘之前都会发个短信,通知你的系统处于崩溃的边缘。
2并发性能问题,如果多个人同时 *** 作一个数据库或者数据块,会导致系统假死状态,这种属于争抢CPU资源问题,可以通过增加硬件配置以及优化软件代码的效率去解决,数据量如何足够大就可以考虑分布式的管理
3数据受损或者被破坏导致系统崩盘,所以常见的做法是都会配置备份盘,出现问题抓紧拿到备份盘来顶上,现在公司使用的是阿里云的服务器,稳定性相比之前好太多了,中间换过电信云,腾讯云虽然价格低点,最后受不了直接换成阿里云,再也不想换回去了,数据的稳定性永远是第一位的。
4,一些没有必要的误 *** 作,很多时候是因为程序员或者运维人员的误 *** 作大致服务器大面积的宕机,这种事件在很多云服务提供商身上都发生过,根本层面还是管理问题。后台管理的任何细节都有可能
服务器宕机查找问题的几个线索:
1看看服务器是不是存在内存泄漏问题,有些时候重启机器开始还能正常运行弄了一段时间之后就会变得非常缓慢,十有八九都是内存的问题
2是否有黑客入侵造成,有些非常关键重要的数据也是黑客最感兴趣的,一般来讲这种概率不是很高
3是不是数据库死锁导致的,访问量过大导致,连接数过多造成的。
服务器宕机一旦发生就会引起用户的无数的投诉,无论在什么情况下稳定永远是第一位,现在大的功能升级除非已经百分百验证成功,否则引起的后果不堪设想。
希望能帮到你。
来自华为的维护人员粗略的回答:
1,业务类:系统定时任务。 比如说晚上的统计报表,任务刷新,数据刷新,或者数据备份。等等。都是在晚间凌晨的时候做的。这个时候会导致CPU/内存/空间(磁盘/数据库)/IO(磁盘读写)会很高。所以导致可能出现宕机或者资源不足的情况。
2, *** 作类:如果需要进行割接/升级/打补丁/整改之类的 *** 作的时候,都是有可能触发情况。很多情况需要重启进程/服务/系统。
3,bug类,不管是Linux系统或者业务系统都有可能存在bug导致系统崩溃或者服务器宕机。这种情况在白天也有可能发生。
4,硬件问题。如单板/磁盘等硬件由于实用年限问题等慢慢也会老化,比如说磁盘阵列的磁盘就很容易损坏。
5,突然的业务拥堵导致数据量很大,导致传输以及业务拥堵。以及磁盘空间满载或者数据库表空间满了。导致出现问题。都是可能发生问题的情况的。
偶发性的,可以能是你浅意识的,因为这种问题印像最深刻,可能认为比较多,通过做记录去试下。
宕机一般分5种情况:
1、程序上出了问题导致程序崩溃。
2、cpu\Gpu 、内存占满了。
3、硬盘空间满了
4、数据库表空间满了
5、机房温度过高
以上是个人在运维过程中所遇到的问题,做的总结性回答
虽说在凌晨的时候,使用系统的用户非常少,但是服务器在这个时候要做的工作可能一点儿也没有少:
再说一个很久以前看到的,同行们分享的服务器宕机的经历,有些经历非常之神奇,大家就当段子看吧(为了方便,我就按照第一人称来讲述)。
我们服务的甲方是一家医院,机房就在医院的楼中,最近机房的服务器经常性的发生宕机,公司的工程师去了几次也没有发现问题;后来公司被折腾的没办法了,决定让一个工程师晚上住在机房,看看半夜机房中究竟发生了什么事儿,想着就算找不到原因,也能在服务器宕机后第一时间重启。
后来发现原因,到了凌晨三四点的时候,机房门打开了,进来一个值夜班的小护士,看了一眼说:“又没有人,开着空调不浪费电么?”然后就把机房的空调关掉了,然后气温上升
服务器宕机是指服务器因为一些原因导致服务器无法正常运行,造成网络断开,无法正常使用网络。服务器宕机一般都发生在凌晨,为什么会出现这种情况呢? 像我们公司是从事 科技 互联网设备生产的,为了不影响正常生产,系统升级的时候一般都是在凌晨,而且很多的数据处理也放在这个时候,服务器在这个时候也容易出现问题,具体分析有以下几种原因:
1 系统在升级或处理大的数据时,硬盘空间被占满,如果没有人能及时清理磁盘空间,服务器就会出现卡顿的问题造成宕机。
2如果是多台设备同时在 *** 作,使用这一个数据库,会引起系统假死的现象,这个是属于抢占CPU的资源造成的,会导致服务器不堪自负,网站访问量猛增,程序中毒遭到很多的应用都在消耗服务器,最终死机无法响应。
3由于凌晨维护人员减少,会出现断电,温度过高等等环境因素的影响,使服务器死机等等,不过这种情况是很少见的,因为现在机房都有发电机备用避免停电造成的数据丢失,温度也是采用的恒温系统。
4有的企业为了节省服务器的费用,会租用较低配置的服务器来从事很多的工作,使服务器超负荷运转,结果是可以预料得到的,宕机就会经常发生。
5服务器宕机一般和内存有很大的关系,有些服务器运行了一段时间后速度就变慢了,基本上就是内存出现问题,要检查一下内存是否存在泄漏的问题。
服务器宕机会出现一系列的问题,造成的损失也是无法估量的,只有平时定期做好维护,在凌晨的时候也要注意掌握使用状况才能避免宕机,无论在任何时候,服务器的稳定运转才是最重要的。
这里需要说明一下,服务器宕机是什么意思呢? 我们日常说的“宕机”中的“宕”其实指的是英文“down”,宕机表示当前服务器或服务无响应或者不在线状态。
服务器的宕机可分为人为控制的宕机、不可控的宕机。 这两者有什么区别呢,下面来具体说明一下:
1、人为可控的宕机行为
服务器长时间的运行可能会带来一些(非致命性)问题,又或者我们需要对服务器进行软/硬件的升级维护时,可能需要停机或者重启 *** 作。这种情况下的宕机是可控的,在我们的计划之内。
2、不可控宕机行为
这种因素就很多了,比如说 服务器突然蓝屏、服务异常崩溃、突然断电断网了 ,这时候服务(器)就无法正常提供服务,这些都是不可控因素导致的。
而 在我们的日常运维工作中,计划性的宕机维护一般都选择在半夜 来做这些事,为什么呢,原因主要有这几点:
1、 减少对用户的影响
凌晨大家基本上都休息了,用户量较白天来说小得多,所以选择在此时进行系统及硬件的维护导致的宕机对用户的影响较小,就算有影响也只是影响小部分用户。
2、 有足够的时间来处理故障
在凌晨进行维护,就算有问题,技术人员也有足够的时间(比如说:00~05点)去处理故障。如果换成在日间维护,服务(器)宕机1小时以上投诉单全都过来了,压力很大的。
原理其实很简单:这就如同我们白天忙碌着很多事物性的工作,就如同搬运工一样,不停的搬运物品入库,只有在物品都搬运完了的时候,我们才能开始整理这些物品,整理仓库,。
其二,服务器在白天的时候,其实都在实时处理数据的“搬运工”状态,只有在实时性数据处理工作(搬运工作)完成以后,才有机会或才能腾出手来去做数据的归纳和整理。所以,服务器的宕机时间,通常会发生在使用率最低的时间段。仅此。智能多线应该是服务器自动根据服务器的压力调节登陆的入口;
举个例子,一个游戏区由好几个服务器共同组建,每个服务器的负荷都不一样,当一个服务器比较满负荷的时候,登陆的人会被自动分配到负荷比较低的服务器上面去,这样可以均衡服务器的压力,让游戏更加流畅。
Windows服务器中自带的性能监控工具叫做Performance Monitor;
在开始-运行中输入‘perfmon’,然后回车即可运行。
Monitor本身也是一个进程,运行起来也要占用一定的系统资源。所以你看到的资源的使用量应该比实际的要稍微高一点。这个工具在帮助管理员判断系统性能瓶颈时非常有用;
举个列子来说,今天有个用户抱怨说他们项目组的服务器(这是一台虚拟机)运行起来非常慢,但也不知道具体问题出在什么地方。任务管理器里显示CPU和内存的使用量都不算高,但服务器的相应就是非常慢;
Monitor,让其运行一段时间后(因为参考平均值会比较准确),发现average disk queue的值比较高,这就说明物理服务器的硬盘负荷太重,I/O *** 作的速度跟不上系统的要求。关掉虚拟机,将其转移到另一台硬盘负载比较小的主机上,再打开虚拟机。
分析性能情况
1、内存泄露判断
虚拟内存字节数(VirtualBytes)应该远大于工作集字节数(Workingset),如果两者变化规律相反,比如说工作集增长较快,虚拟内存增长较少,则可能说明出现了内存泄露的情况。
对于Workingset、Private Bytes、Available bytes这些计数器,如果在测试期间内数值持续增长,而且测试停止后位置在高水平,则也说明存在内存泄露。
Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Available
bytes计数器的值持续降低,则很可能存在内存泄漏。
2、CPU使用情况
一般平均不要超过70%,最大不要超过90%(好:70% 、坏:85%、 很差:90%)。
3、tps(每秒处理事务的数量,在SOAPUI中进行统计)
一般在10-100,不同应用程序具体值不同。
Windows服务器中自带的性能监控工具叫做PerformanceMonitor,在开始-运行中输入‘perfmon’,然后回车即可运行。Performance
Monitor本身也是一个进程,运行起来也要占用一定的系统资源。所以你看到的资源的使用量应该比实际的要稍微高一点。这个工具在帮助管理员判断系统性能瓶颈时非常有用。举个列子来说,今天有个用户抱怨说他们项目组的服务器(这是一台虚拟机)运行起来非常慢,但也不知道具体问题出在什么地方。任务管理器里显示CPU和内存的使用量都不算高,但服务器的相应就是非常慢。打开Performance
Monitor,让其运行一段时间后(因为参考平均值会比较准确),发现averagedisk
queue的值比较高,这就说明物理服务器的硬盘负荷太重,I/O *** 作的速度跟不上系统的要求。关掉虚拟机,将其转移到另一台硬盘负载比较小的主机上,再打开虚拟机。问题就解决了!
这里我简单列举几个常用参数的参考值,需要更多的信息你可以google一把。
CPU:
%ProcessorTime:表示CPU的使用率,如果值大于80表示CPU的处理调度能力偏低。
硬盘:
%DiskTime:表示硬盘的I/O *** 作的频率(繁忙时间),如果值大于80表示硬盘I/O调度能力偏低。
AverageDiskQueue
Length:表示硬盘I/O *** 作等待队列的长度,如果值大于2表示硬盘I/O调度能力偏低。
内存
Pages/Sec:表示系统对虚拟内存每秒钟的访问次数,如果值大于20表示有内存方面的问题。(有可能是物理内存偏低,也有可能是虚拟内存没有配置正确。一般情况下虚拟内存应为物理内存的15-2倍)
CommittedBytesandAvailableBytes:Committed
Bytes表示虚拟内存的大小,AvailableBytes表示剩余可用内存的大小。正常情况下,Available
Bytes减少,pages(页面数)应该增加,提供页面交换。如果Available
Bytes的值很小表示物理内存偏低。当关闭一些应用以后,CommittedBytes应该减少,Available
Bytes应该增加。因为关闭的进程释放了之前占用的内存资源。如果相应的值没有发生变化,那么该进程就可能造成了内存泄漏。
CacheBytes:表示系统缓存的大小。如果值大于4M表示物理内存偏低。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)