转载自:

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

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

2. C指针错误

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

3. 内存泄漏

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

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

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

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

4. 进程缺乏文件描述符

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

5. 线程死锁

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

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

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

6. 服务器超载

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

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

7. 数据库中的临时表不够用

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

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

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

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

https://blog.csdn.net/u012981511/article/details/53503242

web服务启动后mysql崩溃_让Web站点崩溃最常见的七大原因相关推荐

  1. sq服务启动后又停止_“本地计算机上的SQL SERVER服务启动后又停止了”解决方法...

    本方法主要是解决SQL Server运行过程中出现的"本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的"解决方法. 笔者ASP运行环 ...

  2. 【解决】mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

    最近写一个Java Web的项目,需要用到 mysql 数据库,在计算机管理中启动时,发现 mysql 报错:mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动 ...

  3. mysql 8 启动失败(本地计算机上的mysql服务启动后停止。某些服务再未由其他服务或程序使用时将自动停止)

    注:该类问题可能有多种情况造成的,所以大家先看看mysql的日志,了解报错的原因再着手解决服务启动不了的问题吧 mysql 8.0.20 启动失败,失败提示信息:本地计算机上的mysql服务启动后停止 ...

  4. 本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。

    问题:在win10服务下手动启动Mysql57(自定义的mysql服务名)报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止. 我的解决方案: 1.以管理员身份 ...

  5. 关于mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止问题

    背景:由于某些原因,服务器需要重启一下,结果重启完就出现这个mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止问题,一想到平时偷懒没有做数据库自动备份,当时 ...

  6. 本地计算机上的mysql服务启动后停止

    本地计算机上的mysql服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止 方法一 先备份.找到MySQL的data文件夹,把data里的数据库名文件夹以及ibdata1文件复制一份. 删除 ...

  7. 本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动...

    重新安装MySQL数据库,由于安装的时候马虎,一路next(事实上,某些地方需要严格的配置,我忘记注意了),导致现在出了很多麻烦. 错误信息: 本地计算机上的MySQL服务启动后停止.某些服务在未由其 ...

  8. 【问题解决】本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。

    新装了MySQL8.0+的版本,MySQL服务关闭后,cmd窗口下net start mysql重新启动时无法启动,没报任何错误.于是想到打开services.msc手动开启MySQL服务,但是系统提 ...

  9. windows系统下Mysql服务启动后立即关闭问题-排查及解决方法

    文章目录 1. 问题情况: 1.1 启动 1.2 短暂显示启动成功 1.3 显示停止 2. 解决方法: 2.1 查看日志: 2.1.1 到指定目录下 2.1.2 排查日志,发现了两条ERROR语句: ...

最新文章

  1. Xcode10新变化
  2. 白话Elasticsearch54-数据建模之通过【应用层join】或者【数据冗余】实现实现用户与博客的关联
  3. Python数据可视化1.2 数据转换
  4. 利用SecureCRT在linux与Windows之间传输文件
  5. SP2010开发和VS2010专家食谱--第七章节--使用客户端对象模型(2)--Handling exceptions...
  6. 学习笔记 9.22 -9.29 补
  7. java.util.current_Java基础知识-java.util.concurrent包下常见类的使用
  8. SLAM笔记------------------(1)
  9. SQL Server 2008 R2每天自动备份数据库
  10. 潮汕地区2-汕头观感
  11. CSDN博客运营团队2022年H1总结
  12. 如何进行产品原型设计
  13. 随机梯度下降法,批量梯度下降法和小批量梯度下降法以及代码实现
  14. 防火墙技术及应用(一)
  15. 厉害!「标题党」文章都能用 Python 分析出来
  16. Jython 调用 Java 碰壁全纪录
  17. 【免费开放源码】审批类小程序项目实战(活动历史页面)
  18. Vue3 学习总结笔记 (十四)
  19. flex-gow 的用法
  20. eclipse中如何调出提示?

热门文章

  1. Ubuntu登录异常: 输入正确的密码, 但是却无法进入系统, 总是返回到登录界面, 但是用ctrl+alt+F1-F文字界面登录都可以进入。
  2. 解决ajax无法给js全局变量赋值的问题
  3. Android闹钟设置的解决方案
  4. 如何使用JavaScript获取客户端的IP地址?
  5. c++ file* 句柄泄漏_C/C++连接MySql数据库使用总结
  6. 华硕笔记本重装系统按哪个键进u盘启动项
  7. mybatis与Spring整合配置文件
  8. JDBC工具类DataSourceUtils,dao接口代码示例;
  9. 洛谷——P1914 小书童——凯撒密码
  10. 操作元素之表单属性设置