国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

web站點(diǎn)崩潰的原因大全

2019-11-02 16:51:45
字體:
供稿:網(wǎng)友
有許多種原因可能導(dǎo)致Web站點(diǎn)無法正常工作,這使得系統(tǒng)地檢查所有問題變得很困難。下面將集中分析總結(jié)導(dǎo)致Web站點(diǎn)崩潰的最常見的問題。如果可以解決這些常規(guī)問題,那么也將有能力對(duì)付出現(xiàn)的一些意外情況。

  磁盤已滿

  導(dǎo)致系統(tǒng)無法正常運(yùn)行的最可能的原因是磁盤已滿。一個(gè)好的網(wǎng)絡(luò)管理員會(huì)密切關(guān)注磁盤的使用情況,隔一定的時(shí)間,就需要將磁盤上的一些負(fù)載轉(zhuǎn)存到備份存儲(chǔ)介質(zhì)中(例如磁帶)。

  日志文件會(huì)很快用光所有的磁盤空間。Web服務(wù)器的日志文件、SQL*Net的日志文件、JDBC日志文件,以及應(yīng)用程序服務(wù)器日志文件均與內(nèi)存泄漏有同等的危害。可以采取措施將日志文件保存在與操作系統(tǒng)不同的文件系統(tǒng)中。日志文件系統(tǒng)空間已滿時(shí)Web服務(wù)器也會(huì)被掛起,但機(jī)器自身被掛起的幾率已大大減低。

  C指針錯(cuò)誤

  用C或C++編寫的程序,如Web服務(wù)器API模塊,有可能導(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ù)面影響。

  內(nèi)存泄漏

  C/C++程序還可能產(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ì)完全清空內(nèi)存。

  解決方案之一是使用代碼分析工具(如Purify)對(duì)代碼進(jìn)行仔細(xì)分析,以找出可能出現(xiàn)的泄漏問題。但這種方法無法找到由其他原因引起的庫中的泄漏,因?yàn)閹斓脑创a是不可用的。另一種方法是每隔一段時(shí)間,就清除并重啟進(jìn)程。Apache的Web服務(wù)器就會(huì)因這個(gè)原因創(chuàng)建和清除子進(jìn)程。

  雖然Java本身并無指針,但總的說來,與C程序相比,Java程序使用內(nèi)存的情況更加糟糕。在Java中,對(duì)象被頻繁創(chuàng)建,而直到所有到對(duì)象的引用都消失時(shí),垃圾回收程序才會(huì)釋放內(nèi)存。即使運(yùn)行了垃圾回收程序,也只會(huì)將內(nèi)存還給虛擬機(jī)VM,而不是還給操作系統(tǒng)。結(jié)果是:Java程序會(huì)用光給它們的所有堆,從不釋放。由于要保存實(shí)時(shí)(Just In Time,JIT)編譯器產(chǎn)生的代碼,Java程序的大小有時(shí)可能會(huì)膨脹為最大堆的數(shù)倍之巨。

  還有一個(gè)問題,情況與此類似。從連接池分配一個(gè)數(shù)據(jù)庫連接,而無法將已分配的連接還回給連接池。一些連接池有活動(dòng)計(jì)時(shí)器,在維持一段時(shí)間的靜止?fàn)顟B(tài)之后,計(jì)時(shí)器會(huì)釋放掉數(shù)據(jù)庫連接,但這不足以緩解糟糕的代碼快速泄漏數(shù)據(jù)庫連接所造成的資源浪費(fèi)。

  進(jìn)程缺乏文件描述符

  如果已為一臺(tái)Web服務(wù)器或其他關(guān)鍵進(jìn)程分配了文件描述符,但它卻需要更多的文件描述符,則服務(wù)器或進(jìn)程會(huì)被掛起或報(bào)錯(cuò),直至得到了所需的文件描述符為止。文件描述符用來保持對(duì)開放文件和開放套接字的跟蹤記錄,開放文件和開放套接字是Web服務(wù)器很關(guān)鍵的組成部分,其任務(wù)是將文件復(fù)制到網(wǎng)絡(luò)連接。默認(rèn)時(shí),大多數(shù)shell有64個(gè)文件描述符,這意味著每個(gè)從shell啟動(dòng)的進(jìn)程可以同時(shí)打開64個(gè)文件和網(wǎng)絡(luò)連接。大多數(shù)shell都有一個(gè)內(nèi)嵌的ulimit命令可以增加文件描述符的數(shù)目。

  線程死鎖

  由多線程帶來的性能改善是以可靠性為代價(jià)的,主要是因?yàn)檫@樣有可能產(chǎn)生線程死鎖。線程死鎖時(shí),第一個(gè)線程等待第二個(gè)線程釋放資源,而同時(shí)第二個(gè)線程又在等待第一個(gè)線程釋放資源。我們來想像這樣一種情形:在人行道上兩個(gè)人迎面相遇,為了給對(duì)方讓道,兩人同時(shí)向一側(cè)邁出一步,雙方無法通過,又同時(shí)向另一側(cè)邁出一步,這樣還是無法通過。雙方都以同樣的邁步方式堵住了對(duì)方的去路。假設(shè)這種情況一直持續(xù)下去,這樣就不難理解為何會(huì)發(fā)生死鎖現(xiàn)象了。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 通化县| 鹤峰县| 山阳县| 萝北县| 南开区| 郴州市| 昭平县| 宾阳县| 英山县| 安图县| 隆回县| 秀山| 沾益县| 鄱阳县| 余干县| 武汉市| 临海市| 土默特右旗| 金塔县| 昭通市| 涟水县| 漳平市| 和林格尔县| 绍兴县| 苍溪县| 巴里| 克拉玛依市| 阳江市| 阳西县| 河源市| 凤庆县| 六盘水市| 新闻| 阿尔山市| 湘乡市| 广水市| 隆林| 忻州市| 金乡县| 乌鲁木齐市| 建阳市|