zoukankan      html  css  js  c++  java
  • 服务器宕机排查思路及解决方法

    网站崩溃的原因

    1.访问量过高,超出系统承载能力

    2.这个访问量,不仅包括正常访问,也有异常访问的,包括攻击在内。(黑客攻击,黑客领用软件请求服务器所有端口,但是不释放端口,就导致其他用户进不了这个网站。)

    3.服务器配置过低,低于预期网站发展的设想,虽然是超负载,但是因为配置太低了。

    4.服务器配置不低,但是存在多个网站,为某一个网站个体,划分的资源不足以承载网站运转。

    5.网站本身,存在代码循环等冲突性错误,或者不断地查询导致资源耗尽。

    怎么减小网站崩溃的可能

    可以更换内存、磁盘空间大一点,稳定一点的服务器,也可以升级维护数据库,完善代码,定期维护网站。适时引流分散一下来访人员的时间点。

    第一,内存泄漏

    C/C++程序还可能产生另一个指针问题:丢失对已分配内存的引用。当内存是在子程序中被分配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要操作系统还在运行中,则进程就会一直使用该内存。这样的结果是,曾占用更多的内存的程序会降低系统性能,直到机器完全停止工作,才会完全清空内存。

    第二,C指针错误

    用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引用指针(即访问指向的内存)中出现一个错误,就会导致操作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量(analog)将访问一个空的对象引用。Java中的空引用通常不会导致立刻退出JVM,但是前提是程序员能够使用异常处理方法恰当地处理错误。

    第三,数据库中的临时表不够用

    许多数据库的临时表(cursor)数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。

    第四,线程死锁

    由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。我们来想像这样一种情形:在人行道上两个人迎面相遇,为了给对方让 道,两人同时向一侧迈出一步,双方无法通过,又同时向另一侧迈出一步,这样还是无法通过。双方都以同样的迈步方式堵住了对方的去路。假设这种情况一直持续下去,这样就不难理解为何会发生死锁现象了。

    第五,磁盘已满

    导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。

    日志文件会很快用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、 JDBC日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与操作系统不同的文件系统中。日志文件系统空间已 满时Web服务器也会被挂起,但机器自身被挂起的几率已大大减低。

    第六,服务器超载

    Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其 它的Web服务器上,这可能会致使这些服务器一个接一个地用光所有的线程。这样一来,整个服务器组都会被挂起。操作系统级别可能还在不断地接收新的连接, 而应用程序(Web服务器)却无法为这些连接提供服务。用户可以在浏览器状态行上看到connected(已连接)的提示消息,但这以后什么也不会发生。

    总之,还有许多因素也极有可能导致服务器租用或服务器托管站点无法工作。有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。

    服务器宕机原因及解决办法

    什么是服务器宕机?

    服务器宕机指的是服务器由于某些原因导致服务器无法正常运转,造成网络无法使用,对于网站来说,服务器宕机带来的影响很大,他不但造成访客对网站无法访问,甚至影响到网站在搜索引擎上的排名。

    在服务器的使用过程中,服务器的宕机随时都有可能出现,首先我们要找到服务器宕机的原因,才能找到对应的解决方案。

    服务器宕机可能分为两种情况,服务器的假死机死机

    假死机(非蓝屏死机)是由于硬件资源暂时性的被消耗殆尽,因为无法对外部指令进行相应的现象,通常是网站处于访问高峰期,带宽等资源跑满,通常只需要等待一段时间,等待服务器腾出更多的资源即可恢复正常

    而死机,如果通过ping测试服务器,键盘切换数字键和大写字母键功能,显示器无画面输出,或者鼠标光标没有任何反应,则表示服务器硬件出现故障

    服务器出现故障的常见原因

    1.服务器性能的原因

    性能问题中,最常见的服务器宕机原因是运行很糟糕的SQL,但也不能确定一定是这样的,还有其他的可能,比如也有些问题是由于服务器Bug或错误的行为导致的。

    此外,较差的Schema和索引设计是第二大影响性能的问题。

    2.运行环境的原因

    如果是运行环境问题,那么最常见的就是磁盘空间耗尽。

    3.数据丢失或损坏的原因

    数据丢失,一般情况下是由于droptable的错误操作导致,并总是便随着缺少可用备份的问题。

    4.复制的原因

    如果是复制问题,那么一般是由于主备数据不一致导致的。

    既然了解了服务器宕机的原因,那么如何判断或查看服务器宕机的原因呢?

    (1)查看是否是误操作导致

    (2)查看是否是应用程序异常导致

    (3)查看是否是应用程序导致内存溢出或者泄露,outofmemory导致

    (4)查看是否是流量负载过大导致

    (5)查看是否是遭受黑客入侵攻击导致

    当查出造成服务器宕机的原因后,我们又该如何进行解决呢?

    以上介绍了关于服务器宕机的原因、判断、解决,当然你也可以选择万变云的云主机,因为其中一个服务器出问题时,会启用其他服务器,以保障你网站安全的运行,可以大大降低网站无法访问的几率。

    如何查看服务器宕机的原因?

    1.是否是应用程序导致内存溢出或者泄露导致,out of memory导致?

    2.是否是进程过多或不断创建,导致资源耗尽导致?

    3.是否是数据库程序死锁,或者连接数过多导致?

    4.是否是应用程序异常导致?

    5.是否是流量负载过大导致?

    6.是否是遭到黑客入侵导致?

    7.是否是操作有误导致?

    服务器宕机如何解决?

    1、发现服务器宕机后,及时联系服务器商解决相关问题,因为也许短暂的宕机,会给你带来重大损失。

    2.做好防范准备。可以准备两个网站空间,他们存放的内容相同,而ip地址不相同,并且机房的地理位置不同,这样两个主机,同时出现宕机的可能性就大大降低了。第一时间发现服务器宕机问题后,可以迅速的通过修改dnspod.com中的域名记录,指向目前正常的网站空间,

    dnspod解析生效的时间是实时的,而一般的dns服务器刷新时间比较长,对外声称24小时生效,但是按照实际经验来看,差不多30分钟内生效,否则就要检查域名绑定是否正确了。

    阿里云云服务器如何进行宕机排查?

    1.启动机器,看是否能登录。

    2.看以下几个方面:连接数过多,应用程序异常,流量负载过大,遭受黑客入侵攻击 误操作,如果无法查看故障现场,请检查以下可能的原因: 应用程序导致内存溢出或泄露,进程过多或者不断创建,资源耗尽,数据库程序死锁,如果能登陆,可以查询系统日志查看是否有异常记录。

    将近百万访问量,每天上午9点左右和晚上10点左右必定会宕机。每次重启服务器后问题都没有了,没法知道具体是那块所造成。开始仔细想问题在那边,H5新闻站点基本上都是使用搜索引擎运行的,包括后来我开发的PC站点全部采用搜索引擎运行,不会有任何数据库操作。以为是mysql配置需要优化,所以就开始做起了服务器优化。

    1、第一看见就是服务器IO过高造成了宕机,经过排查是mysql所占用,开始调整H5项目把直接操作数据库的部分都改成搜索引擎。重启后通过mysql命令行 show processlist; 查看正常,怀疑这个时候是脚本没运行,所以查不到问题了。

    2、为了不影响业务运作,把线上有收益的业务迁移到其它服务器。磁盘重新分布,图片,数据库,搜索引擎全部分开,发现mysql磁盘过高,由此可以完全定位IO过高和mysql脱不了一点干系。

    3、开始做mysql配置优化,不能让服务器宕机,经过两天的调试,服务器不宕机了,IO还是能够达到80%以上。平时偶尔也发现IO也不小。开始头疼了应用程序和服务器都优化了还是不见有个好的效果。

    4、持续观察IO状况,在IO高的时候排查mysql,发现有部分sql运行时间都是在30秒以上,IO都是读的负载过高,肯定是这个原因导致的,这条sql所使用的字段没有索引,加上索引后,IO明显下降到5%左右。

    5、当时心里非常激动,花了两天调试服务器各种配置优化。结果发现饶了这么大一个弯。最终还是因为mysql索引优化问题,最终问题还是出现在爬虫上面,每次爬虫跑的时候都会比对数据,再数据表越来越大的时候,字段没有索引就慢如蜗牛。虽然绕弯了还是有很大的收获的,在各种配置优化上也更明白的认识到了很多场景的优化方式。

    6、很多时候都是本地开发好的项目,怎么玩都正常,只要上线都会有点问题,运营一段时间后问题也越来越多,这都是没有考虑到很多因素的问题。

  • 相关阅读:
    51nod1693 水群
    51nod 1158 全是1的最大子矩阵
    poj1192 最优连通子集(树形dp)
    51nod 1051 最大子矩阵和(dp)
    codeforces723 D. Lakes in Berland(并查集)
    51nod 1065 最小正子段和
    poj1122 FDNY to the Rescue!(dij+反向建图+输出路径)
    51nod 1050 循环数组最大子段和
    hdu4781 Assignment For Princess(构造)
    51nod 1043 幸运号码(数位dp)
  • 原文地址:https://www.cnblogs.com/even160941/p/14120934.html
Copyright © 2011-2022 走看看