Limitaciones de rendimiento de componentes de integración de aplicación de BizTalk que se escriben en Visual Basic

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

327323
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
Este artículo describe el impacto que el modelo de subprocesamiento de componentes de integración de aplicaciones de BizTalk (AICs) tiene en el rendimiento de estos componentes. Además, este artículo explica por qué pueden realizar mal AICs que desarrollar utilizando Microsoft Visual Basic 6.0.

Más información
El modelo de subprocesamiento que se utiliza al desarrollar un componente de integración de aplicaciones (AIC) enormemente afecta al rendimiento del componente. El rendimiento de la AIC afecta el rendimiento general del motor de mensajería BizTalk. Esto se aplica a AICs que utilizan el IPipelineComponent o la interfaz COM de IBTSAppIntegration .

Terminología de COM

Puede utilizar los objetos COM en varios subprocesos de un proceso. Los términos de apartamento de un único subproceso (STA) y en el Apartamento multiproceso (MTA) se utilizan para crear un marco conceptual para describir lo siguiente:
  • la relación entre objetos y subprocesos.
  • las relaciones de simultaneidad entre objetos.
  • el medio por el método que las llamadas se entregan a un objeto.
  • las reglas para pasar punteros de interfaz entre subprocesos.
Componentes y sus clientes admiten las tres configuraciones de ThreadingModel siguientes:
  • modelo de apartamento Multi-Threaded ( MTA ): uno o más subprocesos se ejecutan en el MTA. Cualquier objeto en el MTA puede ser atendida por cualquier subproceso en el MTA. Acceso al objeto no está limitado al subproceso que creó el objeto.

    Dado que varios clientes simultáneos pueden llamar a objetos más o menos simultáneamente (simultáneamente en sistemas multiprocesador), objetos deben sincronizar su estado interno por sí mismos. No se convierten interfaces entre subprocesos. Algunos información de Microsoft y la documentación anterior se refiere a este modelo como el modelo de subprocesamiento libre .
  • modelo de apartamento de subproceso único ( STA ): sólo un subproceso puede ejecutar en cualquier STA dado (puede haber varias emisoras en el proceso). El objeto o los objetos que se ejecutan dentro de un STA dado sólo pueden sea atendidos por el subproceso que creó o crear una instancia del STA. Todas las llamadas a y desde obects en un STA se calculan cuando el llamador o destinatario está fuera del mismo STA. Un caso de variante del modelo de apartamento de un único subproceso se denomina el modelo de subprocesamiento único. En este caso, todos los objetos creados desde cualquier clase basada en STA se ejecutan en el mismo STA. Por lo tanto, se serializa el acceso a cualquiera de estos objetos en el uno subproceso que servicios este único STA.

    Algunos información de Microsoft y la documentación anterior se refiere al modelo STA como el modelo de apartamento .
Puede utilizar el modelo STA y el modelo MTA en el mismo proceso. A veces se denomina un proceso de modelo mixto .

Seleccione un modelo de subprocesamiento

El motor de mensajería de BizTalk Server es multiproceso; el launchs motor AICs en varios subprocesos al procesar los documentos. Para usar completamente las ventajas de la arquitectura de multiproceso, desarrolle los AICs para admitir su alojamiento en un MTA.

La BizTalk Server Adapter Developer's Guide recomienda que para escenarios de alto rendimiento, AICs deben admitir el modelo de alojamiento de MTA. Este artículo indica lo siguiente:
"Esto debe ser comprensible para indicar que Visual Basic 6 no debe utilizarse para desarrollar los componentes necesarios para satisfacer las necesidades de rendimiento intensivo escenarios. De forma predeterminada y diseño, Visual Basic 6 genera los componentes que se ejecutan en un apartamento de subproceso único (STA) lo que el motor de BizTalk calcular las referencias los parámetros de un apartamento multiproceso, en el apartamento de subproceso único y viceversa. Visual C++ y otras herramientas que son capaces de generar componentes MTA deben utilizarse para desarrollar componentes de alto rendimiento."
Para obtener más información acerca del rendimiento deficiente de AICs de Visual Basic, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
291670Rendimiento lento de componentes de integración de aplicación que están escritos en Visual Basic
El motor de mensajería de BizTalk Server tiene un número de subprocesos de trabajo que sondear la cola de elementos de trabajo de BizTalk para documentos procesar dedicado. Puede configurar el número de subprocesos de trabajo que utiliza el motor de mensajería de BizTalk Server estableciendo la propiedad Server número máximo de subprocesos permitido . Si, como resultado de procesar un documento, se debe llamar un AIC, a continuación, debe crearse el componente y el método apropiado debe llamarse.

AICs de subprocesamiento libres

Cuando el AIC esté libre un subproceso, el componente es crear una instancia en el MTA del servicio de mensajería de BizTalk (Mscis.exe). Los métodos en el AIC ahora se pueden llamar directamente con ninguna activación, los resultados de rendimiento muy alto. Mensajería de BizTalk Server no se comparte las instancias de AICs a través de sus subprocesos. Por lo tanto, BizTalk no obtiene acceso a un componente varias veces al mismo tiempo. Esto simplifica el desarrollo de componentes de subprocesamiento libres.
BizTalk Engine calls to a multi-threaded apartment (MTA) AIC are direct

Subprocesamiento AICs

Cuando un AIC es de subprocesamiento de apartamento, el componente debe estar alojado en un apartamento STA.. Por lo tanto, cuando el subproceso de trabajo (que se ejecuta en el MTA) se requiere para crear instancias de un componente de subprocesamiento de apartamento dentro del mismo proceso, la infraestructura del modelo de objetos componentes (COM) crea una instancia ese componente en el host STA. Hay sólo un STA de host por proceso. El STA de host está diseñado específicamente para objetos de la casa de clases basadas en STA cuando su creador tiene ThreadingModel de libre.

El proceso de mensajería de BizTalk Server (Mscis.exe) tiene sólo un STA que aloja todo el apartamento subprocesamiento AICs. Los subprocesos de trabajo tener acceso a los componentes STA alojado a través de una interfaz de proxy. El host STA se ejecuta en un único subproceso. Para impedir llamadas de método está reentrada, el host STA utiliza un bucle de mensaje interno para cada llamada al método de la cola. Un único subproceso toma los mensajes de esta cola (como llamadas de métodos) y, a continuación, realiza la llamada al componente en el mismo subproceso. Dado que hay sólo un host STA que aloja todas AICs subprocesamiento, todas las llamadas de método a estos componentes están en cola detrás de otras.
BizTalk Engine calls to a single threaded apartment (STA) AIC must be marshaled
En este ejemplo son: true
  • El subproceso de trabajo 1 ha llamado a ProcessMessage en el componente a.
  • El subproceso de trabajo 2 ha llamado a ProcessMessage en el componente B.
  • El subproceso de trabajo 3 ha llamado a ProcessMessage en otra instancia del componente a.
Estas llamadas se procesan secuencialmente en el host STA. La llamada al componente B no se completará hasta que finalice la llamada anterior a ProcessMessage en componente. Si las llamadas de métodos se bloquean durante cualquier período de tiempo, esto afecta negativamente al rendimiento.

Aumentar el rendimiento AIC mediante COM +

Tanto la BizTalk Server Adapter Developer's Guide y el artículo de Knowledge Base 291670 describen algunos efectos adversos de AICs de subprocesamiento de apartamento desarrollados en Visual Basic 6.0. Mediante el uso de COM + de Microsoft, puede aumentar el rendimiento de estos componentes en algunos casos. Cuando se instala un AIC en una aplicación de servidor COM +, se ejecuta en un proceso independiente (Dllhost.exe) está administrado por COM +. El aumento del rendimiento se consigue porque COM + crea y administra un grupo de subprocesos STA. Las ventajas de rendimiento de esto son los siguientes:
  • Cada componente que puede implementar en una aplicación está aislada de otras aplicaciones. Por ejemplo, si implementa AIC A y B AIC en aplicaciones COM + independientes, no se serializan las llamadas de método a cada componente detrás de otras.
  • Cada aplicación mantiene una agrupación subproceso de hosts STA instead of sólo un host STA único.
La tabla siguiente compara el rendimiento de componentes de apartamento y componentes de subprocesamiento libres para las implementaciones de COM +. Para la prueba, 500 documentos se enviaron para procesamiento. Esto causado un AIC al que se va a llamar que escribe en el registro de sucesos de Windows y que bloquea durante dos segundos. La prueba se realizó en un único servidor de Pentium III 800 que tenía 512 megabytes (MB) de RAM y se configuró con 12 subprocesos de procesador.

Los resultados de la prueba mostrar sólo la diferencia de gran velocidad relativa entre estos enfoques. Estos resultados no son una evaluación del rendimiento definitiva. Por ejemplo, al implementar componentes de apartamento y componentes de subprocesamiento libres en varios sistemas de procesador, el perfil del rendimiento es diferente. Más bastante, los componentes de subprocesamiento libres mostrar un aumento adicional.

comparación de rendimiento AIC
+--------------------------------------------------------------+|                |              |        |          | Relative || Model          | Host         | Time   | Docs/sec | speed    |+--------------------------------------------------------------+| Apartment      | MSCIS.exe    | 16 min | 0.50     | 1.0x     || (Visual Basic) |              | 37 sec |          |          |+--------------------------------------------------------------+| Apartment      | COM+ Library | 2 min  | 3.93     | 7.8x     || (Visual Basic) | Application  | 7 sec  |          |          |+--------------------------------------------------------------+| Apartment      | COM+ Server  | 1 min  | 4.35     | 8.7x     || (Visual Basic) | Application  | 55 sec |          |          |+--------------------------------------------------------------+| Free Threaded  | MSCIS.exe    | 1min   | 5.81     | 11.6x    || (C++ ATL)      |              | 26 sec |          |          |+--------------------------------------------------------------+| Free Threaded  | COM+ Library | 1 min  | 5.88     | 11.7x    || (C++ ATL)      | Application  | 25 sec |          |          |+--------------------------------------------------------------+| Free Threaded  | COM+ Server  | 1 min  | 5.81     | 11.6x    || (C++ ATL)      | Application  | 26 sec |          |          |+--------------------------------------------------------------+				

Limitaciones de apartamento de subproceso AICs que realizan llamadas método larga

Cuando se coloca un subprocesamiento AIC en COM +, puede aumentar el rendimiento de la AIC. Sin embargo, este aumento sólo puede producirse si el AIC no realiza cualquier larga (o bloqueando ) llamadas de método. Se considera una llamada de bloqueo si tarda un tiempo largo o indeterminado en devolver, por ejemplo, las llamadas al servidor, red llama a esa llamada a procedimiento remoto de uso (RPC) o sockets.

Si los subprocesamiento de apartamentos AICs deben realizar llamadas de método larga, debe desarrollar estos AICs como componentes de subprocesamiento libres. No utilice Visual Basic 6.0 para desarrollar estos componentes. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
291837No realice llamadas de bloqueo de un componente STA.
Si sus AICs deben realizar llamadas al método larga, debe desarrollar los componentes de subprocesamiento libres como mediante ATL de Visual C++ o con Visual Studio. NET.

Nota BizTalk Server 2000 no admite componentes de integración aplicación que se escribe en Visual Studio. NET.

Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
832165BizTalk Server 2000 no es compatible con componentes escritos en Visual Studio .NET

Componentes de subprocesamiento de apartamento no ajustar

Continuación describe por qué subprocesamiento los componentes que método larga llamadas no escala. Esta descripción se toma en el siguiente sitio Web:
Conservar el rendimiento de la aplicación al trasladar desde MTS a COM +
http://msdn2.microsoft.com/en-us/library/ms809941.aspx
En COM +, cada aplicación de servidor mantiene dos grupos de subprocesos independientes. Servicios de fondo de subproceso una objetos STA mientras los otros subprocesos grupo libre encadenada componentes de servicios (y no tiene ningún límite en el número de subprocesos).

El algoritmo que se utiliza para administrar el grupo de subprocesos componentes STA configurados basado en Windows 2000 es más complejo que el algoritmo que utiliza para MTS en Windows NT 4.0.

El grupo de subprocesos STA de COM + tiene los atributos siguientes:
  1. El tamaño de grupo tiene un tamaño inicial de 7 + n subprocesos, donde n es el número de procesadores.
  2. El tamaño máximo de este grupo es de 10 * n subprocesos.
  3. Elementos de trabajo están en cola subprocesos específicos, para que cuando está enlazado cada subproceso cinco actividades (en total 5 * elementos de trabajo (7 + n)), se crea un subproceso nuevo, copia al tamaño máximo del grupo que está permitido.
  4. Cuando se alcanza el tamaño máximo del grupo, se colocan los elementos de trabajo adicional en la cola en los subprocesos existentes. Por tanto, cada subproceso puede tener más que cinco actividades en ella.
  5. Si el número de subprocesos en el grupo es mayor que el mínimo (7 + n) y subprocesos están inactivos durante algún tiempo, estos subprocesos inactivos terminan. El tamaño del grupo no disminuye por debajo del mínimo tamaño.
Por ejemplo, en un único sistema de CPU, el grupo de STA crece de ocho al máximo de subprocesos STA 10. A diferencia de MTS, COM + enlaza hasta cinco actividades a un subproceso. Ya que COM + enlaza varias actividades a un subproceso, la primera actividad sea atendido puede durar como la suma de todas las actividades pendientes si realiza llamadas OOA (salida de controlado). Ésta es un ejemplo de cómo funciona este proceso:
  • Tiene cinco actividades que están enlazadas a un subproceso STA de COM + agrupado. Actividad 1 Obtiene el subproceso y su método empieza a ejecutar.
  • Durante la llamada de método 1 actividad realiza una llamada OOA. El canal de COM entra el bucle de mensajes del subproceso y continúa bombeo de mensajes mientras la RPC enviar subproceso realiza la llamada de bloqueo real. Actividad 2 es atendida mientras espera la llamada al método devolver el 1 de actividad.
  • El problema es que actividad 1 no se obtuviera el control del subproceso STA nuevo hasta que el 2 de actividad finaliza su trabajo. Si actividad 2 también realiza una llamada OOA y, a continuación, actividad 3 Obtiene el subproceso STA, el proceso puede continuar hasta el 5 de la actividad (si todas estas actividades realizan llamadas OOA).
  • Debe esperar actividad 1 de 2 de actividad completar, que debe esperar 3 completar, que debe esperar a 4 completar y así sucesivamente. El resultado final es que si estas llamadas son largas ejecuta, porque COM + colas hasta cinco actividades por subproceso, la hora que es necesaria para método la actividad del primer para ejecutar es el total de su propio tiempo en ejecutarse más el tiempo necesario para que las actividades ejecutar otras cuatro.
En MTS, llamadas de larga no causaba tanta de un problema hasta que se agote el grupo de subprocesos. Antes de ese punto, ninguno de los subprocesos podrían impedir que otros llamadores atendidas ni tendría haberse evitados de finalización a sí mismos. Pero con 100 subprocesos, para aplicaciones escritas correctamente con llamadas de método de corta duración, el contexto de cambio puede disminuir el rendimiento.

Para minimizar el cambio de contexto, el grupo de subprocesos STA de COM + está optimizado para llamadas de método de ejecución corta con mucho menos subprocesos. Se recomienda que evite larga llamadas al método. A diferencia de cliente-servidor informática, el paradigma de n -el procesamiento de nivel es para "obtener y" tan rápidamente como sea posible. A causa del tamaño y enlace de actividad de grupo de subprocesos STA MTS, podría enmascarar este problema en la arquitectura. En COM +, se puede exponer el problema.

Nota : puede configurar el grupo de subprocesos STA de COM + se ejecuta como el grupo de subprocesos MTS consigue establecer 100 subprocesos y una actividad por subproceso. Para ello, la clave de registro EmulateMTSBehavior . Esto no se recomienda porque el mecanismo de grupo de subprocesos de COM + está diseñado para mejorar el rendimiento, y hay razones válidas para usar su algoritmo. Para obtener más información, visite el siguiente sitio Web de Microsoft:

Aislamiento de proceso COM +

COM + proporciona ventajas de rendimiento para los componentes de subprocesamiento de apartamento. Sin embargo, COM + también puede proporcionar aislamiento de procesos de AICs del motor de mensajería BizTalk propio. Puede conseguir rendimiento final implementando el componente de subproceso libre en proceso al motor de mensajería de BizTalk, pero se perderá de aislamiento de procesos. Un error en el AIC en proceso podría provocar un error en el motor de mensajería BizTalk.

Por lo tanto, se recomienda que implemente BizTalk AICs en COM + como aplicaciones de servidor, a menos que ambas de las acciones siguientes son verdaderas:
  • Debe tener un rendimiento último.
  • Exhaustiva han probado los AICs.
Esto proporciona aislamiento de procesos. AICs se pueden implementar como aplicaciones de servidor COM + para obtener un mayor grado de control. Esto permite apagar a una aplicación COM + individual (o el paquete de MTS terminología) si se produce un problema con un componente concreto.

Si los componentes de subprocesamiento de apartamento, decidir cuidadosamente cuántos COM + aplicaciones que utiliza ya la aplicación tiene un único grupo de subprocesos MTA y los componentes más implementar en la aplicación, mayor será la carga en el grupo de subprocesos. Además, cada aplicación carga un nuevo proceso, lo que aumenta la carga del servidor.

Componentes de subprocesamiento libres ofrecen mayor escalabilidad porque no es necesario equilibrar la carga de grupo de subprocesos y carga del servidor. Puede implementar componentes de subprocesamiento libres en una aplicación COM + sin ningún efecto en la escalabilidad.

Aumentar el rendimiento mediante la agrupación de objetos COM +

También puede aumentar el rendimiento de AICs utilizando agrupación de objetos COM +. Agrupación de objetos puede mejorar el rendimiento eliminando la sobrecarga de activación. El grupo de objetos COM + crea el componente en un subproceso MTA. Ésta es una lista de requisitos para la agrupación de objetos:
  • Objetos deben estar marcados con TM = libre , TM = ambos , o TM = neutral . No se puede agrupar objetos que están marcados controlado (no se puede agrupar componentes de Visual Basic porque se ejecutan en STA).
  • Los objetos deben ser agregables.
  • Objetos deben implementar IObjectControl , que permite a los servicios COM + para administrar el objeto.
  • Objetos no deben estar controlado Agile por agregan el FTM (subproceso libre).
  • Debe preparar objetos que se llama en cualquier subproceso. Marcar el objeto con sincronización = requiere , que comprueba que un subproceso a la vez tendrá acceso al objeto.
  • Objetos no deben mantener cualquier estado de dependiente de contexto entre activaciones.
  • Objetos no deben agregar cualquier otro objeto agrupado.
COM + utiliza el concepto de un objeto contenedor exterior que grupos de los objetos internos en Sí. Desgraciadamente, no cada entorno de desarrollo puede crear los objetos agrupables. No se puede agrupar objetos de Visual Basic 6.0 porque no se puede agregar un componente del contenedor exterior.

Por lo tanto, para escribir los objetos agrupables, debe utilizar Visual C++ y la Active Template Library o Visual Studio. NET. Si escribe los componentes para admitir la agregación, se agrupan automáticamente.

Nota BizTalk Server 2000 no admite componentes de integración aplicación que se escribe en Visual Studio. NET.

Referencias
Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
136885Subprocesos OLE deben enviar mensajes
291670Rendimiento lento de componentes de integración de aplicaciones escritas en Visual Basic
291837No realice llamadas de bloqueo de un componente STA.
303071Clave del registro para ajustar el subproceso COM + y actividad
Para obtener más información, visite los siguientes sitios Web de Microsoft (pueden estar en inglés):
Conservar el rendimiento de la aplicación al trasladar desde MTS a COM +
http://msdn2.microsoft.com/en-us/library/ms809941.aspx

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 327323 - Última revisión: 01/17/2015 05:56:55 - Revisión: 4.5

  • Microsoft BizTalk Server 2000 Standard Edition
  • Microsoft BizTalk Server 2002 Standard Edition
  • kbnosurvey kbarchive kbmt kbgraphxlinkcritical kbinfo KB327323 KbMtes
Comentarios