Tiempo aproximado de lectura: 00:10:00 min
Duda
Sugerencias para mejorar el Performance Protheus ?
Ambiente
Cross Segmentos - TOTVS Backoffice (Línea Protheus) MI - Configurador (SIGACFG) - Todas las versiones 12
Solución
Evalúe inicialmente la información de la documentación siguiente Protheus: Hardware mínimo recomendado
Protheus en entornos virtualizados: Entornos virtualizados
Protheus en proveedores de nube: Protheus en el proveedor
Después de la evaluación de la enlaces anteriores, para identificar al infractor de la lentitud generalizada de Protheus enumeramos los siguientes pasos:
Si se encuentra con la última versión de LIB, Binary y DBAccess, y todo el mantenimiento del entorno se realiza periódicamente, el caso de lentitud debe analizarse puntualmente.
1. Actualización:
1.1. Verifique que la versión de LIB, Appserver, Smartclient, DBAccess y License Server sea la misma que la última disponible en el Portal del Cliente porque constantemente se implementan algunas mejoras que tienen como objetivo optimizar el rendimiento para el entorno Protheus 12. Algunas de las mejoras son:
- Carga de RPO
- Apertura de Thread
- Búsqueda de usuarios
1.2. Las actualizaciones de DBAccess y Appserver deben realizarse simultáneamente en la mayoría de los casos, ya que los cambios realizados en la biblioteca dbapi de Appserver se reflejan en DBAccess.
2. Configuración:
2.1. Filtro:
Cuando se genera la ralentización al intentar filtrar por un campo, por ejemplo en la rutina Cuentas por pagar, al intentar filtrar un valor que corresponde a un valor pagado que no tiene índice, en este caso se genera la lentitud debido a la ausencia de índice. Para solucionarlo basta con crear un índice para el campo al que se le desea realizar el filtro.
2.2. Personalizaciones;
Para comprobar que la ralentización se debe a una rutina personalizada a través del punto de entrada al sistema, incluya en el INI del servidor dentro del entorno utilizado la línea IXBLOG=NORUN. Si no se produce la lentitud, es necesario volver a analizar las personalizaciones.
Por ejemplo,
[Ambiente]
...
IXBLOG=NORUN
2.3. Smartclient:
Se recomienda ejecutar Smartclient localmente porque esto minimiza el tráfico de red.
2.4. Latencia:
La latencia de red es uno de los puntos que puede causar lentitud en Protheus porque todos los datos traficados entre Smartclient y Server se verán afectados. Para comprobar si la latencia de red está afectando el rendimiento de Protheus, ejecute el programa U_NETTEST en el período de 1 hora y analice los resultados que están por encima de 100ms. Por encima de 100 ms de respuesta la lentitud ya es notada por el usuario.
2.5. Política de Appserver:
Mantener la cohesión de los Appservers es una de las buenas prácticas que garantiza el buen funcionamiento de Protheus, en este caso sugerimos la distribución por responsabilidades entre los Appservers.
Arquitectura sugerida
- Appserver Master
- Appserver Slaves
- Appserver Jobs - Schedule
- Appserver Web Service - Portal
2.6. Consumo de memoria:
Si identifica que el consumo de memoria de los servicios de Protheus es alto, sugerimos el análisis de dos puntos:
1. Número de usuarios conectados al esclavo.
Para este caso, se deben crear nuevos esclavos de acuerdo con el recurso computacional disponible, ya que entonces se equilibrará el volumen de conexión entre los esclavos y, en consecuencia, el consumo de memoria disminuirá en ellos.
2. Consumo por programa.
Cuando es de alto consumo por programa, debe identificar y aislar el programa con alto consumo de memoria, luego generar los registros y reenviarlos al equipo específico para que los analice.
DebugThreadUsedMemory: DebugThreadUsedMemory
ServerMemoryInfo: ServerMemoryInfo
ConsoleMaxSize: ConsoleMaxSize
2.7. Numeración automática:
Para un mejor rendimiento del entorno se recomienda utilizar el control de numeración
por parte del Servidor de Licencias.
Compruebe que el parámetro appserver.ini del servidor de licencias está configurado para el parámetro EnableNumber=1, que realiza el control automático de numeración directamente por el servidor de licencias virtual. Porque cuando el control se realiza a través de las tablas SXE/SXF, la competencia en la gestión de Ctree aumenta y causa un impacto significativo en el rendimiento de Protheus.
2.8. ShowStatus:
Verifique que el servidor de aplicaciones del servidor de licencias.ini haya configurado el parámetro ShowStatus igual a 0, deshabilitado, para no mostrar toda la información de licencia de usuario. Cuando el parámetro ShowStatus se valora en 1, habilitado, se escribe un gran volumen de información en la consola.log y tiene un impacto en el rendimiento del sistema.
2.9. TraceIndex:
Verifique que en dbaccess.ini el parámetro TraceIndex esté con el valor de 0, deshabilitado, este parámetro debe habilitarse solo cuando esté monitoreando la herramienta. ( TraceIndex=0 )
2.10. Monitor de índice:
Compruebe que el Monitor de índice de DBAccess está desactivado porque cuando esta función está activada afecta directamente al rendimiento de Protheus 12. Es un recurso en particular para las bases heredadas.
2.11. Archivos del sistema:
Verifique que el número de archivos en el directorio SYSTEM ubicado en el PROTHEUS_DATA sea inferior a 10,000. Porque desde el momento en que el directorio SYSTEM almacena más de 10.000 archivos, Protheus comienza a perder rendimiento durante su uso. Los archivos que se pueden eliminar de la carpeta SYSTEM son: *.tmp, sc*.log, sc*.dtc, sc*.cdx y sc* sin extensión.
2.12. Auditoría de tabla:
Cuanto menor sea el alcance de las entidades que desea auditar, tablas y campos, y cuantas menos operaciones desee, incluir, cambiar o eliminar, menor será el impacto en el rendimiento del sistema después de aplicar la pista de auditoría integrada. Un análisis cuidadoso de lo que necesita ser auditado dará como resultado un mejor rendimiento del producto.
No se recomienda auditar todos los campos para su inclusión en tablas dinámicas, especialmente tablas que tienen un gran número de campos. Debido a que la operación include registra todos los campos sujetos a auditoría, el impacto en el rendimiento puede ser significativo.
2.13. Opciones de energía:
Asegúrese de que la configuración de energía del servidor esté seleccionada. Alto Rendimiento (High Performance) . Identificamos que con la configuración de energía Balanceada se presenta mayor tiempo para apertura de Thread y lectura de disco.
2.14. Indexación automática del sistema de archivos :
Asegúrese de que la función de indexación automática del disco esté deshabilitada en la partición del disco donde está instalada la aplicación. Cuando esta característica está habilitada, termina degradando el rendimiento de Protheus .
2.15. Escaneo de antivirus en la carpeta Protheus_Data - Totvs:
Compruebe si el escaneo en tiempo real del antivirus en el directorio PROTHEUS_DATA está deshabilitado de la aplicación del entorno de producción o para los archivos que se enumeran a continuación, porque cuando se habilita el análisis en tiempo real , hay un impacto directo en el rendimiento de Protheus cuando se leen los archivos. Si la política de seguridad de la empresa no permite esta configuración, las siguientes extensiones deben excluirse del análisis durante el análisis del antivirus :
E:\TOTVS\Microsiga\Protheus_Data RootPath
*.amt
*.cdx
*.idx
*.ind
*.lcx
*.lck
*.int
*.dtc
*.log
*.tmp
*.mem
*.sem
*.fcs
E:\TOTVS\Microsiga\Protheus\apo SourcePath
*.rpo
2.16. Hardware del servidor de aplicaciones :
Compruebe si el hardware disponible para el servidor de aplicaciones cumple con la demanda de conexiones y rutinas que requieren más hardware en las horas pico cuando el sistema está siendo utilizado por casi todos los usuarios. Para ayudar con este análisis, puede contactar al equipo de TIS a través del correo electrónico tis.comercial@totvs.com.br y solicitar que se realice un Proyecto de Dimensionamiento del Ambiente .
2.17. Configuración de MARS en DBAccess con MSSQL
La configuración de MARS en el archivo appserver.ini es exclusiva de la base de datos MS SQL
Habilitarlo mejora el rendimiento de DBAccess . Para más información sobre esta configuración acceda a este enlace : DBAccess - Sección [Entorno], clave MARS
2.18. Correcta configuración del Drive ODBC
Configurar correctamente la conexión a la base de datos vía ODBC , evitando así conflictos. Consulte el procedimiento de configuración de ODBC en el siguiente enlace :
Cómo crear una fuente de datos para usar con Microsoft SQL Server
3. Mantenimiento
3.1. Fragmentación de tablas, SQL Server
Compruebe si hay tablas de base de datos e índices que estén desfragmentados. La fragmentación de tablas reduce el rendimiento de la base de datos y las aplicaciones. Desfragmentar las tablas y tablespaces de la base de datos de la aplicación, con el fin de mejorar las operaciones DML y DQL en la base de datos y aumentar el rendimiento de las rutinas de Protheus . Uno de los grandes problemas que tenemos en cuanto a rendimiento se debe a la fragmentación de nuestros índices. Con la gran cantidad de inserciones, alteraciones y eliminaciones que se producen en nuestras tablas, los índices se fragmentan cada vez más, provocando una ralentización en la manipulación de los datos de estos índices.
Verificar si hay índices pertenecientes a las tablas de la aplicación que estén fragmentados, ya que cuando estos índices están fragmentados, el rendimiento de la aplicación y de la base de datos disminuye. En este caso, Reconstruya los índices de las tablas de la aplicación.
3.2. Estadísticas de SQL Server:
Compruebe si las estadísticas de las tablas de la base de datos de Protheus están actualizadas, ya que las estadísticas desactualizadas afectan el rendimiento de la aplicación. Si no está actualizado, recopile estadísticas del esquema de la base de datos y del diccionario de datos para mejorar el rendimiento. Dos parámetros existentes en las bases de datos de SQL Server puede traer efectos de una mejor experiencia Protheus:
Estadísticas de actualización automática : configurada en Verdadero , las estadísticas del índice se actualizan automáticamente.
Estadísticas de creación automática : establecida en True , las estadísticas del índice se crean automáticamente, cada vez que crea un índice, en la ejecución de cada declaración, SQL Server crea un conjunto de estadísticas sobre los datos contenidos en el índice.
El optimizador de consultas usa estas estadísticas para determinar si debe o no usar el índice para ayudar a procesar la consulta, en el caso de que Protheus sepa dónde se asignan los datos, el retorno será más rápido.
Mantener la base de datos, reindexando y/o reconstruyendo índices y actualizando estadísticas, además de monitorear el espacio para el crecimiento de los archivos de datos y los archivos de registro de la base de datos. Compruebe también la coherencia física y lógica de la base de datos. Estos procedimientos son responsabilidad del DBA de la empresa , en caso de no contar con DBA , se podrá convocar al equipo consultor de TOTVS para esta evaluación.
3.3. Recopilación de estadísticas de Oracle :
Oracle Database necesita buenas estadísticas para tomar las mejores decisiones sobre la ruta de acceso más adecuada. Sin ninguna estadística, la base de datos debe hacer suposiciones sobre cuáles son las mejores formas de acceder a los datos. En muchos casos, lleva a la base de datos a elegir rutas de menor rendimiento. Las estadísticas que se recopilan incluyen estadísticas sobre tablas, número de filas, número de bloques, estadísticas sobre columnas, número de valores distintos, número de NULL y distribución de datos, estadísticas sobre índice, número de bloques, tamaño de índice, factor de clúster y estadísticas sobre Rendimiento de sistema. Se utilizan dos métodos para recopilar estadísticas: el comando de análisis y el paquete proporcionado dbms_stats .
El Método dbms_stats es el más utilizado para calcular estadísticas para la base de datos, sin embargo en futuras versiones, el paquete dbms_stats será la única manera de calcular las estadísticas. Vale la pena señalar que el método dbms_stats es el que recomendamos usar, a través de los scripts a continuación:
Método gather_schema_stats
El método gather_schema_stats calcula estadísticas para todos los objetos en un esquema dado. Las estadísticas se pueden colocar en el diccionario de datos o en la tabla de estadísticas de un usuario.
Recomendamos usar el siguiente script.
Recomendamos utilizar la recopilación de estadísticas del diccionario de la base de datos y el propietario donde se encuentran los datos de Protheus .
exec sys.dbms_stats.gather_dictionary_stats (comp_id => nulo, estimación_porcentaje => nulo, método_opt => 'PARA TODAS LAS COLUMNAS tamaño AUTO', grado => 2, cascada => VERDADERO, no_invalidar => verdadero); execsys.dbms_stats.gather_schema_stats('PROTHEUS',CASCADE=>TRUE,METHOD_OPT=>'PARA TODAS LAS COLUMNAS INDEXADAS');
0 Comentarios