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

时间:2012-02-25 19:44:03 

有许多种原因可能导致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命令可以增加文件描述符的数目。

标签:web,磁盘
0
投稿

猜你喜欢

  • 浅淡新手如何宣传英语网站

    2010-03-03 08:03:00
  • Web2.0中的用户与人

    2007-09-19 11:45:00
  • 用MDaemon搭建邮件服务器(下)

    2007-11-23 13:39:00
  • 提高网页关键词排名的实用方法

    2009-03-11 11:08:00
  • 福建网民866万 全国居第六

    2008-02-21 13:37:00
  • 令人尊敬的企业华为:每隔10年遇一个天花板

    2009-10-12 16:57:00
  • Google AdSense 提升网站广告收益秘技大公开

    2009-04-16 15:15:00
  • Adsense PIN 码最新更新

    2008-02-11 18:40:00
  • 十款最佳Blog编辑软件

    2007-12-12 13:33:00
  • 链接诱饵案例 从一个留言插件引发的思考

    2009-02-19 10:20:00
  • PHPWind v7.3.2阅读帖子时左边只显示用户名头像和级别

    2009-05-31 17:26:00
  • Linux下Sendmail服务器转发功能的讲解

    2010-03-12 19:13:00
  • 分析称微软推Windows Phone属于跟风之举

    2009-10-22 15:43:00
  • Windows服务有“备”无患

    2007-08-17 15:10:00
  • 元创:网站SEO经验心得分享

    2009-03-25 14:12:00
  • 新手站长使用discuz建站经验分享

    2009-11-07 13:52:00
  • Google Admanager广告管理系统整合AdSense

    2009-03-11 13:07:00
  • eWebeditor的漏洞利用

    2009-11-03 13:15:00
  • 站长托管服务器之前必做的六件事

    2009-09-02 14:57:00
  • FreeBSD下nginx并支持php配置详解

    2010-03-04 16:31:00
  • asp之家 网站运营 m.aspxhome.com