A. java web開發,js自動刷新頁面過一段時間後頁面會崩潰,,,怎麼辦,,求助大神!!解決了給沖20話費~~
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 scheler 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.
舉例:
B. 為什麼網站總出來崩潰的
面試某公司的時候,面試官問到,導致瀏覽器崩潰的原因有哪些?愚輩不才,僅回答出了內存泄漏。其實在網頁在裝載的過程中,常常由於種種原因使瀏覽器的反映變的很慢,或造成瀏覽器失去響應,甚至會導致機器無法進行其他的操作。 對於訪客,如果登錄您網站,瀏覽器就立刻崩潰,我想這對誰都是無法容忍的,對此總結了網站導致瀏覽器崩潰的原因: 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,Firefox2.0)對於純粹的JavaScript對象間的循環引用是可以正確處理的,但由於在引用計數系統,相互引用的對象都不能被銷毀,因為是引用計數永遠不能為零,因此瀏覽器無法處理JavaScript與Native對象(例如Dom、ActiveX Object)之間循環引用。所以,當我們出現Native對象與JavaScript對象間的循環引用時,就會出現內存泄漏的問題。 簡單來說就是,瀏覽器使用引用計數來為Native對象處理內存,而引用計數的對象無法被銷毀,涉及Native對象的循環引用將會出現內存泄漏。配合下面的例子,理解這句話,基本上就可以理解JavaScript造成的內存泄漏了。 var obj; window.onload = function(){ // JavaScript對象obj到DOM對象的引用,根據id獲得 obj=document.getElementById("DivElement"); // DOM 對象則有到此 JavaScript 對象的引用,由expandoProperty實現 document.getElementById("DivElement").expandoProperty=obj; }; 可見,JavaScript 對象和 DOM 對象間就產生了一個循環引用。由於 DOM 對象是通過引用計數管理的,所以兩個對象將都不能銷毀。 另一種情況是閉包中,當碰到閉包,我們在Native對象上綁定事件響應代碼時,很容易製造出Closure Memory Leak。其關鍵原因和前者是一樣的,也是一個跨JavaScript對象和Native對象的循環引用。只是代碼更為隱蔽。 window.onload = function AttachEvents(element){ //element有個引用指向函數ClickEventHandler() element.attachEvent( " 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 4.01 Transitional//EN"" http://www.w3.org/TR/html4/loose.dtd"> <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會引起mshtml.dll模塊損壞而關閉瀏覽器,非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 document.write) { document.write(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站點崩潰最常見的七大原因》。 總結 對於訪客,如果登錄您網站,瀏覽器就立刻崩潰,我想這對誰都是無法容忍的,通過總結《網站令瀏覽器崩潰的原因》,在我們從事網站開發維護的時候,我們應該盡量去避免內存泄漏、代碼錯誤和冗餘及數據量過大等問題,構建更佳性能的站點。
記得採納啊
C. 用myeclipse開發了一個java web程序,發布之後在瀏覽器打開,每次一登錄瀏覽器占內存就很大,然後就崩潰
檢查你的web程序是否包含了死循環。
一般來說這個問題會導致內存不停增大,直至崩潰。
D. Web前端工程師如何處理Web前端的異常_
今天小編要跟大家分享的文章是關於Web前端工程師如何處理前端的異常。前端一直是距離用戶最近的一層,隨著產品的日益完善,我們會更加註重用戶體驗,而前端異常卻如鯁在喉,甚是煩人。下面我們就來看一看前端工程師該如何處理前端異常。一、為什麼要處理異常異常是不可控的,會影響最終的呈現結果,但是我們有充分的理由去做這樣的事情。
1.增強用戶體驗;
2.遠程定位問題;
3.未雨綢繆,及早發現問題;
4.無法復線問題,尤其是移動端,機型,系統都是問題;
5.完善的前端方案,前端監控系統;
對於JS而言,我們面對的僅僅只是異常,異常的出現不會直接導致JS引擎崩潰,最多隻會使當前執行的任務終止。二、需要處理哪些異常?對於前端來說,我們可做的異常捕獲還真不少。總結一下,大概如下:
·___S語法錯誤、代碼異常
·___JAX請求異常
·___蔡試醇釉匾斐
·___romise異常
·___frame異常
·___纈_cripterror
·___覽:塗ǘ
下面我會針對每種具體情況來說明如何處理這些異常。三、Try-Catch的誤區try-catch只能捕獲到同步的運行時錯誤,對語法和非同步錯誤卻無能為力,捕獲不到。
1.同步運行時錯誤:
try{
letname='jartto'
console.log(nam);
}catch(e){
console.log('捕獲到異常:',e);
}
輸出:
捕獲到異常:ReferenceError:namisnotdefined
at:3:15
2.不能捕獲到語法錯誤,我們修改一下代碼,刪掉一個單引號:
try{
letname='jartto;
console.log(nam);
}catch(e){
console.log('捕獲到異常:',e);
}
輸出:
UncaughtSyntaxError:Invalidorunexpectedtoken
不過語法錯誤在我們開發階段就可以看到,應該不會順利上到線上環境。
3.非同步錯誤
try{
setTimeout(()=>{
undefined.map(v=>v);
},1000)
}catch(e){
console.log('捕獲到異常:',e);
}
我們看看日誌:
UncaughtTypeError:Cannotreadproperty'map'of
undefined
atsetTimeout(:3:11)
並沒有捕獲到異常,這是需要我們特別注意的地方。四、window.onerror不是萬能的當JS運行時錯誤發生時,window會觸發一個ErrorEvent介面的error事件,並執行window.onerror()。/**
*@param{String}message錯誤信息
*@param{String}source出錯文件
*@param{Number}lineno行號
*@param{Number}colno列號
*@param{Object}errorError對象(對象)
*/
window.onerror=function(message,source,lineno,colno,error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
1.首先試試同步運行時錯誤
window.onerror=function(message,source,lineno,colno,
error){
//message:錯誤信息(字元串)。
//source:發生錯誤的腳本URL(字元串)
//lineno:發生錯誤的行號(數字)
//colno:發生錯誤的列號(數字)
//error:Error對象(對象)
console.log('捕獲到異常:',{message,source,lineno,colno,
error});
}
Jartto;
可以看到,我們捕獲到了異常:
2.再試試語法錯誤呢?
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
letname='Jartto
控制台列印出了這樣的異常:
UncaughtSyntaxError:Invalidorunexpectedtoken
什麼,竟然沒有捕獲到語法錯誤?
3.懷著忐忑的心,我們最後來試試非同步運行時錯誤:
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
setTimeout(()=>{
Jartto;
});
控制台輸出了:
捕獲到異常:{message:"Uncaught
ReferenceError:Jarttoisnotdefined",source:
"http://127.0.0.1:8001/",lineno:36,colno:5,error:
ReferenceError:Jarttoisnotdefined
atsetTimeout(http://127.0.0.1:8001/:36:5)}
4.接著,我們試試網路請求異常的情況:
我們發現,不論是靜態資源異常,或者介面異常,錯誤都無法捕獲到。
補充一點:window.onerror函數只有在返回true的時候,異常才不會向上拋出,否則即使是知道異常的發生控制台還是會顯示UncaughtError:xxxxx
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
returntrue;
}
setTimeout(()=>{
Jartto;
});
控制台就不會再有這樣的錯誤了:
UncaughtReferenceError:Jarttoisnotdefined
atsetTimeout((index):36)
需要注意:onerror最好寫在所有JS腳本的前面,否則有可能捕獲不到錯誤;onerror無法捕獲語法錯誤;
到這里基本就清晰了:在實際的使用過程中,onerror主要是來捕獲預料之外的錯誤,而try-catch則是用來在可預見情況下監控特定的錯誤,兩者結合使用更加高效。
問題又來了,捕獲不到靜態資源載入異常怎麼辦?五、window.addEventListener當一項資源(如圖片或腳本)載入失敗,載入資源的元素會觸發一個Event介面的error事件,並執行該元素上的onerror()處理函數。這些error事件不會向上冒泡到window,不過(至少在Firefox中)能被單一的window.addEventListener捕獲。
window.addEventListener('error',(error)=>{
console.log('捕獲到異常:',error);
},true)
控制台輸出:
SHAPE*MERGEFORMAT
由於網路請求異常不會事件冒泡,因此必須在捕獲階段將其捕捉到才行,但是這種方式雖然可以捕捉到網路請求的異常,但是無法判斷HTTP的狀態是404還是其他比如500等等,所以還需要配合服務端日誌才進行排查分析才可以。
需要注意:
·___煌榔饗路禱氐_rror對象可能不同,需要注意兼容處理。
·___枰⒁獗苊_ddEventListener重復監聽。六、PromiseCatch在promise中使用catch可以非常方便的捕獲到非同步error,這個很簡單。
沒有寫catch的Promise中拋出的錯誤無法被onerror或try-catch捕獲到,所以我們務必要在Promise中不要忘記寫catch處理拋出的異常。
解決方案:為了防止有漏掉的Promise異常,建議在全局增加一個對unhandledrejection的監聽,用來全局監聽UncaughtPromiseError。使用方式:
window.addEventListener("unhandledrejection",
function(e){
console.log(e);
});
我們繼續來嘗試一下:
window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕獲到異常:',e);
returntrue;
});
Promise.reject('promiseerror');
可以看到如下輸出:
那如果對Promise不進行catch呢?
window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕獲到異常:',e);
returntrue;
});
ewPromise((resolve,reject)=>{
reject('jartto:promiseerror');
});
嗯,事實證明,也是會被正常捕獲到的。
所以,正如我們上面所說,為了防止有漏掉的Promise異常,建議在全局增加一個對unhandledrejection的監聽,用來全局監聽UncaughtPromiseError。
補充一點:如果去掉控制台的異常顯示,需要加上:
event.preventDefault();七、VUEerrorHandlerVue.config.errorHandler=(err,vm,info)=>{
console.error('通過vue
errorHandler捕獲的錯誤');
console.error(err);
console.error(vm);
console.error(info);
}八、React異常捕獲React16提供了一個內置函數componentDidCatch,使用它可以非常簡單的獲取到react下的錯誤信息
componentDidCatch(error,info){
console.log(error,info);
}
除此之外,我們可以了解一下:errorboundaryUI的某部分引起的JS錯誤不應該破壞整個程序,為了幫React的使用者解決這個問題,React16介紹了一種關於錯誤邊界(errorboundary)的新觀念。
需要注意的是:errorboundaries並不會捕捉下面這些錯誤。
1.事件處理器2.非同步代碼3.服務端的渲染代碼4.在errorboundaries區域內的錯誤
我們來舉一個小例子,在下面這個componentDIdCatch(error,info)里的類會變成一個errorboundary:
.Component{
constructor(props){
super(props);
this.state={hasError:false};
}
componentDidCatch(error,info){
//DisplayfallbackUI
this.setState({hasError:true});
//
logErrorToMyService(error,info);
}
render(){
if(this.state.hasError){
//
returnSomethingwentwrong.
;
}
returnthis.props.children;
}
}
然後我們像使用普通組件那樣使用它:
componentDidCatch()方法像JS的catch{}模塊一樣工作,但是對於組件,只有class類型的組件(classcomponent)可以成為一個errorboundaries。
實際上,大多數情況下我們可以在整個程序中定義一個errorboundary組件,之後就可以一直使用它了!九、iframe異常對於iframe的異常捕獲,我們還得借力window.onerror:
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
一個簡單的例子可能如下:
frameborder="0">
十、Scripterror一般情況,如果出現Scripterror這樣的錯誤,基本上可以確定是出現了跨域問題。這時候,是不會有其他太多輔助信息的,但是解決思路無非如下:
跨源資源共享機制(CORS):我們為script標簽添加crossOrigin屬性。
或者動態去添加js腳本:
constscript=document.createElement('script');
script.crossOrigin='anonymous'
script.src=url;
document.body.appendChild(script);
特別注意,伺服器端需要設置:Access-Control-Allow-Origin
此外,我們也可以試試這個-解決ScriptError的另類思路:
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
簡單解釋一下:
·___男戳_ventTarget的addEventListener方法;
·___源氳_istener進行包裝,返回包裝過的listener,對其執行進行try-catch;
·___榔韃換岫_ry-catch起來的異常進行跨域攔截,所以catch到的時候,是有堆棧信息的;
·___匭_hrow出來異常的時候,執行的是同域代碼,所以window.onerror捕獲的時候不會丟失堆棧信息;
利用包裝addEventListener,我們還可以達到「擴展堆棧」的效果:
(()=>{
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
+//捕獲添加事件時的堆棧
+constaddStack=newError(`Event(${type})`).stack;
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
+//異常發生時,擴展堆棧
+err.stack+='
'+addStack;
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
})();十一、崩潰和卡頓卡頓也就是網頁暫時響應比較慢,JS可能無法及時執行。但崩潰就不一樣了,網頁都崩潰了,JS都不運行了,還有什麼辦法可以監控網頁的崩潰,並將網頁崩潰上報呢?
崩潰和卡頓也是不可忽視的,也許會導致你的用戶流失。
1.利用window對象的load和beforeunload事件實現了網頁崩潰的監控。不錯的文章,推薦閱讀:Logging
InformationonBrowserCrashes。window.addEventListener('load',function(){
sessionSt
E. 電視web瀏覽器崩潰黑屏
您好:
抱歉,產品給您帶來不便了!針對您提出的前兩個問題,建議您:
1.三星智能電視Web瀏覽器與電腦瀏覽器不同,只支持H.264視頻格式編碼的在線視頻播放,非此格式的視頻在播放中會遇到各種異常問題,或無法播放。此外,由於電視本身內存和CPU性能問題,不能很好的支持高清或超高清視頻播放,當播放這種視頻時會佔用很大的內存,瀏覽器為保護電視程序能正常運行,會退出瀏覽器。F8000系列電視支持芒果互聯網電視軟體,連接互聯網以後進入該軟體觀看網路視頻內容,一般家中4M及以上寬頻即可流程觀看。
2.請將電視進行升級,操作方法:通過三星官網下載匹配型號的最新固件,http://www.samsung.com/cn/support/model/UA60F8000AJXXZ完畢後打開釋放到清空的U盤中,然後連接電視,按智能觸摸遙控器的【更多】鍵,依次選擇【項目】-【支持】-【軟體更新】進行更新。
重設Smart Hub:按智能觸摸遙控器的【更多】鍵,依次選擇【項目】-【Smart功能】-【重設Smart Hub】,輸入自定義密碼或初始密碼「0000」。然後再按【SMART HUB】鍵,按照提示進行操作,操作完畢電視將重新安裝智能界面中的軟體。
3.若上述操作不能解決問題,請電話聯系400-810-5858申請遠程服務。
針對第三個問題,建議您在上述操作完畢後再嘗試,若依然出現同樣提示,再與芒果客服聯系,客服電話:400-677-0707。
歡迎訪問三星服務預約:
https://support-cn.samsung.com/suppor
F. web 網頁崩潰
最近開發了一個網頁,通過定時查詢後台狀態來監控一個系統平台。但是現在遇到一個問題,就是該頁面在長時間閑置後容易崩潰(刷新後又能正常顯示),發生崩潰時瀏覽器顯示內容如下:
目前的情況是,頁面數據量較大(對應chrome進程的內存佔用在100多M),但是經檢查,整個過程中並沒有出現內存泄露,後台也沒有報錯。我不太確定這是網頁的問題還是瀏覽器在某些場景下(比如內存佔用高)出現的不穩定問題,請問這種問題應該如何解決?
G. 瀏覽器經常崩潰怎麼回事所有的瀏覽器都試過了,還是不行。
1、瀏覽器卡死有多方面的原因造成,具體你是哪種情況我也沒辦法下定論,
估計你用的都是IE核的瀏覽 器吧,像傲遊、360、騰訊tt等這些用的都是IE核,假死問題是通病,很難徹底解決,對於新手來說,還是建議你換個穩定的瀏覽器吧,比如火狐等非IE核 的瀏覽器都不錯,相對來說穩定很多,我用火狐從來沒碰到過假死的情況,打開17、8個標簽都沒問題。
2、不知道你是什麼配置,配置低的話更容易死 機,很多時候瀏覽器死機是網頁廣告造成的,你看搜狐、新浪一打開又是視頻又是廣告的,這些廣告占流量很大,尤其是打開頁面的時候,集體彈出,很容易造成死 機,換個廣告攔截能力強的瀏覽器吧,新版火狐自帶的ADBLOCK PLUS很強大,可以訂閱屏蔽規則,可以攔截99%的網頁廣告,頁面會清爽很多。
3、 新版火狐還對速度進行了優化設置,增加了伺服器連接數,縮短了響應時間等等,視頻圖片都明顯的比IE系的快。
火狐中國版下載——中關村下載http://xiazai.zol.com.cn/detail/12/117589.shtml
火狐高速加強版:
http://dl1.hidrop.com/packaging/ent-highspeed/firefox-ent-highspeed.rar?from=mail
H. javaweb項目連接有資料庫,訪問幾次就崩潰潰
我個人是做數據分析的,我是根據平時跟其他同事的交流來說的,可行性需要您自己實踐
通過資料庫集群做負載均衡
資料庫再怎麼優化SQL,再怎麼建立連接池,它的IO就是那樣,最大連接數量就是那麼多,這是沒辦法的,現在主流的資料庫都支持做集群搭建,建議樓主去看看,平時對於關聯查詢多表查詢的欄位多做索引多維護,多使用ID作為查詢條件,ID盡量使用統一的演算法分配
通過靜態頁面降低伺服器壓力
盡量不適用jsp頁面,改成html的,圖片和其他資源分離;多使用原生js去寫,少使用框架,多用ajax交互從而減少帶寬支出
提升伺服器配置和數量,這個就需要財力物力的投入了
web項目出問題除了開發人員,運維人員也有很大責任,多和網維和運維交流吧他們會給你更多的意見
I. 伺服器出現崩潰是什麼原因呢
伺服器崩潰的幾種原因第一:高並發流量或請求超過伺服器承受力
無論是企業和個人在租用伺服器的時候都會受到峰值承受限制的,一旦超過伺服器的承受能力,就會導致伺服器癱瘓,應用程序暫停,網站無法訪問。伺服器都是有峰值限制的,不可能承受無上限的並發能力。而造成伺服器癱瘓的原因就是在同一段時間內,訪問人數多,造成高流量的突進。超出了伺服器的承受范圍。這種例子我們經常可以看到,比如雙11期間,很多公司為了應對雙11的高流量,開啟的緊急避險措施和大規模的伺服器負載能力。還有春運期間,12306網站由於受到高並發的問題,也會頻繁的出現崩潰。
第二:磁碟空間不足
導致伺服器無法正常運行的原因也有可能是磁碟空間溢出導致的。企業的網路管理員應該實時關注磁碟的使用情況,並且要在規定的時間把磁碟儲存的數據備份到另外的存儲設備裡面,確保數據無遺失,推薦相關閱讀:哪些網站應該使用伺服器呢?
伺服器的磁碟大部分的資源都是被日誌文件佔用了,包括web伺服器,資料庫等日誌信息都包括其中,以及應用程序伺服器日誌文件均與內存泄漏是同等的危害。我們可以採取措施保護我們的數據和日誌文件,日誌文件對應用程序進行異地存儲。日誌文件系統空間如果滿了,則web伺服器將自動被掛起,但是機器本身癱瘓和宕機的幾率就會大大降低。
第三:伺服器超載
連接web伺服器都是用一個線程鏈接的,web伺服器會在線程用過之後自動掛起,不會再未已鏈接的線程提供任何服務。如果我們用了負載機制,那麼如果該伺服器沒有響應,則該伺服器的負載則會自動的轉移到其他web伺服器上,這個操作會使伺服器一個接一個的用光線程。這中操作可能會導致整個伺服器機組被掛起,操作系統同時還有可能在不斷接收新的鏈接,而我們的web伺服器無法未其提供服務,致使伺服器崩潰。
第四:伺服器遭到惡意攻擊
網路科技的不斷發展同時,黑客的技術和滲透也是很強的,伺服器和系統遭受到攻擊已經是普遍存在的了。所有伺服器都會面臨這個問題,這個是無法預測的危險,我們只能實時做好安全防護,將被攻擊的風險降至最低。