有许多种原因可能导致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站点崩溃最常见的原因之一。随着Web应用的日志记录、文件存储等功能的不断使用,磁盘空间很容易被填满。特别是对于那些没有及时清理日志文件和...
iis Web站点崩溃的原因分析 iis Web站点崩溃的原因分析是指Web站点无法正常工作的原因分析。这种情况可能是由于多种原因所致,使得系统地检查所有问题变得很困难。下面将集中分析总结导致Web站点崩溃的最常见的问题...
### 构建高性能WEB站点 在当今互联网时代,WEB站点成为了企业和个人展示自己、与用户交互的重要平台。一个高性能的WEB站点不仅能够提供快速、稳定的服务体验,还能够在搜索引擎优化(SEO)、用户体验等方面发挥重要...
在构建大型Web站点时,架构设计是至关重要的,它直接影响着网站的性能、稳定性和可扩展性。以下是一些核心的架构设计知识点: 1. **HTML静态化**:静态HTML页面是网页性能优化的关键,因为它减少了服务器处理动态...
文章首先介绍了 IIS 的基本概念和 Web 服务器的重要性,然后详细介绍了如何在域环境下部署多台 Web 服务器,使用导出配置与启用共享的配置等技术来确保站点数据的一致性,并通过配置 DNS 服务实现简单的 Web 负载...
- **站点地图与导航条**:检查站点地图和导航条的位置是否合理,能否引导用户顺利导航。 - **布局合理性**:确保页面布局合理,滚动条使用得当,文本描述准确无误。 - **视觉效果**:评估背景色和色调是否美观,是否...
6. **虚拟主机**:软件允许在同一台服务器上设置多个独立的Web站点,通过虚拟主机功能,用户可以管理多个域名和子域。 7. **访问控制**:它支持基于IP地址的访问控制,可以限制特定IP的访问,保护服务器免受恶意...
Web前端安全问题是指在Web前端中存在的安全隐患,包括跨站点脚本攻击、跨站请求伪造、界面操作劫持等问题,这些问题可能会导致用户敏感数据的丢失、财产损失、网站崩溃等严重后果。因此,Web开发人员必须采取相应的...
如果多个Web应用程序共用一个应用程序池,则可能存在安全风险,因为一个应用程序的崩溃可能会导致整个应用程序池中的W3wp进程退出,从而影响到其他Web应用程序。因此,如果内存资源允许,通常建议为每个Web应用程序...
攻击者一旦利用这种漏洞,可以在系统账户的上下文中执行任意代码,可能会使IIS服务器崩溃(蓝屏)或暴露敏感信息。 【IIS的基本结构】 IIS主要由协议监听器组成,如HTTP和HTTPS监听器HTTP.sys,这是一个内核模式的...
- **崩溃点探测**:通过模拟极端条件找出系统崩溃的临界点。 - **故障恢复能力**:验证系统在遭遇压力攻击后的恢复能力。 #### 三、可用性测试 **1. 导航测试** 良好的导航设计有助于提升用户体验。测试要点包括...
6. Web站点崩溃的原因: - 内存溢出:测试输入大量数据或超出范围的数据,观察系统反应。 - 信息泄漏:查看系统是否泄露敏感信息,如错误消息、版本信息等。 - 错误处理:测试错误情况下系统的响应,确保没有暴露...
- 图片是Web服务器资源消耗的大户,因此将图片服务独立于应用服务器可以减轻服务器压力,防止因图片请求导致系统崩溃。独立的图片服务器甚至图片服务器集群可以进行特定的配置优化,如Apache仅支持必要的MIME类型,...
- **异常处理**:确保有良好的异常处理机制,防止程序异常导致的系统崩溃。 - **日志记录**:记录详细的系统日志,便于排查问题和性能分析。 - **性能监控**:使用工具(如Application Insights)持续监控系统...
13. **让Web站点崩溃的常见原因**:如内存泄漏,数据库连接池耗尽,服务器负载过高,代码错误等,这些都需要在测试中进行预防。 14. **跨站脚本(XSS)漏洞**:测试Web应用是否对用户输入进行了充分的过滤和编码,...
- 配置IIS包括在控制面板中打开“管理工具”>“Internet服务管理器”,新建Web站点,并指定IP地址(如本机IP)、默认端口(通常是80)和Web主目录路径。 3. **ASP论坛搭建**: - ASP(Active Server Pages)是...
有些Web系统不能通过站点地图、搜索引擎或其他的导航寻求帮助 * 图形测试:确保图形用途不明确,图片或动画胡乱地堆在一起 * 内容测试:Web应用系统提供的信息失去正确性,信息不是可靠的或误传的 * 整体界面测试:...
WEB 漏洞含义解释 ...WEB 漏洞的存在可能会导致网站用户信息泄露、网站崩溃、服务器控制权被窃取等严重的后果。因此,网站管理员需要对网站进行定期的安全检查和维护,防止攻击者利用漏洞进行攻击。
要做到主题鲜明突出,力求简洁,要点明确,以简单明确的语言和画面告诉大家本站点的主题,吸引对本站点有需求的人的视线,对无关的人也能留下一定的印象。 三、版式编排布局合理 网页设计作为一种视觉语言,当然要...