为什么网站总出来崩溃的
面试某公司的时候,面试官问到,导致浏览器崩溃的原因有哪些?愚辈不才,仅回答出了内存泄漏。其实在网页在装载的过程中,常常由于种种原因使浏览器的反映变的很慢,或造成浏览器失去响应,甚至会导致机器无法进行其他的操作。 对于访客,如果登录您网站,浏览器就立刻崩溃,我想这对谁都是无法容忍的,对此总结了网站导致浏览器崩溃的原因: 1 内存泄漏 还是先谈下内存泄漏,网站由于内存泄漏的而照成崩溃有两种情况,服务器的崩溃和浏览器的崩溃。内存泄漏所造成的问题是显而易见的,它使得已分配的内存的引用就会丢失,只要系统还在运行中,则进程就会一直使用该内存。这样的结果是,曾占用更多的内存的程序会降低系统性能,直到机器完全停止工作,才会完全清空内存。 Apache的Web服务器是用C/C++编写的,C/C++的内存泄漏问题不必多说,系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。在Java中,内存泄漏就是存在一些被分配的可达而无用的对象,这些对象不会被GC所回收,然而它却占用内存。 而在客户端,JavaScript所造成的内存泄漏,也将可能使得浏览器崩溃。关于JavaScript的内存泄漏的文章,较权威的有《Memory leak patterns in JavaScript》和《Understanding and Solving Internet Explorer Leak Patterns》。 JavaScript 是一种垃圾收集式(garbage collector,GC)语言,这就是说,内存是根据对象的创建分配给该对象的,并会在没有对该对象的引用时由浏览器收回。再根据《Fabulous Adventures In Coding》一文的说法:“JScript uses a nongenerational mark-and-sweep garbage collector”,对” nongenerational mark-and-sweep”的可以这样理解,浏览器处理JavaScript并非采用纯粹的垃圾收集,还使用引用计数来为Native对象(例如Dom、ActiveX Object)处理内存。 在引用计数系统,每个所引用的对象都会保留一个计数,以获悉有多少对象正在引用它。如果计数为零,该对象就会被销毁,其占用的内存也会返回给堆。 当对象相互引用时,就构成循环引用,浏览器(IE6,Firefox20)对于纯粹的JavaScript对象间的循环引用是可以正确处理的,但由于在引用计数系统,相互引用的对象都不能被销毁,因为是引用计数永远不能为零,因此浏览器无法处理JavaScript与Native对象(例如Dom、ActiveX Object)之间循环引用。所以,当我们出现Native对象与JavaScript对象间的循环引用时,就会出现内存泄漏的问题。 简单来说就是,浏览器使用引用计数来为Native对象处理内存,而引用计数的对象无法被销毁,涉及Native对象的循环引用将会出现内存泄漏。配合下面的例子,理解这句话,基本上就可以理解JavaScript造成的内存泄漏了。 var obj; windowonload = function(){ // JavaScript对象obj到DOM对象的引用,根据id获得 obj=documentgetElementById("DivElement"); // DOM 对象则有到此 JavaScript 对象的引用,由expandoProperty实现 documentgetElementById("DivElement")expandoProperty=obj; }; 可见,JavaScript 对象和 DOM 对象间就产生了一个循环引用。由于 DOM 对象是通过引用计数管理的,所以两个对象将都不能销毁。 另一种情况是闭包中,当碰到闭包,我们在Native对象上绑定事件响应代码时,很容易制造出Closure Memory Leak。其关键原因和前者是一样的,也是一个跨JavaScript对象和Native对象的循环引用。只是代码更为隐蔽。 windowonload = function AttachEvents(element){ //element有个引用指向函数ClickEventHandler() elementattachEvent( " onclick " , ClickEventHandler); function ClickEventHandler(){ //该函数有个引用指向AttachEvents(element)调用Scope, //也就是执行了参数element。 } } 这里简单理解了JavaScript造成内存泄漏的原因,内存泄漏加大浏览器的负担,很有可能导致浏览器崩溃,我们要做的就是尽量去避免这种情况,做法可参考刚刚所说《Memory leak patterns in JavaScript》和《Understanding and Solving Internet Explorer Leak Patterns》两篇文章加以理解。处理JavaScript内存泄漏最终目的还是要打破JavaScript对象和Native对象间的循环引用或者清零引用计数,释放对象。 一些内存泄漏如闭包内存泄漏,我们可能比较难以发现,内存泄漏的检测我们可能参考《javascript 内存泄露工具使用》。 2 网页代码复杂和浏览器bug 大量个人网站和低质量网站代码的涌现造成对浏览标准的普遍不支持,如果正好碰上浏览器存在的一些bug,浏览器渲染引擎在处理这些网页代码的时候会出错,比如陷入死循环或直接崩溃等。 HTML代码导致网站崩溃 这是HTML结构错误而导致IE6的崩溃,在<col width="100"/>前或后添加任何字符均会导致IE6 Crash。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN"" http://wwww3org/TR/html4/loosedtd"> <html><head></head><body> <table> <tr> <td> <table style="width:100%;table-layout:fixed;"> <colgroup><col width="100px"><col></colgroup> </table> </td> </tr><table></body></html> 该代码来个韩国的一个网站,无论是使用XHTML或者HTML的什么版本,只要带了DOCTYPE声明,IE6就会立即崩溃,当不带DOCTYPE声明的时候就没有错误,原因可能跟文档类型声明有关。 令IE6崩溃的CSS代码 该代码参考自网站Cats who Code。该Bug发现与2007年,据说是一名日本人发现的: <style>{position:relative}</style><table><input></table> 原因在于table中直接放置内容,在IE6会引起mshtmldll模块损坏而关闭浏览器,非IE6则安全无恙。 除此之外,存在于IE6的Bug还有下面这种情况,当伪类为 a:active 时同样会遇到此问题: <style type="text/css"> a{position:relative;} a:hover{float:left;} </style><a href="">崩溃IE6 ,crash ie6</a> 解决方案:为 <a> 添加 zoom:1; 令其触发haslayout。 <style type="text/css"> a{position:relative;zoom:1;} a:hover{float:left;} </style> 令IE7崩溃的CSS代码 此Bug来自偷米饭,它只存在IE7中据估计是处理省略字的时候导致IE7崩溃。 <style type="text/css"> div{float:left;width:175px;} ul{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;} li{position:relative;} </style><div> <ul> <li>崩溃崩溃崩溃崩溃崩溃crash ie7</li> <li>崩溃崩溃崩溃崩溃崩溃crash ie7</li> </ul></div> 解决方案:为 <li> 添加 zoom:1; 令其触发haslayout 令IE6崩溃的JavaScript代码 来自Internet Explorer Sucks,这个网站就是使用了一下代码,当你使用IE6访问的时候,浏览器将立刻崩溃。代码如下: <script>for (x in documentwrite) { documentwrite(x);}</script> 具体引起的原因暂时无法解析,但在兼容性和执行效率来看一般不会采取这样的写法。 3 网页数据过多 网页含有大量需要处理的数据,造成系统繁忙,如多图页面,超长页面等,或者网页内嵌的各种控件会导致浏览器处理大量数据,造成系统繁忙。如Flash游戏,ActiveX控件等。当浏览器访问网站的时候,如果网站的数据量大,会使得浏览器一般在处理过程中会占用很大的CPU使用率和内存、造成浏览器失去响应,甚至会使电脑系统死机。在网站开发的时候,如果充分考虑Web性能,很大程度上能避免这个问题。 4 Ajax的Web服务漏洞 Ajax的是基于XML的异步传输,文本格式的XML消息可能是二进制数据带宽量的两倍之多。传输XML消息所需的带宽越多,系统或应用程序用来执行其他任务的可用资源就越少。例如执行复杂算法来获取期望结果。 过高的带宽可能导致由系统超载引起的性能减退。过高的带宽将导致Ajax应用程序输出破损的数据,因为没有足够的资源生成干净的数据。这意味着Web服务门户(Ajax应用程序属于其中的一部分)将把破损数据暴露给门户的其他部分,从而导致畸形消息和过度解析。如果威胁者利用了这个漏洞,则会引起浏览器崩溃。 另外一方面,频繁的、较小的 HTTP 请求会加重后端服务器、负载均衡程序和防火墙的负担,结果是造成过高的带宽,最终导致性能降低。如果客户端长期停留在该页面或没有关闭浏览器,会使得浏览器的内存持续上涨,得不到释放,导致客户端浏览器崩溃。 为此,在较多的时候Ajax的时候,我们要考虑通过专门的硬件加速器、优化软件、消除代码冗余、XML加速功能和解决互操作性问题等方式加速Ajax应用程序。另外,积极地监视通信流可以持续地度量Ajax应用程序的网络流量性能。通过将数据放入实时日志中,您可以查看在哪些位置何时出现大量的包丢失和抖动事件,响应变慢的原因以及如何通过修改应用程序的优先级来改善通信流性能。 5 其他原因 除以上提到的原因之外,还有其他许多原因,虽然有些不会导致浏览器直接崩溃,但也会造成网站无法访问,如日志文件导致磁盘已满、Web服务器C指针错误、进程缺乏文件描述符、线程死锁、数据库中的临时表不够用和服务器超载等,可参考《导致Web站点崩溃最常见的七大原因》。 总结 对于访客,如果登录您网站,浏览器就立刻崩溃,我想这对谁都是无法容忍的,通过总结《网站令浏览器崩溃的原因》,在我们从事网站开发维护的时候,我们应该尽量去避免内存泄漏、代码错误和冗余及数据量过大等问题,构建更佳性能的站点。
记得采纳啊
服务器崩溃带来的影响是相当大的
1、服务器运行不了,网站就不能正常打开,浏览网页就不得不终止
2、视频网站打不开,游戏不能正常玩等等
3、不仅给广大的网民带来不便,更给以网站来挣钱的商家带来更大的损失
近日,中国最热门的手机游戏之一,王者荣耀,遭遇了一次重大的服务器故障,导致全国各地的玩家无法正常登录游戏。这一突发事件引发了广泛的关注和讨论,许多玩家纷纷表达了他们对游戏崩溃的失望和不满。
故障发生的原因
据官方透露,这次服务器故障是由一次意外的硬件故障引起的。在游戏服务器的数据中心,一台关键的服务器硬件出现了故障,导致整个系统崩溃。技术团队立即展开了紧急修复工作,但是由于问题的复杂性和服务器规模庞大,修复过程需要一定的时间。
影响和损失
这次服务器故障给王者荣耀的运营方带来了巨大的损失。首先,由于游戏无法正常运行,大量的玩家无法登录游戏,这导致了游戏收入的大幅下降。其次,许多玩家对游戏的不满情绪也进一步加剧,甚至有部分玩家选择了离开游戏,这对游戏的用户留存和口碑造成了严重的打击。
此外,王者荣耀作为一款在线游戏,也需要保持与其他游戏平台和社交媒体的互通。然而,由于服务器故障,游戏无法正常与其他平台进行交互,这也给游戏的推广和社区建设带来了一定的影响。
修复过程
面对这次重大的服务器故障,王者荣耀的技术团队迅速组织了紧急修复工作。首先,他们对受影响的服务器进行了全面的检查和维修,以确保硬件故障得到彻底解决。然后,他们对整个游戏系统进行了全面的测试和优化,以确保在修复后能够正常运行。
在修复过程中,玩家们也积极配合,提供了大量有关游戏崩溃的反馈和建议。技术团队根据这些反馈和建议,进一步完善了游戏系统,并对服务器进行了一系列的优化和升级。
王者荣耀崩了,玩家们的反应
这次服务器故障让许多玩家感到非常失望和沮丧。许多玩家表示,他们每天都把王者荣耀当作重要的娱乐方式,而这次故障让他们无法正常进行游戏,让他们感到非常不满。
然而,也有一部分玩家对这次故障表示理解和支持。他们认为,在游戏运营过程中,故障是不可避免的,关键是运营方能够及时处理和修复问题,并向玩家们做出合理的补偿。他们相信,王者荣耀的运营方会尽快解决这次故障,并为玩家们提供一个更好的游戏环境。
微博被下面的明星搞瘫痪了。
鹿晗和关晓彤正式公布恋情。
2017年,因拍摄《甜蜜暴击》,当时的顶级演员鹿晗在微博正式公布了与关晓彤的恋情,关晓彤也做出了回应。鹿晗这条微博的阅读量也已经突破10亿。难怪微博买不起。
王马蓉离婚了
2016年8月,王在微博发布离婚消息,爆出令人震惊的离婚内幕。八卦的人怎么会甘于落后?为了获得第一手资料,他们都在微博里蹲着,关注着事态的发展。
不能容忍恶意背叛婚姻,破坏家庭。
此言一出,引起了大批吃瓜者的关注。
Kimi死了。
2016年9月,28岁的青年演员Kimi在家中自杀。微博消失发布后,转发和评论更多,微博甚至直接“崩溃”。通过Kimi在《加油好男儿》中的出道,她曾出演过《鲁镇传奇》中的高性能一角,并在综艺节目《我们相爱吧》中与露露组成情侣,获得了超高人气。
赵结婚。
当众多媒体还在追影的时候,赵在微博中正式宣布,没有公布恋情,而是直接公布了领证。一个是大众花,一个是大众小众。他们结婚的消息一出,人们蜂拥而至,导致微博再次瘫痪。
朱一龙瘫痪微博四次。
在朱一龙《镇魂》大火的帮助下,并没有特别的消息,甚至一条普通的微博就引起了无数的围观。而且不止一次,他发了四条微博,让微博瘫痪了四次。不知道是微博有问题还是朱一龙真的这么火!
林志玲宣布结婚。
没有人想到,凌志,一个四十多岁的姐姐,嫁给了一个日本人,而不是言承旭人。好奇、愤怒、不解的粉丝或非粉丝都去微博一探究竟。
人人视频显示服务器异常,这主要是因为App的总服务器崩溃了,或者由于网络不是很顺畅导致视频播放失败,此时人人视频接口就会出现异常情况。
此时您应该检查一下手机的网络情况,确认网速没有受到限制,之后您再次登录人人视频,这样就可以正常观看其中的视频内容了。
如果在人人视频中还是无法观看某些视频,那么有可能是因为您观看的视频涉及到了版权方面的问题。
如果您现在使用的是无线局域网的话,那么您可以打开人人视频App进入首页,然后点击右下角“我的”按钮,接着点击“设置”按钮,进入后将联网控制中的网络选项打开即可。
人人视频使用小技巧:查看观看历史--在人人视频App中点击右下角“我的”按钮,然后在常用功能一栏中点击“观看历史”按钮,进入后就可以看到自己曾经观看的**、电视剧以及其它视频。
观看历史记录本身有时候会产生一部分的缓存内容,在“设置”选项中点击“清理缓存”按钮会将过往历史记录一并删除,删除以后不能恢复,因此要慎重操作。
会。根据查询太平洋电脑网显示,对于服务器来说,始终是最消耗系统资源的,将服务和应用服务放在同一服务器的话,应用服务器很容易会因为负载而崩溃。服务器指的是网络环境下为客户机提供某种服务的专用计算机,服务器安装有网络操作系统和各种服务器应用系统软件的计算机。
0条评论