Domino Http 活動執行緒數的推薦設定

2021-06-06 04:25:15 字數 2059 閱讀 2684

環境:(產品,平台,機型,軟體版本,等)

產品: lotus domino

版本:8.0, 7.0, 6.5, 6.0

問題描述:

lotus domino server的http 活動執行緒數最大推薦值是多少?這個設定位於伺服器文件->internet 協議->http->活動的執行緒數

解答:考慮到記憶體的限制和執行緒切換所需的開銷,建議對於單處理器的伺服器,此值不要設定超過64;對於多處理器的伺服器,此值不要設定超過80。如果超過了建議的設定值,很可能會降低伺服器效能,甚至導致宕機。即使對於某些作業系統,比如i5/os (iseries),可以設定較高的活動執行緒值(可達到512),分配較多的活動執行緒也不意味著一定會有更好的效能。

domino 6 及以後的版本已經允許更少的執行緒執行更多的工作。所以,超過80個活動執行緒會由於執行緒的切換反而對效能產生負面影響。因此,上面給出的活動執行緒數已經是最大的建議設定值。您需要決定的是具體設定為什麼值會最適合您的生產環境。這裡建議您從預設的40個執行緒數開始,逐漸地增長,可以一次增長10個執行緒數,來決定設定為何值時可將效能調整為最優。

對於domino6、7、8 伺服器來說,您可以通過定時輸入「show stat」命令來收集統計資訊,以調整http的執行緒數:

domino.threads.active.peak (r5 及以上版本) – 當執行特定的nsf請求時,併發的http執行緒峰值

http.currentconnections (domino 6及以上版本) –當前http伺服器的連線數,不論是何種請求型別

http.peakconnections (domino 6.0.5/6.5.4及以上版本) –從http伺服器啟動開始的連線峰值,不論是何種請求型別

這三個統計值可以看出伺服器的負載情況,但是不能說明一定要增加http工作的執行緒數才能具有好的效能。

在決定是否增加http工作的執行緒數之前,您需要關注的是如何提高伺服器的處理能力,而不是一味關注伺服器的負載。舉例來說,在threads.active.peak 統計值是75時設定80個活動執行緒,這種情況不意味著就會比40個活動執行緒,峰值40效能更好。當然,這取決於請求的型別,以及執行於domino伺服器上的應用。

說到伺服器的處理能力,您可以通過處理單個請求所花費的時間來判斷,也就是以下這兩個統計資訊相除的結果:

http.worker.total.requestsprocessed (domino 6.5.4 及以上版本) – http工作執行緒所處理的請求總數

http.worker.total.totalrequesttime (domino 6.5.4 及以上版本) - http工作執行緒所處理的請求所花費的總時間

用totalrequesttime 除以 requestsprocessed, 就會得到伺服器處理能力的統計數值。

另外,完成乙個請求所需的時間也可以被記錄,只是這種方法需要使用者做一些額外的操作,如定製指令碼,或手工地把這些資料分析出來。

為更好地設定活動執行緒數,建議您在觀察伺服器處理能力的同時,也同樣觀察伺服器在處理一些簡單請求所花費的平均時間,比如"options *" 或 "get /test.html"(這裡,test.html可以是乙個簡單的html頁面或是其他小資源)。如果這些簡單請求的響應時間已經達到了不能接受的範圍,那麼您可以考慮增加http工作執行緒數。然後繼續觀察伺服器處理情況以及簡單請求的響應時間,以檢測是否提高了伺服器的效能。

另外,您還可以通過壓力測試來模擬對於您的應用預期的負載量,同樣運用上邊提到的建議值以及統計資料。一些測試資料記錄在developerworks的相關文件中,您可以通過這篇文章最後列出連線訪問這些文件。

注意:domino.threads.active.peak 只記錄了併發的nsf請求數, 非nsf請求不包括在內。因此,如要收集同時包括nsf以及非nsf的資訊,您可以定期輸出"show stat http" ,並觀察http.worker.totalrequestsprocessed 和 http.worker.total.totalrequesttime 這兩個統計值。 對於更多的關於http執行緒數的討論,請參考developerworks: lotus web site中的這篇文章:

執行緒建立 執行緒數

coding utf 8 import time import threading def sing for i in range 5 print 唱山歌咯 str i time.sleep 1 def dance for i in range 5 print 跳舞 str i time.sleep...

貪心 多執行緒活動時間安排

poj 3190 stall reservations n個活動,開始時間a,結束時間b,編號id。按最早開始時間排序,向執行緒中安排 優先佇列記錄各執行緒的最後乙個活動,按最早結束時間排序。include include includeusing namespace std struct node...

多執行緒執行(限制執行緒數)

多執行緒執行 限制執行緒數 coding utf 8 import threading from ctypes import import queue,os import time,datetime class store threading.thread def init self,store,q...