服務(wù)器掛起與崩潰之間究竟有什么區(qū)別?更重要的是,如何修復(fù)它們?在本文中,我們將解釋如何識(shí)別 lotus domino 服務(wù)器掛起和崩潰,以及如何分析和糾正它們。
lotus domino 構(gòu)建得非?煽。但是即使構(gòu)建得再好的產(chǎn)品,也會(huì)遇到導(dǎo)致其掛起或崩潰的問(wèn)題。當(dāng)出現(xiàn)這樣的情況時(shí),您隔離、分析和修復(fù)問(wèn)題的速度越快,您的用戶(hù)社團(tuán)就會(huì)越快高興起來(lái)并正常運(yùn)行,您也因而能夠更快地返回去考慮別的事情! ”疚奶峁┝艘恍┛捎糜谛迯(fù) notes/domino 問(wèn)題的思路。我們首先來(lái)定義服務(wù)器掛起和服務(wù)器崩潰之間的區(qū)別,以及如何解決每種問(wèn)題的例子。我們最后將概述該產(chǎn)品的最新版本 —— notes/domino 7 —— 中包含的新的故障診斷特性。我們假設(shè)您是一名有經(jīng)驗(yàn)的 domino 管理員,并且熟悉基本的 notes/domino 概念和術(shù)語(yǔ)。 何為服務(wù)器掛起和崩潰?
在進(jìn)入技術(shù)細(xì)節(jié)之前,我們首先定義兩個(gè)常用的術(shù)語(yǔ),即崩潰(crash)和掛起(hang),以確保我們的理解是一致的。 服務(wù)器崩潰
domino 服務(wù)器崩潰是這樣一種情景,即服務(wù)器程序已經(jīng)終止并且不再運(yùn)行。您通?梢酝ㄟ^(guò)查看崩潰屏幕或者 nsd/rip 日志文件(取決于您運(yùn)行的是什么版本的 domino),來(lái)確定服務(wù)器終止時(shí)所執(zhí)行的任務(wù)。 domino 服務(wù)器崩潰的常見(jiàn)故障現(xiàn)象包括: domino 服務(wù)器不再運(yùn)行,但是系統(tǒng)上的其他程序還在運(yùn)行。
domino 服務(wù)器控制臺(tái)不出現(xiàn),即使當(dāng)任務(wù)似乎已加載時(shí)。
domino 服務(wù)器已加載,并且沒(méi)做任何事情就突然死機(jī)。
一個(gè) panic 錯(cuò)誤出現(xiàn)在控制臺(tái)上或 log.nsf 中,并且系統(tǒng)死機(jī)。
nsd/rip 自動(dòng)運(yùn)行并生成一個(gè)文件,服務(wù)器自己死機(jī)和/或重新啟動(dòng)。 存在幾種不同類(lèi)型的服務(wù)器崩潰。例如一次性崩潰(one-time crash),顧名思義,可能只出現(xiàn)一次,并且不會(huì)再次出現(xiàn)。一個(gè)導(dǎo)致 domino 崩潰的進(jìn)程訪問(wèn)壞內(nèi)存或已破壞的文檔時(shí)會(huì)出現(xiàn)一次性崩潰。例如,假設(shè)位于 mail.box 中的一個(gè)文檔已經(jīng)破壞。當(dāng) domino 路由器訪問(wèn) mail.box 想將該文檔路由到其目的地時(shí),將產(chǎn)生一個(gè) domino 服務(wù)器崩潰。類(lèi)似的場(chǎng)景以后可能會(huì)出現(xiàn),也可能不會(huì)出現(xiàn)。一般來(lái)說(shuō),一次性崩潰是最難分析的。 可重復(fù)的崩潰(reproducible crash)是一種可通過(guò)一系列步驟重復(fù)的崩潰。例如一個(gè)這樣的表單,其中包含一個(gè)編碼錯(cuò)誤的按鈕,每當(dāng)按這個(gè)按鈕時(shí),都會(huì)導(dǎo)致一個(gè)可重復(fù)的崩潰。 重復(fù)的崩潰(repetitive crashes)按一定的規(guī)律發(fā)生。它們似乎不與任何特定動(dòng)作相關(guān),而是發(fā)生在每天的相同時(shí)間。在這樣的場(chǎng)景中,您需要確切地知道,在導(dǎo)致問(wèn)題的時(shí)間段,服務(wù)器上在運(yùn)行什么。例如,假設(shè) domino 服務(wù)器上啟用了一個(gè)預(yù)定的代理,每個(gè)月運(yùn)行一次。該代理可能會(huì)導(dǎo)致服務(wù)器崩潰。在這樣的場(chǎng)景中,首先需要禁用導(dǎo)致問(wèn)題的代理,然后再檢查該代理為什么會(huì)導(dǎo)致問(wèn)題(并修復(fù)問(wèn)題)。 abend 是服務(wù)器崩潰的一種特殊形態(tài)。術(shù)語(yǔ) abend 是 “abnormal end” 這兩個(gè)單詞的組合。abend 崩潰不產(chǎn)生 rip 或 nsd 文件。 崩潰的原因如下: 代碼中的軟件問(wèn)題(無(wú)論是在服務(wù)器上還是客戶(hù)機(jī)上)。
數(shù)據(jù)庫(kù)中的破壞。
訪問(wèn) domino 的第三方應(yīng)用程序中的軟件問(wèn)題。
內(nèi)存不足。
定制代碼導(dǎo)致的限制操作。
內(nèi)存泄漏。
未完成的請(qǐng)求。 服務(wù)器掛起
domino 服務(wù)器掛起是這樣一種場(chǎng)景,即 domino 服務(wù)器仍在運(yùn)行,但是服務(wù)器上的一個(gè)或多個(gè)任務(wù)不響應(yīng)請(qǐng)求。這些任務(wù)可能還是活躍的,但是不在做它們應(yīng)該做的事情。術(shù)語(yǔ) “掛起” 也定義了一種狀態(tài),即當(dāng)計(jì)算機(jī)程序不按設(shè)計(jì)運(yùn)行時(shí)可能會(huì)出現(xiàn)的狀態(tài)。大部分時(shí)候,出現(xiàn)掛起是因?yàn),低?jí)循環(huán)或資源的持久不可用導(dǎo)致嚴(yán)重的性能問(wèn)題。服務(wù)器掛起通常歸因于資源問(wèn)題,所以有時(shí)可把它們看成性能問(wèn)題。 在掛起期間,程序看起來(lái)像已癱瘓,也不顯示錯(cuò)誤消息,并且屏幕凍結(jié)或者應(yīng)用程序不響應(yīng)用戶(hù)的動(dòng)作。鍵盤(pán)輸入或鼠標(biāo)點(diǎn)擊沒(méi)有反應(yīng),不管光標(biāo)置于何處都一樣,但是程序仍在運(yùn)行。與 abend 或崩潰不一樣,掛起有時(shí)會(huì)自己解決問(wèn)題,應(yīng)用程序繼續(xù)其正常的執(zhí)行過(guò)程,無(wú)需您的干預(yù)。這樣的情況更應(yīng)該看成是性能問(wèn)題,而不是掛起。 domino 服務(wù)器掛起的故障現(xiàn)象包括: domino 仍在運(yùn)行,但是不響應(yīng)客戶(hù)機(jī)。在這種情況下,用戶(hù)通常報(bào)告說(shuō)他們收到 “server not responding” 消息。
控制臺(tái)的行為就像是斷開(kāi)連接的,不接受任何命令,甚至像 quit 這樣簡(jiǎn)單的命令也不接受。
客戶(hù)機(jī)對(duì)服務(wù)器的訪問(wèn)(例如,打開(kāi)數(shù)據(jù)庫(kù))感覺(jué)到響應(yīng)時(shí)間慢。
出現(xiàn)信號(hào)量超時(shí)。“show stat” 命令將報(bào)告信號(hào)量超時(shí)信息。下面是 statrep.nsf 中報(bào)告的一個(gè)信號(hào)量超時(shí)的例子:sem.timeouts = 430d: 58 0a13:42 030b:28 0116:26 0a12:21。在這個(gè)例子中,430d 是信號(hào)量名稱(chēng),58 是超時(shí)的數(shù)量。注意,信號(hào)量超時(shí)并不一定表示性能問(wèn)題。在忙碌的服務(wù)器上出現(xiàn)信號(hào)量超時(shí)是很常見(jiàn)的。如果服務(wù)器上沒(méi)有出現(xiàn)任何信號(hào)量超時(shí),統(tǒng)計(jì)數(shù)據(jù) sem.timeouts 就不會(huì)出現(xiàn)在 statrep.nsf 中。
會(huì)報(bào)告與性能相關(guān)的錯(cuò)誤消息,比如:
insufficient memory.
insufficient memory. nsf folder pool is full.
maximum number of memory segments that notes can support has been exceeded.
network operation did not complete in a reasonable amount of time.
server not responding. 注意,在服務(wù)器掛起場(chǎng)景中,nsd/rip 是不會(huì)自動(dòng)生成的。 導(dǎo)致服務(wù)器掛起的原因包括,資源問(wèn)題(資源不足)、第三方應(yīng)用程序沖突和硬件問(wèn)題。一般來(lái)說(shuō),服務(wù)器掛起比服務(wù)器崩潰更難分析。最后指出一點(diǎn):崩潰和掛起不只出現(xiàn)在 domino 服務(wù)器上,也可以出現(xiàn)在 notes 客戶(hù)機(jī)上。 故障診斷
在本節(jié)中,我們來(lái)看一些用于故障診斷服務(wù)器崩潰和服務(wù)器掛起的一般方法。 故障診斷 domino 服務(wù)器崩潰
如果 domino 已經(jīng)崩潰,并且不能重啟,那么從 notes.ini 變量 servertask 刪除任務(wù),并試圖縮小范圍和識(shí)別導(dǎo)致崩潰的任務(wù)。當(dāng)您懷疑是某個(gè)特定的任務(wù)導(dǎo)致問(wèn)題時(shí),就打開(kāi)服務(wù)器控制臺(tái),并縮小該任務(wù)產(chǎn)生的可能的錯(cuò)誤消息的范圍。例如,如果在訪問(wèn) mail.box 中的郵件時(shí)路由器崩潰了,那么重新命名 mail.box 并允許服務(wù)器重新創(chuàng)建 mail.box。 如果您懷疑問(wèn)題是已破壞的數(shù)據(jù)庫(kù)導(dǎo)致的,那么在該數(shù)據(jù)庫(kù)上運(yùn)行離線維護(hù)任務(wù)。如果崩潰是按規(guī)律發(fā)生的,那么檢查崩潰發(fā)生時(shí)服務(wù)器上執(zhí)行的動(dòng)作。 考慮下列問(wèn)題: domino 服務(wù)器向控制臺(tái)或日志文件報(bào)告錯(cuò)誤消息嗎?
錯(cuò)誤消息的確切語(yǔ)法是什么樣的?
錯(cuò)誤消息是哪里產(chǎn)生的?是 domino 服務(wù)器上,還是 notes 客戶(hù)機(jī)上?
該問(wèn)題第一次出現(xiàn)是什么時(shí)候?
在問(wèn)題開(kāi)始出現(xiàn)之前,最近做了更改嗎? 故障診斷 notes 客戶(hù)機(jī)崩潰
首先,找出問(wèn)題是否特定于某個(gè)用戶(hù)。如果是的,就檢查該用戶(hù)的配置,并將之與其他用戶(hù)的配置進(jìn)行比較。此外,還要確定問(wèn)題發(fā)生是否歸結(jié)于訪問(wèn)某個(gè)特定的應(yīng)用程序。如果是的,就請(qǐng)一個(gè)開(kāi)發(fā)人員來(lái)檢查應(yīng)用程序。 如果您懷疑問(wèn)題是由已破壞的數(shù)據(jù)庫(kù)或文檔導(dǎo)致的,就運(yùn)行維護(hù)任務(wù) updall、fixup 和 compact(用適當(dāng)?shù)拈_(kāi)關(guān))。此外,如果您認(rèn)為問(wèn)題是由于壞的索引,那么試圖重新創(chuàng)建數(shù)據(jù)庫(kù)的全文本索引(如果可能的話(huà))。 故障診斷 domino 服務(wù)器掛起
如果常量信號(hào)量問(wèn)題出現(xiàn)在服務(wù)器控制臺(tái)上,那么檢查任務(wù)的安排是否沖突。如果系統(tǒng)響應(yīng)緩慢,那么檢查您的非-domino 應(yīng)用程序,看它們是否也運(yùn)行緩慢。另外, 一般來(lái)說(shuō),應(yīng)該確保用所有最新的補(bǔ)丁更新了操作系統(tǒng)。