大型數(shù)據(jù)庫如何提升IBM Lotus Domino服務(wù)器的性能
描述總體性能的文檔已經(jīng)非常多,但它們都建立在這樣的假設(shè)之上:Lotus Domino 的性能僅受事務(wù)數(shù)量的影響。實(shí)踐經(jīng)驗(yàn)表明,與性能相關(guān)的挑戰(zhàn)已經(jīng)擴(kuò)展到使用類型,而不僅僅受限于事務(wù)的數(shù)量。
一個(gè)重要的問題就是,傳輸和存儲(chǔ)的郵件的大小和數(shù)量都比以前要大。在許多環(huán)境中,除了處理傳統(tǒng)的消息發(fā)送之外,Lotus Domino 還成為分發(fā)、文檔管理和存儲(chǔ)的中心。從本質(zhì)上講,Lotus Domino 環(huán)境為了滿足客戶需求而變得更加復(fù)雜了。所以現(xiàn)在的郵件文件比以前要大,并且還會(huì)一直增長。
一些客戶正在忙著對(duì)付不斷增長的郵件文件,從而確定如何處理數(shù)據(jù)并了解這些增長對(duì)性能的影響。受到業(yè)務(wù)需求的驅(qū)動(dòng),可能一個(gè)用戶(或一組用戶)就有多達(dá) 10 GB 的郵件文件,或者出現(xiàn)許多大型的郵件文件。有關(guān)這些增長對(duì)系統(tǒng)性能的影響的信息比較有限,因此如果管理員沒有很好地理解性能如何受到影響的話,就難以采取補(bǔ)救措施。
一些常見的問題包括:
- 對(duì)目前的最佳調(diào)優(yōu)配置而言,郵件文件變大意味著什么?
- 幾個(gè)大型郵件文件真的會(huì)嚴(yán)重影響其他用戶獲得的性能嗎?
- 郵件文件大小增加如何影響系統(tǒng)資源?
本文測試各種配置并檢查它們?nèi)绾斡绊懣傮w性能,從而對(duì)這些問題進(jìn)行研究。
我們對(duì)許多處理性能問題的標(biāo)準(zhǔn)方法進(jìn)行了測試,以演示這些配置可能帶來的益處。盡管測試能解決許多場景中碰到的問題,但是要注意每個(gè)環(huán)境的參數(shù)都是不能改變的并且在大多數(shù)情況下是統(tǒng)一的。當(dāng)將參數(shù)直接轉(zhuǎn)移到特定環(huán)境或?qū)嶋H的生產(chǎn)負(fù)載時(shí),必須多加注意。
注意:您不能期望通過不同的調(diào)優(yōu)方式來實(shí)現(xiàn)性能的大幅提升。性能調(diào)優(yōu)的本質(zhì)就是獲得更高的資源效率。調(diào)優(yōu)是一個(gè)反復(fù)的過程,并且這樣的調(diào)優(yōu)的好處很明顯;越難越復(fù)雜的調(diào)優(yōu)可能其價(jià)值就越低。最重要的是,任何性能的提升都受到基礎(chǔ)資源能力的限制。本文的目標(biāo)不是提供一個(gè)明確的指導(dǎo)方針,而是為更常見的場景提供一個(gè)新的視角。
測試在運(yùn)行 AIX® 5.3 系統(tǒng)的 pSeries® 630 機(jī)器上完成,該機(jī)器有 4 個(gè) PowerPC®_POWER4™ 處理器,總主頻為 1453 MHz。該系統(tǒng)的 RAM 為 8 GB,它的數(shù)據(jù)和 Domino 目錄使用 IBM SSA® 160 SerialRAID 適配器 (4109100) 在 20 個(gè) SSA160 物理磁盤驅(qū)動(dòng)器上進(jìn)行測試,每個(gè)磁盤大小為 18 GB(見表 1)。
硬件 | 細(xì)節(jié) |
---|---|
CPU | 4 個(gè) PowerPC_POWER4,總主頻為 1453 MHz |
內(nèi)存 | 8 GB |
以太適配器 20 SSA160 物理磁盤驅(qū)動(dòng)器 | 10/100 Mbps Ethernet PCI Adapter II |
存儲(chǔ) | 20 個(gè) SSA160 物理磁盤驅(qū)動(dòng)器,10000 轉(zhuǎn)/分 RAID 0 / 使用并行調(diào)度的最大磁盤間(interdisk)策略 |
表 2 列出了測試的軟件細(xì)節(jié)。
軟件 | 版本 |
---|---|
AIX | 5.3 |
Lotus Domino 32 位 | 8.0 |
Lotus Domino 64 位 | 8.0.1 |
Server.Load 客戶機(jī) | 7.0.3 |
Template | StdR7Mail |
目標(biāo)和方法
測試的目標(biāo)是在服務(wù)器上執(zhí)行高強(qiáng)度并發(fā)行為時(shí),度量各種配置更改對(duì)性能的影響。
通過運(yùn)行一些基礎(chǔ)的測試負(fù)載來了解典型負(fù)載對(duì)服務(wù)器的影響,與之形成對(duì)比的是運(yùn)行具有大型數(shù)據(jù)庫的負(fù)載。在運(yùn)行基礎(chǔ)負(fù)載后,將實(shí)現(xiàn)各種不同的調(diào)優(yōu)更改,看看這些更改是否對(duì)性能產(chǎn)生影響。 #p#page_title#e#
除了輸入/輸出(I/O)發(fā)生改變之外,還可能對(duì)以下事物產(chǎn)生一些有趣的影響:
- 文檔的數(shù)量
- 事務(wù)日志
- 多個(gè) Lotus Domino 服務(wù)器處理同一個(gè)負(fù)載
- 文檔的大小
- 改變物理內(nèi)存的配置和使用
通過實(shí)現(xiàn) Server.Load 向服務(wù)器生成負(fù)載。使用基于內(nèi)置 Notes® Remote Procedure Call (NRPC) 例程的定制腳本來模擬用戶行為,這些行為包括:
- 打開數(shù)據(jù)庫
- 打開并更新一個(gè)視圖或文件夾
- 打開、創(chuàng)建、刪除和發(fā)送郵件和日程表?xiàng)l目
- 安排日程活動(dòng)
注意:隨 Server.Load 附帶的測試負(fù)載被設(shè)計(jì)為類似 “正常的” 使用模式。我們使用了專門用來耗費(fèi)系統(tǒng)資源的腳本來完成測試。這個(gè)測試中的值并不代表正常情況下的使用;相反,它們反映所有用戶試圖最大限度地影響服務(wù)器時(shí)的使用情況。
表 3 給出了使用 dd 命令進(jìn)行測試時(shí)的 I/O 子系統(tǒng)的持續(xù)性能度量。dd 命令是一個(gè) UNIX® 命令,它允許您使用文件副本類型的操作控制 I/O 流。這個(gè)命令沒有反映 Lotus Domino 服務(wù)器上的實(shí)際使用,因?yàn)?Lotus Domino 數(shù)據(jù)庫的 I/O 模式一直都是多線程和隨機(jī)的。不過,它確實(shí)反映了底層硬件的基礎(chǔ)性能。此外,使用 RAM 磁盤文件系統(tǒng)再次運(yùn)行了這個(gè)測試,以顯示速度方面的差異。
子系統(tǒng) | 結(jié)果 |
---|---|
RAM 磁盤 | 242 MB/秒 |
JFS2 | 寫速度為 20 MB/秒,讀速度為 39 MB/秒 |
我們關(guān)心的兩個(gè)方面是響應(yīng)時(shí)間和資源使用;因此,我們的最終目標(biāo)是最大限度地提供資源,同時(shí)縮短對(duì)用戶的響應(yīng)時(shí)間。
在我們的測試中,幾乎耗盡事務(wù)時(shí)間的兩個(gè)操作是 UPDATE_NOTE 和 Notes Indexing Facility (NIF) 操作(OPEN_COLLECTION 和 UPDATE_COLLECTION 等等)。在所有測試中,這些操作占用的事務(wù)時(shí)間占據(jù)了總事務(wù)時(shí)間的大部分。
因此,事務(wù)時(shí)間隨著用戶的增多而增加,而每分鐘處理的事務(wù)數(shù)量則不斷下降。從本質(zhì)上講,用戶越多操作就越多,這就導(dǎo)致性能下降(見圖 1)。
目前的資料和經(jīng)驗(yàn)表明,郵件的性能取決于影響收件箱操作的因素。這是有一定道理的,因?yàn)檫@是最常用的 NIF 結(jié)構(gòu)(即視圖/文件夾)。當(dāng) NIF 結(jié)構(gòu)變大時(shí),對(duì)資源使用和操作時(shí)間的影響尤為明顯。
圖 2 顯示了對(duì) 250 位使用不同數(shù)量的文檔的用戶的性能影響。這些結(jié)果和以前得出的結(jié)果一致。盡管這不足為奇,但在這里關(guān)鍵是了解數(shù)據(jù)庫(甚至是視圖)的大小會(huì)增加處理一個(gè)事務(wù)所需的資源。
您可以將該結(jié)果與事務(wù)或用戶的實(shí)際數(shù)量不斷增加的場景相比較。有趣的是,當(dāng)我們僅關(guān)注每分鐘的事務(wù)數(shù)量時(shí),如果將文檔的數(shù)量增加 10 倍,這比將用戶數(shù)量增加 10 倍產(chǎn)生的負(fù)面影響還大。
這是一個(gè)寬泛的比較,但它反映了文檔的數(shù)量與用戶的數(shù)量一樣,都會(huì)影響性能。它們都對(duì)時(shí)間和資源產(chǎn)生負(fù)面影響。
下面這些因素對(duì)性能的影響不是很大:
- 收件箱之外的文檔的數(shù)量(例如,在其他文件夾或 All Documents 視圖中)
- 存儲(chǔ)的文檔的大小
- 使用的文檔的大小
注意:用于測試的文檔的大小不會(huì)對(duì)平均響應(yīng)時(shí)間產(chǎn)生很大的影響,但得出的結(jié)果有很大差別。這種影響不是很明顯,主要是測試中沒有出現(xiàn)并發(fā)的情況。根據(jù)這個(gè)結(jié)果,通過測試并發(fā)性而不是數(shù)據(jù)庫的大小,可以更精確地度量大型文檔對(duì)性能的影響。
在數(shù)據(jù)庫中包含 500,000 個(gè)以上的文檔(每個(gè)文檔不超過 250 KB)的情況下,重新運(yùn)行這些測試。這些結(jié)果將添加到之前的測試使用的數(shù)據(jù)庫的 All Documents 視圖,但不添加到 Inbox 視圖。這些測試結(jié)果表明,性能的差別不是很大。根據(jù)該結(jié)果,如果用戶操作是 “正常的”(即測試腳本中的操作),數(shù)據(jù)庫中的文檔的大小和數(shù)量對(duì)性能的影響不是很明顯,前提是 NIF 結(jié)構(gòu)的大小保持不變。 #p#page_title#e#
采用下面的配置,看看它們對(duì)大型收件箱的影響有多大:
- 大小不同的收件箱。我們使用這個(gè)配置作為基準(zhǔn),看看在架構(gòu)能承受的范圍內(nèi),收件箱的大小對(duì)性能的影響如何。
結(jié)果顯示影響是呈指數(shù)級(jí)增長的;即當(dāng)文檔的數(shù)量達(dá)到 80,000 時(shí),響應(yīng)時(shí)間會(huì)呈指數(shù)級(jí)增長。
- 64 位 Domino。人們通常認(rèn)為 64 位架構(gòu)的性能遠(yuǎn)遠(yuǎn)優(yōu)于 32 位架構(gòu)。但是,由于 AIX 操作系統(tǒng)已經(jīng)運(yùn)行 64 位的內(nèi)核,因此這個(gè)配置用于測試將 Lotus Domino 代碼改為 64 位時(shí)是否會(huì)對(duì)性能產(chǎn)生影響。
我們的結(jié)果表明,盡管總體響應(yīng)時(shí)間增加并且 OPEN_COLLECTION 性能下降了,但 UPDATE_NOTE 時(shí)間有略微的改進(jìn)。
- 多個(gè) Lotus Domino 服務(wù)器。Lotus Domino 不僅伸縮性很強(qiáng),并且對(duì)系統(tǒng)資源的利用也很出色,尤其是內(nèi)存。使用兩個(gè) Lotus Domino 服務(wù)器的目的是:當(dāng)減少每個(gè) Lotus Domino 服務(wù)器的負(fù)載時(shí),使用相同硬件資源的性能是否會(huì)改變。從技術(shù)上講,這個(gè)配置將測試使用額外的 Lotus Domino 服務(wù)器時(shí),是否能更高效地使用系統(tǒng)資源。
事實(shí)上,效率確實(shí)得到了提升,即 OPEN_COLLECTION 時(shí)間減少,而 UPDATE_NOTE 時(shí)間基本保持不變。
- j2_nBufferPerPagerDevice。這個(gè)配置是 AIX 文件系統(tǒng)級(jí)別的設(shè)置,它調(diào)節(jié)用于文件系統(tǒng)緩沖的內(nèi)存量。如果 I/O 超過了設(shè)置的緩沖值,可以調(diào)整這個(gè)配置。盡管在這個(gè)測試中沒有多大的必要去調(diào)整該設(shè)置,但我們將從默認(rèn)的 512 K 開始增加該值,看看當(dāng)將它設(shè)置得很高時(shí)是否會(huì)有負(fù)面影響。
這個(gè)配置有細(xì)微的性能提升;不過,將該值設(shè)置為默認(rèn)值的 4 倍時(shí),尚未發(fā)現(xiàn)有任何負(fù)面影響。
- j2_minPageReadAhead。這個(gè)配置是另一個(gè) AIX 文件系統(tǒng)設(shè)置。它控制系統(tǒng)對(duì)于任何讀操作所能預(yù)先讀取的頁數(shù)。該配置的目標(biāo)是合并系統(tǒng)必須執(zhí)行的讀操作的數(shù)量。如果這個(gè)設(shè)置能夠明顯改善性能,那么它將表明當(dāng)同時(shí)讀取更多數(shù)據(jù)時(shí),O/I 將會(huì)更加高效。這個(gè)結(jié)果通常表示一個(gè)更有序的 I/O 讀取模式。
結(jié)果表明 OPEN_COLLECTION 性能得到顯著提升,并且預(yù)讀取值越高性能改善越大,盡管這可能會(huì)增加 UPDATE_NOTE 時(shí)間。UPDATE_NOTE 操作確實(shí)因此而延遲一些,但有趣的是,這個(gè)模式不會(huì)隨著預(yù)讀取值的增加而延遲得更多。
- 事務(wù)日志。事務(wù)日志將所有事務(wù)寫出到一組不同的文件中。這個(gè)配置對(duì)數(shù)據(jù)庫的完整性和停機(jī)后服務(wù)器重啟十分有用。有了事務(wù)日志之后,服務(wù)器對(duì)存儲(chǔ)數(shù)據(jù)庫的磁盤的依賴性減弱,因?yàn)槭聞?wù)可以隨時(shí)刷新,而不管停機(jī)何時(shí)發(fā)生。這個(gè)測試度量該特性如何處理由大型數(shù)據(jù)庫引起的負(fù)載。
總體影響基本上是好的,但要注意,該測試條件不適用于并發(fā)事務(wù)很多的情況。低并發(fā)性的測試場景能夠獲得一定的性能提升,這是由事務(wù)日志的本質(zhì)決定的。
- 兩名用戶使用 All Documents 視圖。每個(gè)生產(chǎn)環(huán)境都存在以極端或有害的方式使用系統(tǒng)的人員。在這個(gè)測試中,有兩名用戶的數(shù)據(jù)庫都存儲(chǔ)了 500,000 個(gè)文檔,并且他們同時(shí)使用 All Documents 視圖。這個(gè)配置的目的是度量這種用法的影響。
有趣的是,3 次獨(dú)立運(yùn)行的結(jié)果表明,只有 NIF 操作時(shí)間有細(xì)微的提升(低于 5 %)。因此,Lotus Domino 能夠處理少量異常使用,同時(shí)不給其他用戶造成明顯的影響。
- 緩沖池操作。緩沖池通常占了共享內(nèi)存的大部分,因此通??梢哉{(diào)整這個(gè)配置。這些測試度量了從默認(rèn)值 512 MB 開始,不斷增加該值所造成的影響。
結(jié)果表明性能得到有限的提升,可能是因?yàn)闇y試中并發(fā)事務(wù)不多。在測試運(yùn)行期間,實(shí)際使用的緩沖池不超過 1 GB,盡管服務(wù)器可以使用的大小遠(yuǎn)遠(yuǎn)超過這個(gè)數(shù)值。測試結(jié)果證明了緩沖池在這里影響不大,但對(duì)于存在大量并發(fā)事務(wù)的環(huán)境是有影響的。
圖 3 演示了各個(gè)配置測試的結(jié)果。 #p#page_title#e#
這些數(shù)據(jù)表明,可以從以下方面獲得巨大的性能提升:
- 將負(fù)載分布到多個(gè)服務(wù)器。由于物理資源是相同的,使用兩個(gè)服務(wù)器就能提高資源的效率。這是因?yàn)槎鄠€(gè)服務(wù)器能夠更好地利用物理內(nèi)存,這又使 Lotus Domino 數(shù)據(jù)庫結(jié)構(gòu)緩存遠(yuǎn)遠(yuǎn)優(yōu)于文件系統(tǒng)緩存。
- 通過增加最小預(yù)讀取值來增加 I/O 使用的有序性。這可以通過提高 j2_minPageAhead 值來實(shí)現(xiàn)。這個(gè)測試表明 OPEN_COLLECTION 獲得了更好的性能,而 UPDATE_NOTE 事務(wù)的性能受到損害。不過總體影響是好的。
這是一個(gè)有趣的結(jié)果,將它與通過調(diào)節(jié) j2_nPagesPerWriteBehindCluster 增加 I/O 隨機(jī)性進(jìn)行比較時(shí),尤其如此。我們發(fā)現(xiàn) UPDATE_NOTE 事務(wù)的性能有細(xì)微的改進(jìn),但 UPDATE_COLLECTION 操作的性能更差。
得出的明顯結(jié)論就是,與正常的系統(tǒng)相比,具有更大視圖和文件夾的系統(tǒng)具有不同的 I/O 性能,因此通過調(diào)優(yōu)實(shí)現(xiàn)更加序列化的 I/O 可以大大提高性能。另一方面,對(duì)于文檔、視圖和文件夾比較小的系統(tǒng),可以通過調(diào)優(yōu)實(shí)現(xiàn)更隨機(jī)的 I/O 來提升性能。(注意,這個(gè)系統(tǒng)的頁大小為 4 K,因此一個(gè) 8 頁的預(yù)讀取為 32 K)。
- 使用 64 位 Lotus Domino 進(jìn)行的測試中,UPDATE_NOTE 事務(wù)的性能有所提升,但總體性能大大下降。盡管測試大型數(shù)據(jù)庫時(shí)性能小幅下降,但是總體測試表明并發(fā)行為很多的負(fù)載表現(xiàn)不錯(cuò),如果不是更好的話。
- 我們的測試用例中的緩沖池測試受到收件箱變大的影響。由于每位用戶都使用大型的收件箱,所以可用的磁盤空間限制了我們可以測試的并發(fā)事務(wù)的數(shù)量。因此并發(fā)事務(wù)比較少,這又進(jìn)一步限制了更大的緩沖池的實(shí)際影響。
盡管如此,增加緩沖池還是有一些好處的。1024 MB 的緩沖池和 1536 MB 的緩沖池產(chǎn)生的性能區(qū)別不是很大,因?yàn)椴l(fā)事務(wù)少,所以增加的緩沖池沒有派上用場。
根據(jù)以前的文檔和測試,我們了解到當(dāng)緩沖池超過 1024 MB 時(shí)性能就會(huì)下降。(參見附錄更多地了解具有更大并發(fā)性的緩沖池測試)。
- 事務(wù)日志對(duì)總體性能和兩個(gè)主要事務(wù)類型的影響比較小但非常重要。結(jié)果表明啟用事務(wù)日志能夠提升性能。存在的問題是:如果日志記錄對(duì)性能的影響是正面的,那么可以通過調(diào)優(yōu)來實(shí)現(xiàn)更好的性能嗎?
以前的文檔表明事務(wù)日志需要一些開銷,因此使用它會(huì)影響性能。但對(duì)于數(shù)據(jù)庫大小比并發(fā)事務(wù)的數(shù)量更重要的壓力測試,事務(wù)日志則對(duì)性能有正面的影響。
這些結(jié)論更加證實(shí)了大型文檔對(duì)性能的影響與大量事務(wù)對(duì)性能的影響是非常不同的。因此,任何調(diào)優(yōu)和針對(duì)每種情況的配置都必須是合適的。
一個(gè)不常用并且較新的特性是 RAM 磁盤,它允許使用物理 RAM 存儲(chǔ)文件系統(tǒng)。當(dāng)然,它不是持久化的,但它為任何臨時(shí)的行為提供快速的 I/O。
我們測試的其他方面包括 Lotus Domino Directory 的存儲(chǔ)(實(shí)驗(yàn)性很強(qiáng))、事務(wù)日志存儲(chǔ)和 view_rebuild_directory Notes.ini 參數(shù)的使用。
在測試時(shí),這些方面都不能顯著改善性能。其中的一些原因包括:
- 并發(fā)性程度不夠高。
- Lotus Domino 能夠?yàn)樾枰焖?I/O 的操作提供出色的物理內(nèi)存。
- 測試很嚴(yán)格,并且限制很多;不存在影響性能的其他事件。
例如,在壓力測試期間,需要有限制地重新構(gòu)建視圖。盡管這在生產(chǎn)環(huán)境中很常見,但對(duì)于一般的測試,重構(gòu)視圖則是不常見的。
當(dāng) view_rebuild_dir 參數(shù)指向 RAM 磁盤時(shí),對(duì)重構(gòu)時(shí)間的測試表明性能得到了顯著改善。圖 4 比較了大小為 4 GB 的數(shù)據(jù)庫的重構(gòu)時(shí)間。
至此,我們得出的惟一結(jié)論就是 RAM 磁盤對(duì)視圖重構(gòu)的影響非常大。需要人為地創(chuàng)建視圖重構(gòu)條件,以進(jìn)行觀察。盡管常規(guī)生產(chǎn)環(huán)境中需要重構(gòu)視圖,但一般的測試負(fù)載不需要它。
#p#page_title#e#限制因素主要是文件夾的結(jié)構(gòu)本身會(huì)限制收件箱的大小。由于這個(gè)原因,測試所用的收件箱最多只能包含 80,000 個(gè)文檔。
但是,在常規(guī)的生產(chǎn)環(huán)境中,有些用戶可能會(huì)使用服務(wù)器上的視圖或應(yīng)用程序。我們知道 Lotus Domino 能夠很好地處理這種類型的負(fù)載,但不同的配置會(huì)造成性能區(qū)別嗎?圖 5 顯示了不同功能的響應(yīng)時(shí)間的差別,其中服務(wù)器帶有在視圖中包含 400,000 個(gè)文檔的數(shù)據(jù)庫。
奇怪的是,性能最好的結(jié)果來自于在 RAM 中使用事務(wù)記錄(見圖 5 中的黃線)。這個(gè)結(jié)果在預(yù)料之外,因?yàn)樵谑褂?80,000 個(gè)文檔的測試中,使用事務(wù)日志只產(chǎn)生很小的影響;再者,對(duì)于已測試的大型數(shù)據(jù)庫和視圖,使用事務(wù)日志產(chǎn)生的影響是負(fù)面的。
然而,通過在快速的獨(dú)立設(shè)備(在本例中是一個(gè)基于 RAM 的文件系統(tǒng))中使用日志,我們看到了顯著的性能改善。您甚至?xí)岩杉词故聞?wù)數(shù)量很少,使用大型視圖時(shí)事務(wù)日志設(shè)備也將成為性能的瓶頸。
過去的文檔表明需要使用最快的日志磁盤,所以我們使用 RAM 文件系統(tǒng)重新運(yùn)行測試,看看結(jié)果是否有差別。結(jié)果表明性能的差別不大,很可能是因?yàn)椴l(fā)性水平很低,日志磁盤沒有成為瓶頸。
還需要注意的是,對(duì) view_rebuild_dir Notes.ini 參數(shù)使用 RAM 磁盤,總體性能得到提升。
從這組結(jié)果可以得出的結(jié)論是:
- 使用大型視圖可以在日志設(shè)備和視圖重構(gòu)目錄中引起很大的資源問題。配置和容量的變化對(duì)性能有巨大的影響。
- 事務(wù)日志設(shè)備的速度在視圖或文件夾活動(dòng)頻繁時(shí)顯得更加重要。換句話說,帶有大型文件夾和視圖的數(shù)據(jù)庫增加了事務(wù)日志磁盤對(duì)性能的影響。
- 使用大型視圖的數(shù)據(jù)庫可從對(duì)其 view_rebuild_dir 文件系統(tǒng)使用最快的 I/O 獲得益處。
對(duì)于網(wǎng)絡(luò)壓縮統(tǒng)計(jì)數(shù)據(jù),我們使用 FTP 運(yùn)行該測試以進(jìn)行控制,確定數(shù)據(jù)傳輸如何影響網(wǎng)絡(luò)。在樣例測試中,我們發(fā)現(xiàn)最大速度可以達(dá)到 10 MB/秒。由于 Lotus Domino 活動(dòng)是非線性的、間斷的,我們獲得的總吞吐量很可能比實(shí)際小。
不過,我們最關(guān)心的是平均讀取時(shí)間。在我們的基礎(chǔ)測試中平均讀取時(shí)間為 6.3 MB/秒,而讀操作的速度為 4.3 MB/秒左右。這些數(shù)據(jù)表明網(wǎng)絡(luò)成為了測試的瓶頸。
上面的測試似乎表明壓縮雖然在一定程度上改變了行為,但它對(duì)響應(yīng)時(shí)間的影響不是很明顯。所以,我們認(rèn)為網(wǎng)絡(luò)帶寬不是測試的主要影響因素。
此外,這些測試的并發(fā)性比前面擁有 80,000 個(gè)文檔的測試的并發(fā)性小。為了測試文檔數(shù)量很大時(shí)產(chǎn)生的影響,我們需要在數(shù)據(jù)庫大小不變的情況下進(jìn)一步犧牲并發(fā)性。對(duì)于任何可調(diào)優(yōu)的、沒有產(chǎn)生預(yù)期性能影響的配置,一定要考慮該限制。
為了進(jìn)一步研究該領(lǐng)域,可以考慮測試其他配置。例如,進(jìn)一步研究寫 I/O 模式和網(wǎng)絡(luò)限制,并且采用更大的數(shù)據(jù)庫并提高并發(fā)性,這些只是相關(guān)想法的其中一小部分。盡管本文得出的結(jié)果并不權(quán)威,但關(guān)鍵要意識(shí)到大型數(shù)據(jù)庫的問題非常復(fù)雜。它們的行為與傳統(tǒng)的數(shù)據(jù)庫性能設(shè)想不一樣,因此也要以不同的方式處理大型數(shù)據(jù)庫服務(wù)器的管理和癥狀。
總結(jié)一下我們的測試結(jié)果:
- 與用戶數(shù)量相比,數(shù)據(jù)庫的大小對(duì)性能的影響更大;不過,數(shù)據(jù)庫大小不是惟一的影響。在事務(wù)類型和數(shù)量保持不變的情況下,對(duì)性能影響最大的是所使用的視圖或文件夾的大小,尤其是視圖或文件夾中包含的文檔的數(shù)量。
- 在正常的測試負(fù)載中,還不能證明數(shù)據(jù)庫中的文檔的大小和數(shù)量會(huì)對(duì)性能產(chǎn)生確切的影響。數(shù)據(jù)表明,當(dāng)收件箱的文檔增長時(shí),UPDATE_NOTE 和 NIF 操作時(shí)間呈指數(shù)級(jí)增長。
不過需要注意的是,正常的測試負(fù)載不包含需要耗費(fèi)大量資源的數(shù)據(jù)庫活動(dòng),并且不考慮特定視圖的大小。例如,視圖重構(gòu)和維護(hù)操作需要使用額外的資源來完成相同的任務(wù)。盡管數(shù)據(jù)庫的總大小不是影響性能的最重要指標(biāo),但它仍具有一定的影響。
- 測試證明,并發(fā)用戶對(duì)性能的影響在本質(zhì)上與大型數(shù)據(jù)庫對(duì)性能的影響存在很大的差異。我們發(fā)現(xiàn),I/O 特性表現(xiàn)出一種序列模式,因此采取不同的調(diào)試方式有利于將類似的用戶分組,從而利用配置方面的差異。 #p#page_title#e#
- 物理內(nèi)存的使用方式能夠顯著地影響性能。改變緩沖池、使用多個(gè)服務(wù)器,甚至使用 RAM 磁盤,這都表明改變內(nèi)存的配置能夠提升總體性能。這樣做也會(huì)損害性能,但是我們發(fā)現(xiàn),如果有其他方法能夠利用物理內(nèi)存減少 I/O 操作的話,在我們的測試中使用文件系統(tǒng)緩存一般作用不大。
- 并發(fā)性和數(shù)據(jù)庫大小之間的關(guān)系一直很難準(zhǔn)確界定。在某種程度上,在資源使用和對(duì)性能的總體影響方面,并發(fā)性和數(shù)據(jù)庫大小是互補(bǔ)的。例如,管理員可能將大型數(shù)據(jù)庫與小型數(shù)據(jù)庫結(jié)合使用,從而隱藏性能影響。另一方面,因?yàn)榇笮蛿?shù)據(jù)庫使用服務(wù)器資源更頻繁,方式也更多樣,因此將它與其他數(shù)據(jù)庫隔離開來是有好處的。
- 因?yàn)榇笮蛿?shù)據(jù)庫的行為方式差別很大,所以它對(duì)調(diào)優(yōu)和配置的反應(yīng)也非常不同。這就需要考慮一個(gè)問題,是否應(yīng)該獨(dú)立存放大型數(shù)據(jù)庫,以利用這些調(diào)優(yōu)和配置。有比較充分的證據(jù)表明這樣做是有價(jià)值的。我們希望通過清晰地定義大型數(shù)據(jù)庫的特征,增強(qiáng)對(duì)如何管理性能的理解。
下圖演示當(dāng)小型數(shù)據(jù)庫的并發(fā)性上升時(shí),緩沖池的大小產(chǎn)生的影響。注意,1000 位用戶并不意味著并發(fā)性更多,它僅表示隊(duì)列請(qǐng)求更多。下面的測試中,包含 500 位用戶的測試實(shí)現(xiàn)了更多的并發(fā)事務(wù)。
圖 A1. update_note 時(shí)間
圖 A2. open_collections 時(shí)間和緩沖池大小
從這些圖可以看到,當(dāng)并發(fā)性程度很高時(shí),管理緩沖池的大小能夠獲得顯著的性能提升。將這個(gè)結(jié)果與使用大型數(shù)據(jù)庫的測試進(jìn)行比較,后者獲得的性能提升很細(xì)微。事實(shí)上,在大型數(shù)據(jù)庫測試期間,實(shí)際分配的緩沖池從來不超過 1 GB。這個(gè)結(jié)果演示了并發(fā)事務(wù)對(duì)緩沖池的影響,以及緩沖池的大小如何影響服務(wù)器的性能。
盡管在大型數(shù)據(jù)庫測試中緩沖池從不超過 1 GB,但在并發(fā)性程度很高的小型數(shù)據(jù)庫中,緩沖池的容量得到了充分的利用。因此在這種情況中,測試結(jié)果得出的性能提升比較顯著。不過需要注意,當(dāng)緩沖池的大小超過 1024 MB 時(shí),就會(huì)對(duì)性能產(chǎn)生負(fù)面影響。
過去的測試和總體經(jīng)驗(yàn)表明,緩沖池存在一個(gè)最佳的大?。蝗绻^這個(gè)大小,緩沖池占用的開銷將大于它帶來的好處。但不存在一個(gè)確鑿?fù)ㄓ玫臄?shù)據(jù),因?yàn)榫彌_池的最佳大小隨不同的負(fù)載類型變化,但根據(jù)經(jīng)驗(yàn),當(dāng)緩沖池大于 1 GB 時(shí)往往不是什么好事。
最后,OPEN_COLLECTION 時(shí)間的改善在比例方面要遠(yuǎn)遠(yuǎn)高于用戶數(shù)量的減少。由這個(gè)結(jié)果可知,當(dāng)磁盤的負(fù)載較小時(shí),緩沖池的效率就越高。原因之一就是緩沖池管理指向磁盤的吞吐量;不過,當(dāng)磁盤成為瓶頸時(shí),通過配置緩沖池獲得的額外收益就被抵消了。