Compartir a través de


Evitar excepciones de DBNETLIB

Los errores de DBNetLib (biblioteca de red de base de datos) se producen cuando el entorno de ejecución de BizTalk Server no puede comunicarse con las bases de datos MessageBox o Management. Cuando esto ocurre, la instancia en tiempo de ejecución de BizTalk Server que detecta la excepción se cierra y, a continuación, recorre cada minuto para comprobar si la base de datos está disponible.

La causa más común de un error DBNetLib es cuando uno de los servidores de bases de datos MessageBox (posiblemente muchos) se vuelve extremadamente ocupado y los intentos adicionales de comunicarse con él resultan en un tiempo de espera, lo que provoca una excepción DBNetLib.

Además del caso en el que la base de datos MessageBox simplemente está muy ocupada, el error DBNetLib puede producirse en un entorno de producción cuando los servidores de base de datos de BizTalk que hospedan una o más bases de datos MessageBox, queden vinculados por E/S (entrada/salida).

En este tema se describen las condiciones que pueden provocar errores y recomendaciones de DBNetLib para evitar estos errores.

Causa y resolución del error DBNetLib

Síntomas de un error de DBNetLib

Una instancia de host de Microsoft BizTalk Server finaliza y, a continuación, se reinicia, y los errores similares a los siguientes se escriben en el registro de aplicaciones de BizTalk Server:

Event Type:Warning  
Event Source:BizTalk Server <version>  
Event Category:BizTalk Server <version>   
Event ID:5410  
Computer:BIZTALKSERVER  
Description:  
An error occurred that requires the BizTalk service to terminate. The most common causes are the following:  
 1) An unexpected out of memory error.  
 OR  
 2) An inability to connect or a loss of connectivity to one of the BizTalk databases.   
 The service will shutdown and auto-restart in 1 minute. If the problematic database remains unavailable, this cycle will repeat.  
  
 Error message: [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation.  
 Error source:    
  
 BizTalk host name: BizTalkHost  
 Windows service name: BTSSvc$BizTalkHost   
  
---------------------------------------------------------  
Event Type:Error  
Event Source:BizTalk Server <version>  
Event Category:BizTalk Server <version>   
Event ID:6913  
Computer:BIZTALKSERVER  
Description:  
An attempt to connect to "BizTalkMsgBoxDb" SQL Server database on server "SQLSERVER " failed.  
 Error: "[DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation."  

Servidores de bases de datos de BizTalk que hospedan bases de datos MessageBox que se convierten en limitadas por E/S

Los servidores de BizTalk se comunican y actúan directamente con los servidores de bases de datos que hospedan las bases de datos messageBox. Si alguno de los servidores de bases de datos que hospedan las bases de datos de cuadro de mensajes se consume demasiado y entra en una situación enlazada de E/S (entrada/salida), es posible que no responda. Uno de los servidores de BizTalk podría perder a su vez la conectividad con uno de esos servidores de bases de datos y se producirá un error DBNetLib.

Nuestras pruebas muestran que un servidor de bases de datos altamente utilizado se vuelve limitado por E/S cuando el "tiempo%Idle" de su disco físico continúa disminuyendo y baja de 10%. Si el "%Idle tiempo" continúa bajando de ese nivel, esto es una indicación de que probablemente el servidor de base de datos deje de responder.

Causa

Hay varias razones que pueden hacer que los servidores de base de datos que hospedan las bases de datos de MessageBox se conviertan en limitados por E/S, algunas de estas son las siguientes:

  • Si la máquina de base de datos que hospeda la base de datos messagebox está enlazada por especificaciones de hardware bajas, como: memoria baja, número y velocidad de procesadores, etc.

  • Si el disco físico de la máquina de base de datos que hospeda una base de datos MessageBox se comparte con otras bases de datos muy utilizadas. En caso de que varias bases de datos (incluido el buzón de mensajes) se consuman mucho al mismo tiempo, el disco físico puede entrar en una situación de saturación de E/S.

    Un ejemplo de esta situación es el siguiente:

    Nuestras pruebas muestran que el servidor de bases de datos que hospeda las bases de datos de BizTalkDTADb y/o BAM a veces consume altos porcentajes de los tiempos de lectura y escritura %Disk de un disco físico. Cuando el disco del servidor de bases de datos que hospeda una base de datos de cuadro de mensajes está siendo compartida por otra base de datos altamente consumida, como BizTalkDTADb o BAM, y si ambas bases de datos se consumen de forma muy simultánea, podrían hacer que el disco físico del servidor de bases de datos se vuelva enlazado a E/S y, a continuación, no responda.

  • Si BizTalkDTADb y una o varias de las bases de datos MessageBox comparten el mismo disco físico en el servidor de bases de datos, y si el archivado y la purga no se ejecutan con frecuencia, es posible que el disco se convierta en restringido por E/S.

Resolución

Asegúrese de que los servidores de base de datos que hospedan los MessageBox de BizTalk no entren en una situación en la que estén muy cargados y posiblemente no respondan.

A continuación se enumeran algunas de las principales causas de que un disco de servidor se consume mucho, junto con recomendaciones sobre cómo mitigar este problema.

Bajas especificaciones de hardware

Nuestras pruebas muestran que el servidor empieza a consumirse más cuando sus especificaciones de hardware no pueden mantenerse al día con la cantidad de carga que intenta procesar. Con especificaciones de hardware inferiores, el sistema se sobrecarga rápidamente por la cantidad de actividades que se producen en las bases de datos. Esto podría hacer que los tiempos de lectura y escritura del servidor %Disk continúen aumentando sin estabilizarse; además, el tiempo de %Idle del disco podría seguir disminuyendo y llegar a ser inferior a 10%, lo que podría hacer que el servidor de bases de datos se vuelva irresponsive.

En función de la cantidad de actividades y carga que tenga en la implementación de BizTalk, si encuentra que recibe servidores de bases de datos que no responden durante cargas altas, debe considerar la posibilidad de actualizar las siguientes partes en los servidores de bases de datos: número de CPU, memoria y conexión a una SAN. Por supuesto, debe hacer el diagnóstico adecuado para averiguar qué parte (memoria, número de CPUs, etc.) es el cuello de botella que debe actualizarse en su hardware.

Uso compartido de un servidor o disco para más de un grupo de bases de datos de BizTalk

Como se mencionó anteriormente, las bases de datos que no sean cuadros de mensajes, como la base de datos de seguimiento de BizTalk (BizTalkDTADb) y las bases de datos bam, pueden consumir ciclos altos en el disco físico de un servidor. Por lo tanto, si esas bases de datos comparten el mismo disco físico con las bases de datos messageBox, podrían ahogar el disco y hacer que no responda, lo que de nuevo podría hacer que los servidores de BizTalk desconecten la conectividad con las bases de datos messageBox y, por tanto, lleguen a DBNetLib.

Se recomienda encarecidamente separar cualquier base de datos que se espere tenga un alto consumo del disco físico del servidor de los cuadros de mensajes de BizTalk, para que compartan discos físicos diferentes (o se separen en distintos servidores). Se recomienda separar las bases de datos BizTalkDTADb y BAM en sus propias unidades o servidores independientes de los cuadros de mensajes y también se recomienda tener cada base de datos de cuadro de mensajes (en caso de que haya más de una) en su propio disco.

Archivado y eliminación

En caso de que tenga bases de datos BizTalkDTADb y MessageBox que comparten el mismo disco en el mismo servidor, debe archivar y purgar las bases de datos de BizTalkDTADb con regularidad; de lo contrario, aumentarán indefinidamente.

Las pruebas indican que es recomendable archivar y purgar periódicamente, pero si se ejecuta con cargas más altas de lo normal, es posible que desee considerar la posibilidad de archivar y purgar con más frecuencia. Si el crecimiento de la base de datos de BizTalkDTADb no se mantiene periódicamente, cuando estas acciones se realizan finalmente, pueden tardar mucho tiempo y consumir la mayoría de los recursos disponibles del servidor de bases de datos mientras se ejecutan.