`
hlidc
  • 浏览: 27817 次
  • 性别: Icon_minigender_2
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Web站点崩溃的原因有哪些?

 
阅读更多
有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。下面将集中分析总结导致Web站点崩溃的最常见的问题。如果可以解决这些常规问题,那么也将有能力对付出现的一些意外情况。

  磁盘已满

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

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

  C指针错误

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

  内存泄漏

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

  解决方案之一是使用代码分析工具(如Purify)对代码进行仔细分析,以找出可能出现的泄漏问题。但这种方法无法找到由其他原因引起的库中的泄漏,因为库的源代码是不可用的。另一种方法是每隔一段时间,就清除并重启进程。Apache的Web服务器就会因这个原因创建和清除子进程。

  虽然Java本身并无指针,但总的说来,与C程序相比,Java程序使用内存的情况更加糟糕。在Java中,对象被频繁创建,而直到所有到对象的引用都消失时,垃圾回收程序才会释放内存。即使运行了垃圾回收程序,也只会将内存还给虚拟机VM,而不是还给操作系统。结果是:Java程序会用光给它们的所有堆,从不释放。由于要保存实时(JustInTime,JIT)编译器产生的代码,Java程序的大小有时可能会膨胀为最大堆的数倍之巨。

  还有一个问题,情况与此类似。从连接池分配一个数据库连接,而无法将已分配的连接还回给连接池。一些连接池有活动计时器,在维持一段时间的静止状态之后,计时器会释放掉数据库连接,但这不足以缓解糟糕的代码快速泄漏数据库连接所造成的资源浪费。

  进程缺乏文件描述符

  如果已为一台Web服务器或其他关键进程分配了文件描述符,但它却需要更多的文件描述符,则服务器或进程会被挂起或报错,直至得到了所需的文件描述符为止。文件描述符用来保持对开放文件和开放套接字的跟踪记录,开放文件和开放套接字是Web服务器很关键的组成部分,其任务是将文件复制到网络连接。默认时,大多数shell有64个文件描述符,这意味着每个从shell启动的进程可以同时打开64个文件和网络连接。大多数shell都有一个内嵌的ulimit命令可以增加文件描述符的数目。

  线程死锁

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

  解决死锁没有简单的方法,这是因为使线程产生这种问题是很具体的情况,而且往往有很高的负载。大多数软件测试产生不了足够多的负载,所以不可能暴露所有的线程错误。在每一种使用线程的语言中都存在线程死锁问题。由于使用Java进行线程编程比使用C容易,所以Java程序员中使用线程的人数更多,线程死锁也就越来越普遍了。可以在Java代码中增加同步关键字的使用,这样可以减少死锁,但这样做也会影响性能。如果负载过重,数据库内部也有可能发生死锁。

  如果程序使用了永久锁,比如锁文件,而且程序结束时没有解除锁状态,则其他进程可能无法使用这种类型的锁,既不能上锁,也不能解除锁。这会进一步导致系统不能正常工作。这时必须手动地解锁。

  服务器超载

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

  解决问题的一种方法是将obj.conf参数RqThrottle的值设置为线程数目之下的某个数值,这样如果越过RqThrottle的值,就不会接收新的连接。那些不能连接的服务器将会停止工作,而连接上的服务器的响应速度则会变慢,但至少已连接的服务器不会被挂起。这时,文件描述符至少应当被设置为与线程的数目相同的数值,否则,文件描述符将成为一个瓶颈。

  数据库中的临时表不够用

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

  这是一个不容易被程序员发觉的问题,但会在负载测试时显露出来。但可能对于数据库管理员(DataBaseAdministrator,DBA)来说,这个问题十分明显。

  此外,还存在一些其他问题:设置的表空间不够用、序号限制太低,这些都会导致表溢出错误。这些问题表明了一个好的DBA对用于生产的数据库设置和性能进行定期检查的重要性。而且,大多数数据库厂商也提供了监控和建模工具以帮助解决这些问题。

  另外,还有许多因素也极有可能导致Web站点无法工作。如:相关性、子网流量超载、糟糕的设备驱动程序、硬件故障、包括错误文件的通配符、无意间锁住了关键的表。
分享到:
评论

相关推荐

    web站点崩溃的原因大全

    web站点崩溃的原因大全

    iis Web站点崩溃的原因分析

    iis Web站点崩溃的原因分析

    web安全性测试用例基础

    web安全性测试用例 1.输入验证 2.输出编码 3.防止sql注入 4.跨站脚本攻击 5.跨站请求伪造 6.让web站点崩溃最常见的7中原因

    web测试的一些关键点和重要点

    (1)、压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。 (2)、压力测试的...

    免费开源最新版FileZilla Client 3.6.0.2

    的目录可以把文件移动上一层,拖动相应的文件名为移动到相应目录,一般主机目录如图所示,db是给你传压缩包和下载压缩包的,log是日志文件存储地方,有的主机不提供日志,web就是你的web空间了,一般路径为/xx/web/...

    网络底层安全解决方案:windows、Linux和网络设备底层安全解决方案

    就是搭建服务器或者配置网络设备的时候,往往服务器的安全考虑的非常周到,而忽略了他们的底层平台-操作系统或者IOS系统漏洞,就拿windows来说吧,搭建了一个WEB站点,web的权限做到了目录的每个文件夹中,但是,...

    Web标准:文档类型和网页浏览器

    作者:Aaron Gustafson ...转载请注明作者和译者信息,谢谢! 进步总是要有代价的. 对网页浏览器来说, 由于开发者像是宣传真理一样的拍着胸部担保着... 站点突然崩溃了, 然后我们的客户, 我们的老板和用户们都感觉到非常的不

    蓝芒5.0主机管理系统破解版 含主控端 被控端和机器码

    在因硬件故障、黑客入侵或其他原因数据损毁、系统崩溃的情况下,都能够迅速自动恢复站点配置,将灾难损失减至最低。 ICP备案管理网站备案 支持运营商统一备案,也支持用户自行备案; 客户自主管理和升级主机 ...

    job-scrappy:一个Python脚本,用于自动从特定作业站点进行剪贴

    好的,这样做的原因是,我厌倦了从工作网页上复制粘贴内容,并且我希望有一台机器为我做。 功能集实施 命令行界面允许: 取得一个网址以及要保存到的文件。 取得一个带有URL列表的文件,并告诉它保存到哪个文件。...

    chrome.exe

    任务管理器(Task Manager):非常有特色的工具,用户可以查看哪些网站占用了最多的内存、下载流量和CPU资源,有利于管理各个标签页与插件,也便于用户终止恶意操作。 诈骗和恶意程序保护:当“Google Chrome”侦测...

    oneshallpass:一个独立的网页,用于制作安全的Web密码。 离线工作

    如果您是第一个阵营,那么Zappos和LinkedIn等主要网站上不断出现的安全性崩溃就意味着您在其他网站上的帐户有受到威胁的危险。 如果您处于第二营,那么如果没有备忘单,可能会很不走运,这可能是因为您使用的是移动...

    linux管理员指南

    前 言系统管理员是独一无二的一个群体。就整体而言,我们可能是各种参考书和培训教材最大的消费群,而且会从其中吸取最需要的东西...若想获得有关RedHat Linux的更多信息,请访问其Web站点http://www.redhat.com。

    InfiniteBonks:Darknet网站的压力测试工具

    笔记: 我写了这些工具来研究对洋葱站点(Darknet / Deepweb / Darkweb站点)进行压力测试的方法。 请仅将其用于研究目的。 缺点: (1)可能会导致TOR网络中断。 (2)RAM密集型。 (3)使用风险自负。 如果您将...

    强大的扫描工具x-scan

    出错导致系统崩溃,另外很多防火墙驱动与WinPCap驱动本身也存在冲突,建议先禁止或卸载防火墙程序 再试试。 Q:操作系统识别不正确是什么原因? A:操作系统识别方面确实不能保证100%的准确率,目前是综合NMAP...

    傲游 [Maxthon] 浏览器 2.0.5.7845 正式版

    简易收集面板删除标签时增加了提示 * 侧边栏的标签改为只显示图标的方式 * 皮肤部分图标更新 * 鼠标手势的最大长度改为 3 * 标签栏站点图标显示过慢的问题 * 地址栏有焦点时,使用网址一键通等方式...

    uMatrix:uMatrix:指向并单击矩阵以根据源,目标和类型过滤网络请求

    矩阵 绝对适合高级用户。 保留Github问题以获取实际错误。 用户支持为 。 从分叉并重构。 安装,或从以下位置安装: 为了帮助发现正在进行的开发中的问题:uMatrix.webext.signed.xpi (单击最后...站点会崩溃并不奇怪

    Linux管理员指南

    我们乐于学习新东西有两个非常简单的原因:一个是因为新技术本身都很有趣味;另外一个就是我们必须要在CEO(首席执行官)从《Business Week》杂志上读到并问到为什么没有用它之前掌握这项新技术。而Linux看起来就像...

    run-gbb:Run @ GBB的简单日历站点

    是无样式一页起动模板与崩溃,平滑滚动导航栏的创建的。 预习 地位 下载及安装 要开始使用此模板,请选择以下选项之一以开始使用: 通过npm安装: npm i startbootstrap-scrolling-nav 克隆仓库: git clone ...

    Web-Handbook:Sosolimited的Java资源和网络编码的资源集合

    运行以下命令以使kykyll在端口4000上构建并托管该站点。然后在您选择的浏览器中导航到http://localhost:4000/ 。 jekyll serve --baseurl="" 请注意,您可能需要在工作时从命令行多次重启jekyll。 这真是令人崩溃...

Global site tag (gtag.js) - Google Analytics