服务器崩溃常见原因

开发过程中会遇到程序崩溃的问题,大多数开发人员会去看日志,根据日志文件来排查崩溃原因,通过debug解决,然而有时程序崩溃时,日志并不能记录,或来不及记录,以下几种引起程序崩溃的原因:

1. 控制台打印日志造成:
部分开发人员习惯在控制台打印日志,最常见的就是打印sql语句,当大量请求到数据库的时候,就会对系统造成一定的压力,特别是批量新增或更新的时候,控制台不断大量的打印日志就会造成系统爆满,垃圾回收机制来不及对其进行垃圾回收,就必然会造成程序宕机。
解决方案:
加大内存,关闭控制台日志打印,将日志文件存储到对应日志文件中,或者改变sql语句日志等级;
set -Xms512m -Xmx4096m -XX:PermSize=512M -XX:MaxNewSize=256m -XX:MaxPermSize=1024m
注意:最大内存设置不要超过电脑本身内存。
** 2. 访问量过大,服务器超载**
正如每年的双十一,总会有那么一瞬间会提示服务器崩溃,稍后再进之类的,因为服务器请求都是需要排队的,当高并发情况下,队列已满,服务器便会开始丢弃部分请求继续增大网络请求,操作系统TCP协议栈也开始丢弃请求…如此一来便崩掉啦;
解决方案:
一定的解决方案就是解决高并发问题,有关高并发问题会另详细说明;以下有一个不错的分析。
添加链接描述
3.内存泄漏
当内存在子程序中被分配时,通常会出现程序从子程序中返回时没有释放内存,导致已分配的内存引用丢失,只要系统在运行状态,进程就会一直使用该内存,造成内存泄漏,服务器崩溃
4.引用了空对象
最常见的,数组下标越界
5.线程死锁
6.数据库临时表不够用
临时表即保留查询结果的内存区域,许多数据库临时表数目固定,当临时表数据都被读取后,释放临时表。但是高并发的查询可能耗尽固定的临时表数目,此时其它查询就要排队等候直到有临时表被释放。
像是网络出错、磁盘已满,系统原因,程序版本不兼容,设置文件有误等都会导致崩溃,很多情况是开发人员考虑不够周全或是不够细心造成的bug引起的崩溃。
后续更新…

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值