求助服务器崩溃原因和解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助服务器崩溃原因和解决方法相关的知识,希望对你有一定的参考价值。
在计算机网络日益普及的今天,计算机安全不但要求防治计算机病毒,而且要提高系统抵抗黑客非法入侵的能力,还要提高对远程数据传输的保密性,避免在传输途中遭受非法窃取。下面壹基比小喻来给你们讲讲服务器托管站点崩溃的几大原因。第一,内存泄漏
C/C++程序还可能产生另一个指针问题:丢失对已分配内存的引用。当内存是在子程序中被分 配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要操作系统还在运行中,则进程就会一 直使用该内存。这样的结果是,曾占用更多的内存的程序会降低系统性能,直到机器完全停止工作,才会完全清空内存。
第二,C指针错误
用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引 用指针(即,访问指向的内存)中出现一个错误,就会导致操作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量(analog)将访问一个空的 对象引用。Java中的空引用通常不会导致立刻退出JVM,但是前提是程序员能够使用异常处理方法恰当地处理错误。在这方面,Java无需过多的关注,但 使用Java对可靠性进行额外的度量则会对性能产生一些负面影响。
第三,数据库中的临时表不够用
许多数据库的临时表(cursor)数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。
第四,线程死锁
由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁 时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。我们来想像这样一种情形:在人行道上两个人迎面相遇,为了给对方让 道,两人同时向一侧迈出一步,双方无法通过,又同时向另一侧迈出一步,这样还是无法通过。双方都以同样的迈步方式堵住了对方的去路。假设这种情况一直持续 下去,这样就不难理解为何会发生死锁现象了。
第五,磁盘已满
导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。
日志文件会很快用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、 JDBC日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与操作系统不同的文件系统中。日志文件系统空间已 满时Web服务器也会被挂起,但机器自身被挂起的几率已大大减低。
第六,服务器超载
Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其 它的Web服务器上,这可能会致使这些服务器一个接一个地用光所有的线程。这样一来,整个服务器组都会被挂起。操作系统级别可能还在不断地接收新的连接, 而应用程序(Web服务器)却无法为这些连接提供服务。用户可以在浏览器状态行上看到connected(已连接)的提示消息,但这以后什么也不会发生。
总之,还有许多因素也极有可能导致服务器租用或服务器托管站点无法工作。有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。 参考技术A 服务器崩溃的原因有多种,给您罗列了几种作参考:
第一,内存泄漏;第二,C指针错误;第三,数据库中的临时表不够用;第四,线程死锁;第五,磁盘已满;第六,服务器超载。
面对服务器崩溃解决就由您的技术来处理或者找回服务器供应商处理。建议楼主平时做好安全策略,有数据备份的习惯,减轻服务器崩溃导致的数据损失。 参考技术B 都不知道你问的是啥,指望谁能够回答你 参考技术C 你倒是写出崩溃的错误代码、日志文件之类的啊
java web开发,js自动刷新页面过一段时间后页面会崩溃,,,怎么办,,求助大神!!解决了给冲20话费~~
有这样一个加载百度地图的fuction,,,(其他的无关紧要的就不写了,因为整个网页功能上是正确的,,自己感觉是没有影响,,)
function loadXMLDoc()
var xmlhttp;
var xx,xy,x,i,id,title;
var txt;
if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
。。。。。。。。。
var opts =
position : point, // 指定文本标注所在的地理位置
offset : new BMap.Size(30, -30) //设置文本偏移量
function openInfo(content,e)
var p = e.target;
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象
map.openInfoWindow(infoWindow,point); //开启信息窗口
map.clearOverlays();
for (i=0;i<x.length;i++)
xx=x[i].getElementsByTagName("x");
xy=x[i].getElementsByTagName("y");
id=x[i].getElementsByTagName("id");
。。。。。。。。。。。。
然后问题来了,这是我刷新的
function refresh()
loadXMLDoc(); //坐标点有变,位置需要不断从xml中读
setInterval(refresh,10000);
refresh();
然后这个html撑不过1分钟就要崩溃,,,,怎么办,在loadXMLDoc中有map.clearOverlays(); ,可是还是崩溃,,,
setInterval:
The real delay between func calls for setInterval is less than in the code!
That’s normal, because the time taken by func’s execution “consumes” a part of the interval.
It is possible that func’s execution turns out to be longer than we expected and takes more than 100ms.
In this case the engine waits for func to complete, then checks the scheduler and if the time is up, runs it again immediately.
In the edge case, if the function always executes longer than delay ms, then the calls will happen without a pause at all.
setTimeout:
The recursive setTimeout guarantees the fixed delay (here 100ms).
That’s because a new call is planned at the end of the previous one.
举例:
参考技术A 呵呵,把setinterval改成setTimeout就行了。setInterval只需要调用一次就会不停的循环,你这样的话,会造成很多的refresh被循环调用。算了,不给你细说了,你自己看看setInterval和setTimeout的区别,然后再考虑下函数执行的过程就会明白了。网页之所以崩溃,是因为执行了太多的refresh函数。本回答被提问者采纳
以上是关于求助服务器崩溃原因和解决方法的主要内容,如果未能解决你的问题,请参考以下文章
求助OA中"officeOpenFile:对象不支持此属性或方法"的解决方法