Sun Java System Messaging Server 6 2005Q4 管理指南

imsimta 計數器

MTA 根據郵件監視 MIB 和 RFC 1566 為每個使用中的通道累積郵件通訊量計數器。通道計數器旨在為您指示電子郵件系統的趨勢和運作狀況。通道計數器並不用於提供精確的郵件通訊量計數。如需精確計數,請參閱 MTA 記錄 (第 21 章, 管理記錄中有說明)。

MTA 通道計數器使用最輕的可用機制實作,因此它們在實際作業中產生的影響非常小。通道計數器不難嘗試:如果嘗試對映區段失敗,則不會記錄任何資訊;如果區段中的其中一個鎖定無法立即獲得,則不會記錄任何資訊;系統關閉時,內部記憶體區段中包含的資訊將永遠遺失。

imsimta counters -show 指令提供 MTA 通道郵件統計 (參閱以下內容)。需要不斷檢查這些計數器,同時請注意顯示的最小值。某些通道的最小值實際上可能為負數。負值表示在通道計數器設定為零時 (例如,建立了計數器的叢集寬度資料庫) 為該通道形成了郵件佇列。當這些郵件被移出佇列時,該通道的相關計數器便會減少,因而導致出現負的最小值。對於此類計數器,正確的「絕對」值是目前值減去計數器自初始化以來所具有的最小值。


Channel          Messages    Recipients    Blocks 
-------          --------    ----------    ------- 
tcp_local
   Received       29379       79714      982252                (1)
   Stored            61         113       -2004                (2)
   Delivered      29369       79723      983903 (29369 first time)  (3)
   Submitted      13698       13699       18261                (4)
   Attempted          0           0           0                (5)
   Rejected           1          10           0                (6)
   Failed           104         104        4681                (7)

   Queue time/count        16425/29440 = 0.56                  (8)
   Queue first time/count  16425/29440 = 0.56                  (9)

   Total In Assocs           297637
   Total Out Assocs           28306

1) Received 是在名為 tcp_local 的通道中形成佇列的郵件數。亦即由任何其他通道在 tcp_local 通道中形成佇列的郵件 (mail.log* 檔案中的 E 記錄)。

2) Stored 是儲存在通道佇列中要傳送的郵件數。

3) Delivered 是已由通道 tcp_local 處理過 (移出佇列) 的郵件數。(即,mail.log* 檔案中的 D 記錄。)移出佇列作業可能表示成功遞送 (即在其他通道中形成佇列),也可能是由於郵件被返回至寄件者而導致的移出佇列。這通常相當於 Received 數減去 Stored 數。

MTA 還記錄初次嘗試將多少個郵件移出佇列;此數目顯示在括號中。

4) Submitted 是由通道 tcp_local 在其他通道中形成佇列的郵件 (mail.log 檔案中的 E 記錄) 數。

5) Attempted 是在移出佇列中遇到暫時問題的郵件數,即 mail.log* 檔案中的 Q 或 Z 記錄。

6) Rejected 是被拒絕的形成佇列的嘗試次數,即 mail.log* 檔案中的 J 記錄。

7) Failed 是移出佇列的嘗試失敗次數,即 mail.log* 檔案中的 R 記錄。

8) Queue time/count 是傳送的郵件在佇列中花費的平均時間。這包含初次嘗試中投遞的郵件 (請參閱 [9]) 以及需要額外投遞嘗試的郵件 (因此通常會在佇列中花很長的時間等待)。

9) Queue first time/count 是初次嘗試時傳送的郵件在佇列中花費的平均時間。

請注意,所提交的郵件數目可能大於遞送的郵件數目。這是通常情況,因為由通道移出佇列 (遞送) 的每個郵件將導致至少一個新郵件形成佇列 (提交),但也可能是多個。例如,如果郵件有兩個分別經由不同通道到達的收件者,則將需要形成兩個佇列。或者,如果郵件被退回,系統會將一個副本傳回給寄件者,將另一個副本傳送給 Postmaster。通常,這將是兩次提交 (除非兩者都透過同一個通道到達)。

一般來說,SubmittedDelivered 之間的連線視通道的類型而有所不同。例如,在轉換通道中,郵件將由其他任意通道形成佇列,然後轉換通道將處理該郵件並使其在第三個通道中形成佇列,並在該郵件的自身佇列中將其標記為移出佇列。每個單獨的郵件均佔用一個路徑:

elsewhere -> conversion E record Received
conversion -> elsewhere E record Submitted
conversion              D record Delivered

但是,對於 tcp_local 之類的通道,它不是「通道」,而是具有兩個單獨的部分 (從屬部分與主要部分),並且 SubmittedDelivered 之間沒有連線。Submitted 計數器與 tcp_local 通道的 SMTP 伺服器部分有關,而 Delivered 計數器與 tcp_local 通道的 SMTP 用戶端部分有關。這是兩個完全獨立的程式,通過它們的郵件可以是完全獨立的。

提交給 SMTP 伺服器的郵件︰

tcp_local -> elsewhere E record Submitted

經由 SMTP 用戶端傳送給其他 SMTP 主機的郵件︰

elsewhere -> tcp_local E record Received
tcp_local              D record Delivered

通道移出佇列 (遞送) 將導致至少一個新郵件形成佇列 (提交),但也可能是多個。例如,如果郵件有兩個分別經由不同通道到達的收件者,則將需要形成兩個佇列。或者,如果郵件被退回,系統會將一個副本傳回給寄件者,將另一個副本傳送給 Postmaster。通常將透過同一個通道到達。

在 UNIX 和 NT 上實作

由於效能原因,執行 MTA 的節點使用共用記憶體區段 (UNIX) 或共用檔案對映物件 (NT) 將通道計數器的快取保留在記憶體中。當節點上的程序將郵件形成佇列和移出佇列時,它們將更新此內部記憶體快取中的計數器。如果在通道執行時內部記憶體區段不存在,則系統將自動建立此區段。(如果內部記憶體區段不存在,imta start 指令亦可建立此區段)。

指令 imta counters -clearimta qm 指令 counters clear 可用於將計數器重設為零。