SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

Mostrando entradas con la etiqueta Rendimiento. Mostrar todas las entradas
Mostrando entradas con la etiqueta Rendimiento. Mostrar todas las entradas

miércoles, 9 de enero de 2013

SharePoint 2007 lento (solucionado)

Si están experimentando un problema de lentitud de SharePoint, por ejemplo: uno o dos minutos al cargar la página principal, es posible que estos artículos cambien su vida:

Espero les resulte útiles!

miércoles, 28 de noviembre de 2012

¿Cómo manejar los problemas de rendimiento de las líneas base en Project?

Introducción

Microsoft Project permite almacenar líneas base de los proyectos con el objetivo de hacer controles y comparaciones durante la vida del mismo. Las líneas base son una foto del proyecto que almacena la siguiente información:

  • Fechas de inicio
  • Fechas de fin
  • Duraciones
  • Trabajo
  • Costos

Al almacenar esta información se pueden hacer ciertos análisis, comparando lo que se debería haber hecho con lo que realmente se hizo. Incluso se pueden almacenar varias versiones de líneas base. También se pueden generar vistas de Gantt que comparen dos líneas base.

Son muchos los puntos a favor, pero hay un punto en contra: el rendimiento. Almacenar una línea base ocupa bastante lugar, porque prácticamente duplica el espacio utilizado, lo que ocasiona:

Si el rendimiento es un problema importante, el punto a analizar es si realmente se necesita utilizar esta funcionalidad o alcanza con una de menor alcance.

En este documento se analizan alternativas para un escenario en el cual interesa almacenar sólo las fechas planificadas de un proyecto y consultarlas en un reporte en Project Server.

.

La alternativa de los planes interinos

La funcionalidad de planes interinos, es otra alternativa que Project ofrece y que sólo almacena la siguiente información:

  • Fechas de inicio
  • Fechas de fin

Si esa información alcanza para el requerimiento, entonces es una buena elección, porque cambia el espacio ocupado, tal como se ve en el siguiente ejemplo, de un proyecto creado desde cero con 148 tareas (basado en la plantilla MSF Application Development).

Acción Espacio ocupado
Proyecto 1 - Grabación inicial 423 K
Proyecto 1 - Grabación de línea base sin cambios 423 K
Proyecto 1 - Cambio de fecha de proyecto y grabación 720 K
Proyecto 1 - Cambio de fecha de proyecto y grabación línea base 2 944K
Proyecto 1 - Cambio de fecha de proyecto y grabación línea base 3 1.152 K
Proyecto 2 - Grabación inicial 423 K
Proyecto 2 - Grabación de línea base sin cambios 544 K
Proyecto 2 - Cambio de fecha de proyecto y grabación 576 K
Proyecto 2 - Cambio de fecha de proyecto y grabación línea base 2 576 K
Proyecto 2 - Cambio de fecha de proyecto y grabación línea base 3 592 K

Como se ve en la tabla, los planes interinos ocupan menos lugar, pero tienen un problema en las implementaciones de Project Server. La información de las fechas copiadas no llega a la base de datos de Reporting en forma automática, lo cual haría necesario desarrollar algún tipo de custom para que pueda ser consumida por un reporte.

 

La alternativa de las líneas base con menos información

Otra alternativa que surge es la de hacer menos pesada la línea base, usando las siguientes opciones:

  • Grabar sólo tareas seleccionadas
  • Seleccionar sólo la tarea 0 del proyecto

Esta imagen muestra las opciones elegidas (en donde previamente se seleccionó la tarea 0):

image

A continuación los resultados:

Acción Espacio ocupado
Proyecto 3 - Grabación inicial 448 K
Proyecto 3 - Grabación de línea base sin cambios 544 K
Proyecto 3 - Cambio de fecha de proyecto y grabación 544 K
Proyecto 3 - Cambio de fecha de proyecto y grabación línea base 2 560 K
Proyecto 3 - Cambio de fecha de proyecto y grabación línea base 3 560 K

Se puede ver que casi no ocupa espacio adicional. También se puede ver que sólo se almacena la información de línea base en la tarea 0 del proyecto:

image

¿Cuáles son las desventajas?

  • No es intuitivo
  • Se pierde el análisis de desvíos a nivel de tarea

 

Otras alternativas

En caso que se decida no utilizar líneas base, las alternativas posibles son:

  • Campos personalizados
  • Lista de SharePoint en el sitio de proyecto

Estas opciones no tendrían impacto en el rendimiento y hasta podrían ser más intuitivas. Pero se pierden todas las ventajas de una funcionalidad estándar como la línea base, que fácilmente nos permite visualizar desvíos y Gantts de tracking.

Eso es todo por hoy. Hasta la próxima.

miércoles, 19 de septiembre de 2012

jueves, 12 de julio de 2012

Mejoras al rendimiento de Project Server 2007 [Parte 2]

Introducción

Este es el segundo artículo que enumera posibles acciones para mejorar el rendimiento de Project Server 2007. En el artículo anterior se enumeró como acción principal la desfragmentación de índices de la base de datos, lo que en principio generó una mejora del 28% en el tiempo de publicación de un proyecto.

En esta segunda parte vamos a probar otras acciones, que a continuación se enumeran:

  • Eliminación de recursos locales
  • Truncamiento del log de transacciones
  • Instalación de Microsoft Best Practices Analyzer
  • Control de CPU y Memoria
  • Ejecución de un plan completo de mantenimiento de base de datos
  • Eliminación de líneas base no utilizadas
  • Eliminación de calendarios locales no utilizados

 

Eliminación de recursos locales

Esta podría ser una de las posibles causas que afecten el rendimiento. En el proyecto que usamos de prueba, sólo contábamos con 4 recursos locales. Los eliminamos y vimos que el tiempo de publicación no cambió.

De todas maneras, es una acción que habría que tener en cuenta si tenemos muchos recursos locales, cosas que en principio no tiene mucho sentido en una instalación de Project Server, donde los recursos deberían ser corporativos.


Truncamiento del log de transacciones

Truncar los archivos de transacciones es una acción que podría afectar el rendimiento. En nuestro caso de ejemplo, había algunos archivos de tamaño importante. Los truncamos a todos y no obtuvimos mejoras. Lo que sí, recuperamos espacio en disco.

Para efectuar el truncamiento, utilizamos estos comandos (en el ejemplo están aplicados a la base de Reproting):

Use ProjectServer_Reporting

Go

Backup Log ProjectServer_Reporting With Truncate_Only

GO

Declare @LogFileLogicalName sysname

select @LogFileLogicalName=Name from sys.database_files where Type=1

print @LogFileLogicalName

DBCC Shrinkfile(@LogFileLogicalName,100)

 

Instalación de Microsoft Best Practice Analyzer

Microsoft Best Practices Analyzer for Windows SharePoint Services 3.0 and the 2007 Microsoft Office System es un producto de Microsoft que genera ciertos informes que pueden ayudar a los administradores en temas de rendimiento y escalabilidad.

Instalamos el producto descargándolo desde el siguiente enlace:

http://www.microsoft.com/en-us/download/details.aspx?id=11948

Una vez instalado y descomprimido, ejecutamos el siguiente comando:

sharepointbpa.exe -cmd analyze -substitutions SERVER_NAME nombre_servidor

Es posible que se obtenga un mensaje como el siguiente:

WARNING: No messages in file. Analysis may not have been run.

En nuestro caso sucedió porque no habíamos respetado el valor “SERVER_NAME”.

Una vez ejecutado, se obtiene un informe como el siguiente:

clip_image002

En particular, en este caso, el informe no generó recomendaciones que puedan mejorar el rendimiento.


Control de CPU y Memoria

Otras de las pruebas realizadas consistieron en controlar los recursos del servidor y del cliente. Controlamos la memoria y CPU de ambos utilizando el administrador de tareas de Windows en el momento de la publicación de un proyecto.

También ejecutamos algunas herramientas de SQL Server como Activity Monitor y Performance Monitor. No encontramos mayores problemas, pero es importante realizar estos controles. Podrían llevarnos a acciones como el cambio de configuración de nuestra granja, la separación física del servidor de SQL, entre otras.

image

clip_image006


Plan completo de mantenimiento de base de datos

En el documento anterior nos habíamos enfocado en la des-fragmentación de índices. En esta prueba, realizamos un plan completo que incluyó las actividades que se muestran en la siguiente imagen:

clip_image008

No se lograron mejoras significativas, pero de todas maneras sigue siendo una tarea recomendable. Un dato importante es que el plan completo llevó más de 30 minutos de ejecución:

image

 

Eliminación de líneas base no utilizadas

Otra prueba realizada consistió en la eliminación de las líneas base no utilizadas. En el proyecto de ejemplo eliminamos 5 líneas base de un total de 6. Esto redujo el tiempo de publicación de 5 a 3 minutos. Importante mejora.

 

Eliminación de calendarios no utilizados

Finalmente optamos por eliminar un conjunto de calendarios locales que tenía el proyecto, desde la opción Calendarios dentro de Herramientas / Organizador. Esto generó una mejora de un minuto aproximada.

No se puede decir con exactitud cuanta mejora atribuir a la eliminación de calendarios y cuánto a las línea base, aunque pareciera que la eliminación de las líneas base tiene un efecto más que importante.


Conclusión

Nuestro proyecto de prueba de 2.000 tareas tardaba originalmente 7 minutos en completar todas las tareas asociadas a la publicación, tal como se muestra en la imagen:

clip_image011

Luego de aplicar algunas acciones, se observa una reducción de 5 minutos, una mejora de 71% distribuida de la siguiente forma:

  • Desfragmentación de índices (2 minutos)
  • Eliminación de líneas base no utilizadas (2 minutos)
  • Eliminación de calendarios locales no utilizados (1 minuto)

En la imagen se ve el resultado:

clip_image013

La acción de desfragmentación de índices se puede programar para ejecutar periódicamente fuera del horario operativo.

Las acciones de eliminación de líneas base o calendarios locales, pueden ser buenas recomendaciones hacia los líderes para mantener sus proyectos más limpios, y por lo tanto con mejor rendimiento

Otras acciones que pueden mejorar el rendimiento tienen que ver con la revisión y reducción de ciertos parámetros como:

  • Cantidad de campos personalizados
  • Cantidad de recursos
  • Nivel de complejidad de las reglas de seguridad
  • Cantidad de proyectos en línea (no archivados)

viernes, 29 de junio de 2012

Mejoras al rendimiento de Project Server 2007 [Parte 1]

Este artículo es el primero de una serie de artículos sobre la mejora en el rendimiento de Project Server.  En este  primer documento se describen buenas prácticas de mantenimiento de la base de datos de Project Server 2007, lo que incluye fundamentalmente:

  1. La verificación de la integridad de la BD
  2. La desfragmentación de índices, reorganizándolos o reconstruyéndolos.
  3. La configuración del “fill factor”
  4. El monitoreo del tamaño de la base de datos

En el documento se explica en detalle los puntos 1 y 2. Para mayor información sobre los puntos 3 y 4, consultar el siguiente artículo: http://surpoint.blogspot.com.ar/2012/03/sharepoint-2007monitoreo-de-la-la-base.html

Incluye además pruebas realizadas en un ambiente de estas características:

  • Project Server 2007 con Services Pack 3
  • Windows SharePoint Services 3.0 con Services Pack 3
  • SQL Server 2005 con Service Pack 4(importante, no aplicar este procedimiento si no se aplicó SP2 de SQL Server)

 

Introducción

Antes de comenzar, es importante recordar que Project Server tiene 4 bases de datos:

  • Draft
  • Published
  • Archive
  • Reporting

Draft soporta la información de los proyectos aún no publicados, no tiene comunicación con Project Web Access. Maneja también las tablas utilizadas por el servicio de cola de Project Server.

Published almacena los proyectos publicados que pueden ser accedidos desde PWA. También incluye información específica de PWA como timesheets, vistas o la definición propia de los campos personalizados.

Archive almacena copias de seguridad en línea.

Reporting contiene la información de Published, pero optimizada para reportes y para la carga de los cubos OLAP. Se actualiza prácticamente en tiempo real, es sencilla de entender y está optimizada para operaciones de lectura.

Además existen las bases de datos de SharePoint:

  • Una o más bases de datos de contenido.
  • La base de datos de configuración de SharePoint.
  • Una o más bases de datos de SSP.

Más información en: http://technet.microsoft.com/en-us/library/cc973099(v=office.12)

 

Antes de comenzar

Antes de comenzar con las tareas e mantenimiento, verificar que:

  • Tengamos los backups de nuestras bases de datos
  • Sepamos el tiempo de ejecución de las tareas y el impacto que puedan ocasionar
  • Planificar la ejecución de estas tareas, fuera del horario de trabajo, dentro de lo posible

Algunas buenas prácticas a tener en cuenta para nuestro plan de mantenimiento:

  • Aplicar reorganización de índices o reconstrucción, no ambas.
  • Comenzar siempre por el chequeo de integridad y no continuar si este falla.
  • En SharePoint, la única base sobre la que puede ser necesario reducir tamaño (shrink) es la base de contenido. No suele ser necesario y podría generar fragmentación si lo hacemos sobre las bases de configuración, SSP, búsqueda o incluso la BD de contenido de Central Administration.

Algunas otras recomendaciones pueden ser consultadas en este artículo: http://technet.microsoft.com/en-us/library/cc973104(v=office.12)

 

Verificación de integridad de la Base de Datos

Este primer paso se ejecuta para cada base de datos desde SQL Server Management Studio. Utilizamos DBCC CHECKDB. Más información en http://msdn.microsoft.com/en-us/library/ms180226.aspx

USE ProjectServer_Draft

DBCC CHECKDB

USE ProjectServer_Published

DBCC CHECKDB

USE ProjectServer_Reporting

DBCC CHECKDB

USE ProjectServer_Archive

DBCC CHECKDB

USE WSS_Content

DBCC CHECKDB

USE SharedServices1_DB

DBCC CHECKDB

USE SharePoint_Config

DBCC CHECKDB

Si no encontramos problemas, debería aparecer un mensaje como el siguiente:

DBCC results for 'ProjectServer_Draft'.

...

CHECKDB found 0 allocation errors and 0 consistency errors in database 'SharePoint_Config'.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Las pruebas realizadas en un ambiente de prueba arrojaron estos tiempos:

Base de Datos

Tiempo

Draft

2 minutos

Published

3 minutos

Reporting

2 minutos

Archive

2 minutos

SharePoint – Contenido

1 minuto

SharePoint – Configuración

Despreciable

SharePoint – SSP

Despreciable

Total

10 minutos

 

Desfragmentación de índices - Análisis

Comenzamos por medir el estado de desfragmentación de la base de datos utilizando sys.dm_db_index_physical_stats. Más información en http://technet.microsoft.com/en-us/library/ms188917(SQL.90).aspx

Si especificamos todos los parámetros en nulo, medirá todo lo que tenemos en la instancia de SQL Server. Si necesitamos ejecutarlo para una base en particular, podemos especificar el ID de la base de datos. Para conocer el ID de la base de datos utilizamos BD_ID. Más información en http://technet.microsoft.com/en-us/library/ms186274(v=sql.90).aspx

Para comenzar, vamos a verificar los índices de la base de datos Draft de la siguiente forma:

USE ProjectServer_Draft

SELECT DATABASE_ID,

CAST(DB_NAME(DATABASE_ID) AS VARCHAR(30)) AS 'DatabaseName',

CAST(OBJECT_NAME([OBJECT_ID]) AS VARCHAR(40)) AS 'TableName',

INDEX_ID,

CAST(INDEX_TYPE_DESC AS VARCHAR(30)) AS INDEX_TYPE_DESC,

AVG_FRAGMENTATION_IN_PERCENT

FROM SYS.DM_DB_INDEX_PHYSICAL_STATS (DB_ID(N'ProjectServer_Draft'),NULL,NULL,NULL,NULL )

ORDER BY AVG_FRAGMENTATION_IN_PERCENT DESC;

Es importante manejarse con cuidado a la hora de pasar parámetros a este procedimiento usando funciones del sistema. Para mayor información, consultar la sección “Using System Functions to Specify Parameter Values” en este enlace: http://msdn.microsoft.com/en-us/library/ms188917.aspx

Debemos esperar un valor que tienda a 0 y que en lo posible no supere el 10% en el campo AVG_FRAGMENTATION_IN_PERCENT.

Obtendremos un resultado de este tipo:

clip_image002

Continuamos con la base Published. El resultado es el siguiente:

clip_image004

Realizamos el mismo proceso con el resto de las bases de datos. A continuación los tiempos de ejecución:

Base de Datos

Tiempo

Draft

Medio minuto

Published

Medio minuto

Reporting

Medio minuto

Archive

1 minuto

SharePoint – Contenido

Medio minuto

Total

Las acciones a tomar pueden depender del nivel de fragmentación:

Acción

Nivel de fragmentación

Reorganización

Hasta 10%

Reonstrucción

10% a 75%

Reconstrucción fuera de línea

Más del 75%

En SharePoint no están soportados los comandos DROP INDEX y CREATE INDEX, en su lugar se debe usar ALTER. En rigor, para desfragmentar los índices de SharePoint, se recomienda ejecutar el procedimiento almacenado tal como se indica en este artículo: http://support.microsoft.com/kb/943345/en-us

Para ProjectServer, utilizaremos un asistente de plan de mantenimiento de Base de Datos.

 

Desfragmentación de Índices – Ejecución

Antes de comenzar con las tareas de re construcción de índices, vamos a tomar los tiempos que lleva la publicación de un proyecto de 2.000 tareas. Vemos en la pantalla de la cola de Project Server los resultados obtenidos: 7 minutos

clip_image006

Vamos a ejecutar el proceso de reconstrucción de índices paras las base de datos de Project Server (ya mencionamos anteriormente que el procedimiento es diferente al recomendado para SharePoint).

Para ello, creamos un plan de mantenimiento con la única opción de reconstruir los índices, recordar que ya habíamos verificado la integridad de la base de datos anteriormente. En un plan productivo, deberíamos incluir más opciones. Más información sobre planes de mantenimiento en estos enlaces:

En la siguiente imagen se ve desde dónde comenzar la creación de un plan de mantenimiento en SQL Server Management Studio:

clip_image008

Estas son las opciones elegidas:

clip_image010

Nuevamente, se necesita SP2 de SQL Server 2005, para aplicar este procedimiento.

En caso contrario, no sólo no es seguro, sino que podemos romper la base de datos.

clip_image012

clip_image014

Elegimos el lugar en donde dejar el log: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG. Luego ejecutamos el plan de mantenimiento.

Importante:

  • Ejecutar en ambiente de prueba
  • Trabajar en conjunto con un DBA
  • Asegurarse de tener los procedimientos de backup activos.
  • Asegurarse de haber probado los procedimientos de restore.

Esta es la pantalla de inicio de la ejecución:

clip_image016

Esta es la pantalla de fin:

clip_image018

Una vez finalizado el plan, vamos a revisar el estado de fragmentación de los índices, en este caso de la base Published. El resultado se ve en la siguiente imagen:

clip_image020

Algunos cambios como el resaltado son importantes.

Al publicar nuevamente el mismo proyecto, se observa una mejora de 2 minutos, que en este caso equivale al 28% (la medición no es científica).

clip_image022

 

Conclusión

Realizar tareas de mantenimiento sobre SQL Server es una tarea relativamente sencilla, pero fundamental, ya que estamos hablando de un componente central de la arquitectura, que puede impactar en el rendimiento general.

En el caso de Project Server, la desfragmentación de índices es importante, pero debería ser combinada con otros puntos como:

  • Monitoreo de consultas de SQL
  • Monitoreo de memoria y procesador
  • Monitoreo de tamaño de la base de datos y de los logs de transacciones
  • Mantenimiento específico de las bases de datos de SharePoint
  • Monitoreo de red

Nos vemos en el próximo artículo de la serie.

miércoles, 7 de septiembre de 2011

SharePoint Server 2010 performance and capacity test results and recommendations (paper)

Paper publicado por Microsoft con el siguiente contenido:

These white papers describe the performance and capacity impact of specific feature sets included in SharePoint Server 2010. These white papers include information about the performance and capacity characteristics of the feature and how it was tested by Microsoft, including:

  • Test farm characteristics
  • Test results
  • Recommendations
  • Troubleshooting performance and scalability

Descargar desde: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=12768