配置 COM+ 应用程序回收值

可以使用以下方法为 COM+ 应用程序配置应用程序回收值。

注意

无法回收配置为作为 Windows 服务运行的 COM+ 应用程序。 此外,库应用程序还具有其主机进程的回收和池属性。

 

组件服务管理工具

若要为 COM+ 应用程序配置应用程序回收,请使用以下步骤:

  1. 在组件服务管理工具的控制台树中,右键单击要回收的 COM+ 服务器应用程序,然后单击“属性”。

  2. 在“池 & 回收”选项卡上,输入“生存期限制(分钟)”、“内存限制 (KB)”、“过期超时(分钟)”、“调用限制”和“激活限制”的值,具体取决于要使用的条件。

    • 生存期限制指示进程在回收之前可以运行的最大分钟数。 有效范围为 0 到 30,240 分钟(21 天)。 默认分钟数为 0。
    • 内存限制指示回收进程之前的最大进程内存使用量(以 KB 为单位)。 如果进程的内存使用量超过指定数目超过一分钟,则会回收该进程。 有效范围为 0 到 1,048,576 KB,默认内存使用量为 0 KB。
    • 过期超时指示在强制关闭之前等待的分钟数,之后将释放对进程中对象的所有外部引用。 有效范围为 1 到 1440 分钟(24 小时),默认过期超时为 15 分钟。 仅当已确定将基于其他条件回收进程时,才使用此值。
    • 调用限制指示应用程序对象在回收进程之前可以接受的最大调用数。 有效范围为 0 到 1,048,576 次调用,默认调用数为 0。
    • 激活限制指示回收进程之前可接受的应用程序对象激活的最大数目。 有效范围为 0 到 1,048,576 次激活,默认激活数为 0。

    注意

    将“生存期限制”、“内存限制”、“调用限制”或“激活限制”值设置为 0(默认值)时,将禁用该条件的应用程序回收。 如果将这四个条件都设置为 0,则会为所选应用程序禁用应用程序回收。

     

  3. 单击“确定”。

Visual Basic

Microsoft Visual Basic 中的以下函数演示如何为所选的任何 COM+ 服务器应用程序设置应用程序回收值。 若要从 Visual Basic 使用,请添加对 COM+ 管理类型库的引用。

Function SetMyApplicationRecycling( _
  strApplicationName As String, _
  lngLifetimeLimit As Long, _
  lngMemoryLimit As Long, _
  lngCallLimit As Long, _
  lngActivationLimit As Long, _
  lngExpirationTimeout As Long _
) As Boolean  ' Return False if any errors occur.

    SetMyApplicationRecycling = False  ' Initialize the function.
    On Error GoTo My_Error_Handler  ' Initialize error handling.

    Dim objCatalog As COMAdmin.COMAdminCatalog
    Dim objAppCollection As COMAdmin.COMAdminCatalogCollection
    Dim objApplication As COMAdmin.COMAdminCatalogObject
    Set objCatalog = CreateObject("COMAdmin.COMAdminCatalog")
    Set objAppCollection = objCatalog.GetCollection("Applications")
    objAppCollection.Populate
    For Each objApplication In objAppCollection
        With objApplication
            If .Name = strApplicationName Then
                .Value("RecycleLifetimeLimit") = lngLifetimeLimit
                .Value("RecycleMemoryLimit") = lngMemoryLimit
                .Value("RecycleCallLimit") = lngCallLimit
                .Value("RecycleActivationLimit") = lngActivationLimit
                .Value("RecycleExpirationTimeout") = lngExpirationTimeout
                MsgBox strApplicationName & _
                  " recycling values are now set to the following: " & _
                  vbNewLine & vbNewLine & _
                  "Lifetime Limit = " & lngLifetimeLimit & vbNewLine & _
                  "Memory Limit = " & lngMemoryLimit & vbNewLine & _
                  "Call Limit = " & lngCallLimit & vbNewLine & _
                  "Activation Limit = " & lngActivationLimit & vbNewLine _
                  & "Expiration Timeout = " & lngExpirationTimeout
                Exit For
            End If
        End With
    Next
    objAppCollection.SaveChanges
    Set objApplication = Nothing
    Set objAppCollection = Nothing
    Set objCatalog = Nothing
    SetMyApplicationRecycling = True  ' Successful end to procedure
    Exit Function
    
My_Error_Handler:  ' Replace with specific error handling.
    MsgBox "Error # " & Err.Number & " (Hex: " & Hex(Err.Number) _
      & ")" & vbNewLine & Err.Description
    Set objApplication = Nothing
    Set objAppCollection = Nothing
    Set objCatalog = Nothing
End Function

若要使用该函数,请提供应用程序名称的值,以及所需应用程序回收设置的整数值。 以下 Visual Basic 代码演示如何将 RecycleLifetimeLimit 值设置为 5,将 RecycleMemoryLimit 值设置为 10,将 RecycleCallLimit 值设置为 9,将 RecycleActivationLimit 值设置为 100,以及将 RecycleExpirationTimeout 值设置为 15。

Sub Main()
    If Not SetMyApplicationRecycling("MyApp", 5, 10, 9, 100, 15) Then
        MsgBox "SetMyApplicationRecycling failed."
    End If
End Sub

COM+ 应用程序回收概念