新聞中心
服務(wù)器崩潰是怎么造成的?
第一,內(nèi)存泄漏

CC+程序還可能產(chǎn)生另一個(gè)指針問題丟失對(duì)已分配內(nèi)存的引用。當(dāng)內(nèi)存是在子程序中被分配時(shí),通常會(huì)出現(xiàn)這種問題,其結(jié)果是程序從子程序中返回時(shí)不會(huì)釋放內(nèi)存。如此一來,對(duì)已分配的內(nèi)存的引用就會(huì)丟失,只要操作系統(tǒng)還在運(yùn)行中,則進(jìn)程就會(huì)一直使用該內(nèi)存。
這樣的結(jié)果是,曾占用更多的內(nèi)存的程序會(huì)降低系統(tǒng)性能,直到機(jī)器完全停止工作,才會(huì)完全請(qǐng)空內(nèi)存。
第二, C指針錯(cuò)誤
用C或C++編寫的程序,如Web服務(wù)器APT模塊,有可能導(dǎo)致系統(tǒng)的崩潰,因?yàn)橹灰g接引用指針(即,訪問指向的內(nèi)存)中出現(xiàn)一個(gè)錯(cuò)誤,就會(huì)導(dǎo)致操作系統(tǒng)終止所有程序。另外,使用了糟糕的C指針的Java模擬量(analog)將訪問一個(gè)空的對(duì)象引用。Java中的空引用通常不會(huì)導(dǎo)致立刻退出JVM,但是前提是程序員能夠使用異常處理方法恰當(dāng)?shù)靥幚礤e(cuò)誤。在這方面, Java無需過多的關(guān)注,但使用Java對(duì)可靠性進(jìn)行額外的度量則會(huì)對(duì)性能產(chǎn)生一些負(fù)面影響。
第三,數(shù)據(jù)庫(kù)中的臨時(shí)表不夠用
許多數(shù)據(jù)庫(kù)的臨時(shí)表(cursor)數(shù)目都是固定的,臨時(shí)表即保留查詢結(jié)果的內(nèi)存區(qū)域。在臨時(shí)表中的數(shù)據(jù)都被讀取后,臨時(shí)表便會(huì)被釋放,但大量同時(shí)進(jìn)行的查詢可能耗盡數(shù)目固定的所有臨時(shí)表。這時(shí),其他的查詢就需要列隊(duì)等候,直到有臨時(shí)表被釋放時(shí)才能再繼續(xù)運(yùn)行。
第四,線程死鎖
由多線程帶來的性能改善是以可靠性為代價(jià)的,主要是因?yàn)檫@樣有可能產(chǎn)生線程死鎖。線程死鎖時(shí),第一個(gè)線程等待第二個(gè)線程釋放資源,而同時(shí)第二個(gè)線程又在等待第一個(gè)線程釋放資源。我們來想像這樣一種情形在人行道上兩個(gè)人迎面相遇,為了給對(duì)方讓道,兩人同時(shí)向一側(cè)邁出一步,雙方無法通過,又同時(shí)向另一側(cè)邁出一步,這樣還是無法通過。雙方都以同樣的邁步方式堵住了對(duì)方的去路。假設(shè)這種情況一直持續(xù)下去,這樣就不難理解為何會(huì)發(fā)生死鎖現(xiàn)象了。
服務(wù)器在什么情況下會(huì)癱瘓?
第一:高并發(fā)流量或請(qǐng)求超過服務(wù)器承受力
無論是企業(yè)和個(gè)人在租用服務(wù)器的時(shí)候都會(huì)受到峰值承受限制的,一旦超過服務(wù)器的承受能力,就會(huì)導(dǎo)致服務(wù)器癱瘓,應(yīng)用程序暫停,網(wǎng)站無法訪問。服務(wù)器都是有峰值限制的,不可能承受無上限的并發(fā)能力。而造成服務(wù)器癱瘓的原因就是在同一段時(shí)間內(nèi),訪問人數(shù)多,造成高流量的突進(jìn)。超出了服務(wù)器的承受范圍。這種例子我們經(jīng)??梢钥吹?,比如雙11期間,很多公司為了應(yīng)對(duì)雙11的高流量,開啟的緊急避險(xiǎn)措施和大規(guī)模的服務(wù)器負(fù)載能力。還有春運(yùn)期間,12306網(wǎng)站由于受到高并發(fā)的問題,也會(huì)頻繁的出現(xiàn)崩潰。
第二:磁盤空間不足
導(dǎo)致服務(wù)器無法正常運(yùn)行的原因也有可能是磁盤空間溢出導(dǎo)致的。企業(yè)的網(wǎng)絡(luò)管理員應(yīng)該實(shí)時(shí)關(guān)注磁盤的使用情況,并且要在規(guī)定的時(shí)間把磁盤儲(chǔ)存的數(shù)據(jù)備份到另外的存儲(chǔ)設(shè)備里面,確保數(shù)據(jù)無遺失,推薦相關(guān)閱讀:哪些網(wǎng)站應(yīng)該使用服務(wù)器呢?
服務(wù)器的磁盤大部分的資源都是被日志文件占用了,包括web服務(wù)器,數(shù)據(jù)庫(kù)等日志信息都包括其中,以及應(yīng)用程序服務(wù)器日志文件均與內(nèi)存泄漏是同等的危害。我們可以采取措施保護(hù)我們的數(shù)據(jù)和日志文件,日志文件對(duì)應(yīng)用程序進(jìn)行異地存儲(chǔ)。日志文件系統(tǒng)空間如果滿了,則web服務(wù)器將自動(dòng)被掛起,但是機(jī)器本身癱瘓和宕機(jī)的幾率就會(huì)大大降低。
第三:服務(wù)器超載
連接web服務(wù)器都是用一個(gè)線程鏈接的,web服務(wù)器會(huì)在線程用過之后自動(dòng)掛起,不會(huì)再未已鏈接的線程提供任何服務(wù)。如果我們用了負(fù)載機(jī)制,那么如果該服務(wù)器沒有響應(yīng),則該服務(wù)器的負(fù)載則會(huì)自動(dòng)的轉(zhuǎn)移到其他web服務(wù)器上,這個(gè)操作會(huì)使服務(wù)器一個(gè)接一個(gè)的用光線程。這中操作可能會(huì)導(dǎo)致整個(gè)服務(wù)器機(jī)組被掛起,操作系統(tǒng)同時(shí)還有可能在不斷接收新的鏈接,而我們的web服務(wù)器無法未其提供服務(wù),致使服務(wù)器崩潰。
到此,以上就是小編對(duì)于服務(wù)器老掛死的原因是什么的問題就介紹到這了,希望這2點(diǎn)解答對(duì)大家有用。
標(biāo)題名稱:服務(wù)器崩潰是怎么造成的?服務(wù)器老掛死的原因
標(biāo)題鏈接:http://www.dlmjj.cn/article/dhsosdc.html


咨詢
建站咨詢
