Get-SPWebApplication http://webapplicationURL | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL | export-csv –notypeinformation c:\temp\sitescollection.csv -encoding "utf8"
domingo, 30 de marzo de 2014
sábado, 29 de marzo de 2014
SPServices Error: One or more field types are not installed properly. Go to the list settings page to delete these fields
Cuando utilizo SPServices con la operación GetListItems, el objecto xData.responseXML nos retorna la respuesta con un mensaje dentro que dice: One or more field types are not installed properly. Go to the list settings page to delete these fields
- Verifica que utilizaste los internal name y NO los display name. En CAML queries y response siempre se utiliza el internal name. Un ejemplo muy común, es renombrar la columna Title, y usamos el display name en el query CAML.
Una manera fácil de saber el internal name, es ingresar a
Recuerda utilizar nombres de columnas sin espacios, o caracteres extraños al crearlas. Después puedes renombrarlas.
Puedes usar el siguiente script para listar todos los internal names de una lista
$web = Get-SPWeb http://sharepointsite
$list = $web.Lists["ListaTotest"]
$list.fields | select Title, InternalName, TypeAsString | sort title | ft -AutoSize
- Si la anterior solución no sirve, borra la columna y verifica que no haya otra lista o librería que utilice el mismo nombre, y vuelve a crear la columna.
- Desactivar la features de SharePoint Server Publishing Infrastructure y volver a activarla, tén cuidado que pueden desaparecer elementos (Ej:menúes) al desactivar esta feature.
RefreshSitesInConfigurationDatabase
Este método sincroniza la base de contenido con la base de configuración de la granja con respecto a que sites collection existen en la base de contenido. La base de datos de configuración de la granja de SharePoint contiene una tabla llamada “SiteMap” que contiene la información de todas las colecciones de sitios (site collections) que existen. Esta tabla es utilizada, por ejemplo, a la hora de listar las colecciones de sitios en la Administración Central, al realizar operaciones PowerShell o de API contra un SPSite, o a la hora de acceder al contenido de las colecciones de sitios desde el navegador.
$db = Get-SPDatabase | where {$_.Name -eq "DatabaseName"}
$db.RefreshSitesInConfigurationDatabase()
Para que suele usarse:
- Cuando se hace un attach de una base de contenidos (Mount-spcontentdatabase), y los sites collection de esa base no aparecen en el central administration
- Log Shipping (Ej: cree un site collection en PRD, y cuando se haga el log shipping hacia el nodo standby farm, ese site collection no aparecerá en la base de configuración, la cual no está soportada para Log Shipping – Link. Lo cual habrá que actualizar la base de configuración del nodo standby farm para refleje el site collection.)
- Hice un restore de un site collection, y el mismo no aparece en el central administration
- Removi un site collection y sigue apareciendo en el central administration
- Cuando trato de enumerar las features de un site collection o recorro los sites collection de un web application mediante powershell (Get-SPSite).
Ej:
$webapp = Get-SPWebApplication http://webapplication_url
$webapp.QueryFeatures("Site",$true);
domingo, 23 de marzo de 2014
Comparación rápida entre los 3 modelos de desarrollo de soluciones para Sharepoint 2013
Sharepoint 2013 App | Sandboxed Solution | Farm Solution | |
Donde se ejecuta el código? | Fuera de la granja | Dentro de la granja (SPUC-WorkerProcess.exe) | Dentro de la granja (w3wp.exe) |
Escabilidad | Alta (basada en donde se deploya, IIS, Azure Web Site, etc) | Limitada | Dependiente de la granja |
Quién puede instalarlas y removerlas? | Site Owners | Administradores del site collection | Administradores de la granja |
Soportado en On-Premise? | Si | Si | Si |
Soportado en Sharepoint Online? |
| Si (deprecado) | No |
Compatible con Azure? | Si | No | No |
Requiere una local farm para el desarrollo? | No | Si | Si |
Extensión | .app (archivo zip) | .wsp (archivo cab) | .wsp (archivo cab) |
Mejores Prácticas SQL Server para Sharepoint 2010/2013 (Best Practices SQL Server for Sharepoint 2010/2013)–Parte 3
Parte 1: Optimización de los servidores de SQL Server
Parte 2: Optimización de la instancia de SQL Server
Parte 3: Mantenimiento de SQL Server (acá estamos)
MANTENIMIENTO DE SQL SERVER
- Verificar que no haya bases de contenido con tamaño >=200 GB. Se recomienda crear una nueva base de contenido y mover sites collection a esa base (Move-SPSite).
- Verificar latencia de disco para las bases de datos: utilizar el siguiente ReadAndWriteLatency.
El script nos retornará la latencia de disco (Avg Read Transfer/ms, Avg Write Transfer/ms). Microsoft sugiere los siguientes thresholds:
Database data files:
· Target: <10ms
· Acceptable: 10-20ms
· Unacceptable: >20ms
Database log files:
· Target: <5ms
· Acceptable: 5-15ms
· Unacceptable: >15ms
-
Ejecutar semanalmente DBCC CHECKDB. Puedes utilizar el script de Hallengren: http://ola.hallengren.com/sql-server-integrity-check.html (recuerda NO utilizar checkdb con la opción de rebuild, en cualquiera de sus formatos)
EXECUTE dbo.DatabaseIntegrityCheck
@Databases = 'USER_DATABASES',
@CheckCommands = 'CHECKDB',
@PhysicalOnly = 'Y'
-
Monitorear semanalmente por Wait Events. Puedes utilizar el siguiente script: WaitStats. Dependiendo de los eventos externos por los cuales SQL espera, se realizará una acción. Ej: agregar más CPU, distribuir los I/O, etc. Más información
-
Monitorear los growth de la tempDB. Deberían minimizarse al mínimo los growth de la tempDB. El siguiente script nos permite monitorear esos growth, y en el caso que haya muchos, deberíamos iniciar la tempDB con un tamaño mayor y tener tamaños más grande autogrowth: InitialSizeAndGrowth
-
El siguiente script es similar al anterior, pero monitorea las bases de usuario. AutogrowthRecent
Si el script nos retorna que hubo >=7 growth para una base de usuario, significa que no está seteado correctamente el tamaño del autogrow.
Recuerda habilitar el trace en el caso que se haya deshabilitado.
select name, value_in_use
from sys.configurations
where name='default trace enabled'
Si value_in_use no es 1, se deberá habilitar.
sp_configure 'default trace enabled', 1
go
reconfigure with override
go
- Realizar desfragmentación de indices semalmente. Sharepoint tiene el store proc_UpdateStatistics, que realiza tareas de mantenimiento de indices. El problema de este store es que no se ejecuta para todas las bases de Sharepoint, sólo las de contendio. Se deberá ejecutar el siguiente script para evaluar la fragmentación de los índices:
Columna
Descripcion
avg_fragmentation_in_percent
El porcentaje de fragmentación lógica (páginas fuera de orden en el índice)
fragment_count
El número de fragmentos (páginas de hojas físicamente consecutivas)
avg_fragment_size_in_pages
Número promedio de páginas de un fragmento en un índice
Una vez verificado el estado de los índices, evaluar la siguiente tabla
avg_fragmentation_in_percent value
Sentencia correctiva
> 5% and < = 30%
ALTER INDEX REORGANIZE
> 30 %
ALTER INDEX REBUILD WITH (ONLINE= ON)
Para hacer un rebuild de los índices fragmentados, se deberá ejecutar el siguiente script (se utilizará el script de ola.hallengren.com):
1. Crear el procedimiento de desfragmentación de índices con el siguiente script
2. Ejecutar el siguiente script
El script anterior se puede crear un job para que se ejecute semanalmente (Sunday).
Ejecutar de nuevo el script FragmentationIndex.sql y ejecutar el siguiente script para verificar el estado de las estadísticas:
Si quieres utilizar el store de Sharepoint para desfragmentar los indices, puedes usar el siguiente script:
EXECUTE sp_msforeachdb
'USE [?];
IF DB_NAME() NOT IN(''master'',''msdb'',''tempdb'',''model'')
begin
print ''updating statistics in database ==> '' + db_name()
if exists (select 1 from sys.objects where name = ''proc_updatestatistics'')
begin
print ''updating statistics via proc_updatestatistics''
exec proc_updatestatistics
end
else
begin
print ''updating statistics via sp_updatestats''
exec sp_updatestats
end
end'
- NUNCA hacer shrinks de datafiles (hay casos especiales, tales como borrado de mucha información, o tamaño excesivo de la base de crawl: link). Se puede hacer shrink de los logs, pero es preferible setear a modo simple las bases y evitar tamaños grandes de logs. En vez de Shrink de logs, se podría crear una buena política de backups y evitar el shrink, ya que al hacer el backup de las bases automaticamente realiza un shrink de los logs.
- En el caso excesivo de consumo de CPU y RAM en el crawl del Search, se puede utilizar Resource Governor. Link
- Verifica semanalmente las best practices definidas en el punto 2 de esta serie de post (Ej: auto update statistics=false, autoshrink=false, fill factor=80, etc)
- Instalar SQL Best Practices Analyser, y verificar mensualmente las mejores práctices (se actualiza de forma continua): http://www.microsoft.com/en-us/download/details.aspx?id=29302 (recuerda, no siempre las mejores prácticas de SQL Server aplican para Sharepoint)
- Semanalmente desfragmentar los volumenes donde se encuentran los datafiles de SQL Server. Una excelente herramienta para evaluar la fragmentación de los datafiles es contig de SysInternals.contig -a "E:\Data\nombreBaseDatos.mdf". Recuerda de poner la base de datos a offline y ejecutar el proceso de desfragmentación, al finalizar ponla de nuevo en online a la base de datos.
- Evaluar la base de datos que más memoria consume
- Monitorear los archivos lógicos (VLF).Lo indicado en tener ente 20 a 100 vlf`s. Más información en el siguiente link
En el caso que quiera evaluar específicamente la tempdb, puede ejecutar el siguiente comando:
DBCC LOGINFO
Para reducir la cantidad de vlfs, puede consultar los siguientes links:
- Monitores útiles:
A continuación una lista de contadores a evaluar:
· Memory – Available MBytes
· Paging File – % Usage
· Physical Disk – Avg. Disk sec/Read
· Physical Disk – Avg. Disk sec/Write
· Physical Disk – Disk Reads/sec
· Physical Disk – Disk Writes/sec
· Processor – % Processor Time
· Processor – % Privileged Time
· Process: IO Read Bytes/sec
· Process: IO Read Bytes/sec
· Process (sqlservr.exe)
· SQLServer: Buffer Manager – Page life expectancy
· SQLServer: Buffer Manager – Lazy writes/sec
· SQLServer: General Statistics – User Connections
· SQLServer: Memory Manager – Memory Grants Pending
· SQLServer: SQL Statistics – Batch Requests/sec
· SQLServer: SQL Statistics – Compilations/sec
· SQLServer: SQL Statistics – Recompilations/sec
· System – Processor Queue Length
- Instalar SQL Server 2012 Performance Dashboard Reports
Se deberá instalar SQL Server 2012 Performance Dashboard Reports, el cual permite generar reportes de problemas de performance de forma rápida. Algunos reportes incluyen lo siguiente:
· CPU bottlenecks (and what queries are consuming the most CPU)
· IO bottlenecks (and what queries are performing the most IO)
· Index recommendations generated by the query optimizer (missing indexes)
· Blocking
· Latch contention
http://www.microsoft.com/en-us/download/details.aspx?id=29063
sábado, 22 de marzo de 2014
Mejores Prácticas SQL Server para Sharepoint 2010/2013 (Best Practices SQL Server for Sharepoint 2010/2013)–Parte 2
Parte 1: Optimización de los servidores de SQL Server
Parte 2: Optimización de la instancia de SQL Server (acá estamos)
Parte 3: Mantenimiento de SQL Server
OPTIMIZACION DE LA INSTANCIA DE SQL SERVER
- Setear Max Memory y Min Memory de la instancia.
Puede utilizar el siguiente script: Max Server Memory
Tendrás que setear dos variables dentro del script, y el mismo te generará un tamaño adecuado para el MaxMemory.
· MemToApps: default 512 MB
· RoomForOS: default 1 GB
Hay una fórmula que todos los consultores Sharepoint la utilizan:
SQL Max Memory = TotalPhyMem - (NumOfSQLThreads * ThreadStackSize) - (1GB * CEILING(NumOfCores/4))
NumOfSQLThreads = 256 + (NumOfProcessors*- 4) * 8
ThreadStackSize = 2MB on x64 or 4 MB on 64-bit (IA64) (* If NumOfProcessors > 4, else 0)Tanto el script como la fórmula, obtenes valores similares.
- Max Worker Threads:
Total available logical CPU’s <= 4: max worker threads = 512
Total available logical CPU’s > 4: max worker threads = 512 + ((logical CPUS’s - 4) * 16)
- Maxdop (Maximum Degree of Parallelization) = 1
- Collation para la instancia=Latin1_General_CI_AS_KS_WS
- Contained Database = 1 (sólo SQL Server 2012)
- Auto shrink = false
- Auto close = false
- Page verify = checksum
- Index Fill Factor = 80% (a nivel de instancia)
- Autogrowth = false
Deberá crecer en tamaños fijos, no mediante porcentaje:
1 GB para los datafiles (dependen del tamaño de la base, se recomienda 25% del tamaño de la base). Mi experiencia que 1GB es un buen tamaño para evitar la fragmentación (puede haber un pequeño tiempo de espera hasta que se aloca 1 GB, prefiero pagar ese tiempo y tener menor fragmentación).
256MB para los logs (25% del tamaño del datafile de la base.)
SIEMPRE es recomendable hacer un pre-growth (pre-allocate) de storage por 4 meses, pero esto genera mucho soporte del equipo de BD.
Para la tempDB utilice la siguiente formula:
[MAX DB SIZE (KB)] X [.25] / [# CORES] = DATA FILE SIZE (KB)
El “starting size” de la tempDB debe ser el 25% de la base de contenido más grande. En el post 3, les dejaré un script para obtener un valor inicial de tempdb más certero.
- Recovery model para base de datos de usuarios= full mode (depende de tu política de backups)
- Recovery model para la tempdb= simple mode
- Auto create statistics: false (en general es buena práctica habilitar esta feature, pero para el caso de Sharepoint se recomienda deshabilitar)
- Auto update statistics= false (misma consideración que el punto anterior.)
- Auto update statistics asynchronously= false (misma consideración que el punto anterior.)
- Se debe 1 datafile por virtual core para la tempdb: ej: si yo tengo una VM con 8 cores, debo tener 8 datafiles. Max Files=8 (no hay mejora después de los 8 datafiles) y todos los datafiles de la tempdb deben ser del mismo tamaño (proportional fill algoritm). Algunos recomiendan tener 1/4 o 1/2 datafile por core (link, link2, link3), yo siempre use 1 datafile por core y nunca tuve problemas, así que sigo recomendando esa configuración. Si distribuyes esos datafiles en distintas LUNs tendrás una mejoría importante.
Otra recomendación es tener 1 sólo transaction log para la tempdb (link). El tamaño de este transaction log debe ser el 25% de la base más grande.
Los nombres de los datafiles deben ser: tempdb1, tempdb2, tempdb3, etc
Ej: 4 cores
- Siempre hacer un pre-size de storage de la tempdb
- Habilitar el trace flag 1117 (permite mantener los datafiles siempre con el mismo tamaño al hacer growth), se utiliza mucho para la tempdb.
- Habilitar Instant File Initialization: especialmente para la cuenta que ejecuta el servicio de SQL Server. Se deberá setear la policy “Perform volume mintenance task”. Los logs NO son afectados por este feature.
- IOPS recomendados: 2 por GB de dato para una performance optima. Sharepoint soporta hasta .25 por GB de dato.
- Utilizar alias para la configuración de Sharepoint (link)
- Raid 10 para tempDB
- Cada 4 web servers (WFE) es recomendable tener otra instancia de SQL Server (otro servidor)
- IOPS necesarios
Las bases que más consumen IOPS son las bases de Search (links)
Les recomiendo leer la siguiente pptx para tener un mejor capacity planning del Search:
http://video.ch9.ms/sessions/teched/na/2013/SES-B310.pptx
Las bases de contenido pueden variar entre 200 IOPS a 4000 IOPS, dependiendo del uso del contenido (Documentos, Videos, etc).
Las demás bases pueden variar entre 100 IOPS a 200 IOPS.
Les dejo un resumen para que lo tengan como referencia:
- Calcula prematuramente el tamaño estimado que vas a tener en la granja
Database size = ((D × V) × S) + (10 KB × (L + (V × D)))
10KB es el valor promedio de metadata que es requerido por SP2013.
D=Número de documentos
S=Tamaño promedio de los documentos
L=List Items
V=Número de versiones no actuales
- SP2013 utiliza Shredded Storage, se recomienda dejar las settings por default de esta feature. Video, Video2, Documento Técnico.
- Revisar el doc de límites relacionados a la base de datos: http://technet.microsoft.com/en-us/library/cc262787(v=office.15).aspx#ContentDB
- Latencia de disco :
Database data files:
· Target: <10ms
· Acceptable: 10-20ms
· Unacceptable: >20ms
Database log files:
· Target: <5ms
· Acceptable: 5-15ms
· Unacceptable: >15ms
Orden de prioridad:
· tempDB data y logs files
· Database transaction logs
· Seach Data files
· Content Database data files
- Read Committed Snapshot Isolation NO está soportado
- Configurar ModelDB: con parametros similares a los definidos para la content database.
- NO se debe realizar consultas sobre la base de datos (puede ocasionar locks y rebuilds del schema): En el siguiente Link podrás encontrar más información. La UNICA base en la que se puede realizar queries es WSS_Logging. Link, Link 2. En el caso que quieras hacer queries contra la bases de Sharepoint, has un backup y utiliza ese backup para realizar queries.
- Compress Backups = True
- NO se puede ejecutar DBCC CHECKDB WITH REPAIR o sus variantes (no soportado). Si se puede ejecutar los siguientes comandos:
- DBCC CHECKDB
- DBCC_CHECKDB WITH REPAIR_FAST
- REPAIR_REBUILD
- Tener bases de contenido con tamaño máximo de 200GB (no es un límite de Sharepoint, es por cuestiones de administración principalmente)
- Configurar la instancia de SQL Server con Mixed Mode, ya que el servicio de Access Service lo requiere.
- Utiliza standarts para los nombres de las bases de datos.
Tipo
Nombre Configuration SP_<Farm ID>_Config Content DB SP_<Farm ID>_Content_<Nombre o Propósito>
Ej: SP_FCentral_Content_Intranet , donde FCentral hace referencia a la granja centralService Application SP_<Farm ID>_Content_<Service Application>
- Instalar siempre el último CU disponible para SQL Server (a la escritura de este post era el CU 9)
- Latencia entre los servidores de SQL Server y los de Application Server/WFE < 1 ms
- Excluir del antivirus las siguientes extensiones: *.mdf, *.ndf, *.ldf, *.bak. En el caso que tengas un cluster, también <$windir>/cluster
- Utilizar la versión Enterprise de SQL Server
Mejores Prácticas SQL Server para Sharepoint 2010/2013 (Best Practices SQL Server for Sharepoint 2010/2013)–Parte 1
El artículo se divide en 3 posts:
- Parte 1: Optimización de los servidores de SQL Server (acá estamos)
- Parte 2: Optimización de la instancia de SQL Server
- Parte 3: Mantenimiento de SQL Server
OPTIMIZACION DE LOS SERVIDORES DE SQL SERVER
- El servidor de SQL Server debe estar dedicado para Sharepoint, no compartas el servidor con otras apps.
- Page file: dejar el valor default que viene con Windows Server 2012 (Automatic manage paging file size for all drives), ya que el mismo administra mejor la memoria. Para WS2008 es recomendable 1.5 x RAM disponible.
- Networking: 1 GB network interface card. En el caso que tengas problemas de performance con el tráfico de red, puede utilizar dos placas de red para los WFE/App Server, una para el servicio con los usuarios y la otra para el procesamiento (requiere configuración adicional, lo cual complica el mantenimiento). Revisar los contadores \Network Interface(*)\Output Queue Length (>1: revisar) y \Network Interface(*)\Current Bandwidth (>80%: revisar)
- Policy Lock Pages in memory: se recomienda agregar la cuenta de servicio de SQL Server a la policy. Es importante setear Max Memory correctamente y deshabilitar Balloon Drive (ver más abajo). Si hay dos instancias o otras apps corriendo en el servidor, se recomienda no utilizar esta policy, ya que puede afectar la performance
- Particiones: todas las particiones (volumes) deben estar formateadas con 64KB de allocation unit size. MUY IMPORTANTE este punto, notarás una gran diferencia de performance..
Format <drive> /Q /FS:NTFS /A:64K /V:Volume /Y
Dependiendo de la estimación del espacio requerido, y teniendo en cuenta que los servidores SQL serán virtualizados con VMware, se recomienda la siguiente distribución de discos, en donde:
El disco C: es para el sistema operativo.
El disco D: es para los binarios de SQL y para las apps
El disco E: es para los archivos MDF de las bases de datos (datafiles).
El disco F (High Range): es para la TempDB.
El disco G: es para los archivos LDF de las bases de datos (logs).
Los discos H: en adelante también son para los archivos MDF de las bases de datos, los mismos serán mid-range.
El disco C albergará los binarios del sistema operativo, dumps, page file, service packs, hotfixes, logs, etc.
* La suma total de los VMDKs (NTFS 64KB block size) podría disponibilizarse en un único VMSF
* * Los VMDKs (NTFS 64KB block size) se deberán disponibilizar sobre otro volumen VMSF (LUN diferente)
* * * La suma total de los VMDKs (NTFS 64KB block size) podría disponibilizarse en un único VMSF
- VMware (sólo mostraré para VMWare, para hyper-v son similares):
- Alinear los VMDK file ,VMFS volume y SAN LUN: Descripción detallada
- Direct path I/O: permite acceder a la Phisical NIC en vez de una vNIC. Se recomienda probar en ambientes de DEV antes de implementarlo en PRD; se pierden algunos features de VMware. Más información
- Adaptadores en formato VMXNet3
- Deshabilitar la feature Balloon Drive para la VM donde reside el SQL Server.
- Al provisionar la VM se recomienda utilizar el método Thick Provision Eager Zeroed.
- 1:1 ratio de phisical cores a virtual cores
- Se recomienda procesadores con alto cache L2 y L3.
- En el caso de alto throughput de networking, se recomienda utilizar NIC teaming. Más información
- RAID recomendaciones:
Vas a notar una gran mejora si pones la tempdb en un RAID 10 (SAS 15.000 RPM, 210 IOPS), otra posibilidad es usar SSD (discos de estado sólido)
- PowerPlan: High Performance. NO utilizar BIOS power saving feature.
- Performance Appearance: adjust for the best performance
- Procesor Scheduling: Best Performance of Background Services
- Deshabilitar la feature 8.3 Naming
- Tener en todas las particiones un 25% de espacio disponible para futuros crecimientos (rebuild de indices, crecimiento innesperado)
- Excluir del antivirus los paths y extensiones definidos en el siguiente link
- Cant de Cores y memoria del servidor: cada configuración dependerá de la cantidad de usuarios y documentación a guardar en el servidor, pero les dejo unas recomendaciones:
CORES
>10 gb <=1 TB de datos: 4 cores (1000 usuarios concurrentes)
>1TB de datos: 8 cores (10.000 usuarios concurrentes)
RAM
<1TB de datos: 16 GB
>1TB a 2 TB: 32 GB
>2TB a 5TB: 64 GB
>5TB a 16 TB: >64 GB
IMPORTANTE: esta configuración depende mucho del acceso a la información (porcentaje de reads, writes, etc), del procesamiento de la misma (workflows, BI, etc) y del tipo de información (records center, listas largas, etc)
- Antes de iniciar la instalación de SQL Server, evalua la performance de I/O del storage. Puedes utilizar SQLIO, IOMETER y CrystalDiskMark. Hay muchos ejemplos en internet de sus usos.
- Contadores útiles para tener en cuenta en servidores de SQL Server (relacionados a WS2012, más abajo describiré los relacionados a SQL Server):
· \LogicalDisk(*)\Avg. Disk sec/Read (es el tiempo promedio, en segundos de una lectura de datos al disco):
>12ms: respuesta lenta
>25ms: respuesta muy lenta
· \PhysicalDisk(*)\Avg. Disk sec/Read:
<10 ms: muy bueno
>10ms y 20ms: delay
>20ms y 50ms: lento, evaluar
>50ms: indica un problema grave I/O.
· \LogicalDisk(*)\Avg. Disk sec/Write (es el tiempo promedio, en segundos de una escritura de datos al disco):
>15ms: respuesta lenta
>25ms: respuesta muy lenta
· \PhysicalDisk(*)\Avg. Disk sec/Write: se utiliza los mismos threshold que \LogicalDisk(*)\Avg. Disk sec/Write
· \LogicalDisk(*)\Disk Transfers/sec (es la tasa de lectura y escritura en el disco):
<80 I/O por segundo en promedio cuando la latencia es mayor que 25ms, indica demasiadas virtual LUNs usando el mismo disco físico de una SAN.
· \Physical Disk\%Disk Time: representa el porcentaje de tiempo transcurrido que el disco está ocupado ofreciendo servicio de read y write.
>70%: evaluar I/O (incluir en la evaluación el contador de queue I/O)
· \Physical Disk\%Idle Time: mide cuando tiempo el disco permance en un estado idle.
<40%: evaluar discos. Ya que está teniendo mucho procesamiento.
· \Physical Disk\PhysicalDisk\ Current Disk Queue Length:
> (Nº de discos + 2): evaluar con PhysicalDisk\ Avg. Disk Queue Length
· \Process(*)\IO Data Operations/sec (La tasa actual en el cual el proceso emite operaciones de I/O de lectura y escritura, este contado cuenta la actividad de I/O generada por el proceso,incluye file´s, network y device I/Os):
Revisar si el proceso usa más de 1000 I/Os por segundo.
· \PagingFile\%Usage: describe la cantidad de uso del page file.
>90% indica un problema
· \Memory\Available MBytes (Available MBytes es la cantidad de memoria física en MB disponible para procesos ejecutandose en el servidor, este contado sólo indica el último valor y no un promedio ):
Bajo en memoria: menor a 10%
Muy bajo en memoria: menor a 5%
Fluctuaciones de 100MB por hora, esto indica un memory leak.
· \Memory\Pages/sec (si es alto, indica que el sistema se está quedando sin memoria y está tratando de paginar la memoria a disco, es la tasa de páginas que son leídas o escritas a disco. Este contador es un indicador primario de retrasos en el sistema. Picos en pages/sec son normales en backups, lectura de archivos de gran de tamaño:
Si es mayor a 20 pages/sec,se debería revisar
· \Memory\Free System Page Table Entries (es el número de entradas de la tabla de páginas no está en que utiliza el sistema. Este análisis determina si el sistema se está quedando sin entradas libres de la tabla de páginas del sistema (PTE))
Menor que 10,000: posiblemente tenga problemas de performance.
· Processor\% Processor Time (es el indicador principal de la actividad del processor activity, altos valores no siempren indican un problemasi se incrementan de forma lineal otros contadores tales como % Privileged Time o Processor Queue Length, se deberá revisar):
<50% consumido: OK
>50 y <90%: monitorear
>90 y <=100%: crítico
· \Processor\% Privileged Time:
Consistentemente sobre 75% indica un bottleneck.
· \System\Context Switches/sec (Context switching ocurre cuando un thread de mayor prioridad se antepone a un hilthreado de menor prioridad que se está ejecutando. Alto niveles de context switching pueden ocurrir cuando hay muchos threads que tienen el mismo nivel de prioridad. Esto indica que hay demasiados threads compitiendo por el tiempo del procesador:
· \Processor(*)\% Interrupt Time (Este contador indica el porcentaje de tiempo que el procesador invierte la recepción y el servicio de las interrupciones de hardware. Este valor es un indicador indirecto de la actividad de los dispositivos que generan interrupciones, tales como adaptadores de red. Un aumento dramático en este contador indica posibles problemas de hardware)
High CPU Interrupt Time: >30% indica algún problema de HW
· System\Processor Queue Length (Si hay más tareas listas para ejecutarse que procesadores existentes, los threads se encolan. La cola del procesador es el conjunto de hilos que están listos, pero no podrá ser ejecutado por el procesador porque otro subproceso activo se está ejecutando actualmente. Una queue sostenida o recurrente de más de dos hilos es una clara indicación de un cuello de botella en el procesador. Se puede obtener más rendimiento al reducir el paralelismo en esos casos. Puede usar este contador junto con el contador Procesador \% de tiempo de procesador para determinar si su aplicación puede beneficiarse de más CPU.
Si cada procesador tiene 10 o más threads esperando, podría indicar que el procesador está a su capacidad límite
Si cada procesador tiene 10 o más threads esperando, podría indicar que el procesador está trabajando arriba de su capacidad
· \Network Interface(*)\Output Queue Length:
High Network I/O : más de 1 thread en espera de network I/O
Very High Network I/O: más de 2 threads en espera de I/O (si output queue length
es mayor que 2)
· \Network Interface(*)\Current Bandwidth (Este contador indica si el tráfico del adaptador de red está saturado):
High average network utilization: > 50%
Very high average network utilization: >80%
· Server\Bytes Total/sec (Este contador indica el número de bytes enviados y recibidos por la red. Los valores altos indican el ancho de banda de red como cuello de botella. Si la suma de Bytes Total / sec para todos los servidores es aproximadamente igual a las velocidades máximas de transferencia de la red, es posible que tenga que segmentar la red)
· \Process(*)\Private Bytes (Private es el tamaño actual, en bytes, de la memoria que este proceso ha asignado y no puede compartir con otros procesos)
Delta entre minimum size y maximun size no debe ser > 500MB
· \Process(*)\Working Set (Working Set es el tamaño actual, en bytes, del Working Set del proceso. Working Set es el conjunto de páginas de memoria que han sido accedidas por los threads del proceso. Si la memoria libre es mayor que un umbral las páginas se dejan en el Working Set incluso si no la están usando. Cuando hay poca memoria, se sacan del working set:
Delta entre minimum size y maximun size no debe ser > 500MB
· \Process(*)Thread Count (el número de threads activos en el proceso):
Para 2GB de memoria máxima, se recomienda un umbral de 6600 threads.
· \Process(*)\Handle Count (Determina cuantos handles ha abierto un proceso, un número grande indica leaks de handles o un procesamiento agresivo)
>3000 handles indica un comportamiento sospechoso. Algunas excepciones son System (20.000 handles), lsass.exe (30000), store.exe (50000), sqlsrvr.exe (50000)
- Utilizar siempre A records para los DNS de los servidores de SQL, ya que es necesario para configurar kerberos.
- Siempre mantener el servidor con los últimos patchs disponibles. En cada patch no sólo se solucionan bugs, sino se agregan mejoras de performance.
- Reinicios sanitarios: es recomendado reiniciar una vez por mes.
sábado, 15 de marzo de 2014
Protocolos de Sharepoint
En el siguiente enlace podrán descargar toda la documentación técnica de los protocolos que utiliza Sharepoint: http://download.microsoft.com/download/8/5/8/858F2155-D48D-4C68-9205-29460FD7698F/SharePointProtocols.zip
Además de la información técnica, tiene varios ejemplos útiles. Algunos protocolos que podrás encontrar en la descarga son:
[MC-FPSEWM]"FrontPage Server Extensions: Website Management Protocol".
[MS-AADT]"Access Application Design Time Protocol".
[MS-ACCDT]"Access Template File Format Specification".
[MS-ACMAUDWS]"Audit and Control Management Server Audit Web Service
Protocol".
[MS-ADMINS]"Administration Web Service Protocol".
[MS-ADMWS]"Search Service Administration Web Service Protocol".
[MS-ADR]"Access Services Data Run Time Protocol".
[MS-ADS]"Access Services Data Server Protocol".
[MS-ADTS]"Active Directory Technical Specification".
[MS-ALERTSS]"Alerts Service Protocol".
[MS-APPMWSP]"SharePoint App Management Web Service Protocol".
[MS-ART]"Access Run Time Protocol".
[MS-ASDT]"Access Server Design Time Protocol".
[MS-ASWS]"Access Services Protocol".
[MS-AUTHWS]"Authentication Web Service Protocol".
[MS-AXL]"Access Application Transfer Protocol Structure Specification".
[MS-AXL2]"Access Application Transfer Data Structure Version 2".
[MS-BCSDPFFS]"Business Connectivity Services Deployment Package File
Format Specification".
[MS-BCSDWPS]"Business Connectivity Services Deployment Web Service
Protocol".
[MS-BDCMFFS]"Business Data Connectivity Model File Format Specification".
[MS-BDCMP]"Business Data Catalog Metadata Web Service Protocol".
[MS-BDCRAWPS]"Business Data Connectivity Remote Administration Web
Service Protocol".
[MS-BDCWPS] Microsoft Corporation, "Business Data Connectivity Web Service Protocol".
[MS-CDEPLOY]"Content Deployment Remote Import Web Service Protocol".
[MS-CIFO]"Content Index Format Structure Specification".
[MS-COMMCSOM]"Community Client-Side Object Model Protocol".
[MS-CONATB]"Content Area Toolbox Web Service Protocol".
[MS-COPYS]"Copy Web Service Protocol".
[MS-CPSWS]"SharePoint Claim Provider Web Service Protocol".
[MS-CSOM]"SharePoint Client Query Protocol".
[MS-CSOMREST]"SharePoint Client Query OData Protocol".
[MS-CSOMSPT]"SharePoint Client-Side Object Model Protocol".
[MS-DADMWS]"Search Admin Web Service Protocol".
[MS-DMCSOM]"Document Management Client-Side Object Model Protocol".
[MSDN-ASPWP]"ASP.NET Web Parts Overview",
http://msdn.microsoft.com/en-us/library/hhy9ewf1.aspx
[MSDN-ESO]"Excel Services Overview", http://msdn.microsoft.com/en-
us/library/ms546696.aspx
[MSDN-EXCELS]"Introducing Excel Services", http://msdn.microsoft.com/en-
us/library/ms519581.aspx
[MSDN-MOSSWF]"Workflows in SharePoint Server 2010 (ECM)",
http://msdn.microsoft.com/en-us/library/ms549489.aspx
[MSDN-ODBC]"Microsoft Open Database Connectivity (ODBC)",
http://msdn.microsoft.com/en-us/library/ms710252.aspx
[MSDN-OLEDB]"Microsoft OLE DB", http://msdn.microsoft.com/en-
us/library/ms722784.aspx
[MSDN-SharePoint2013-SDK]"SharePoint 2013",
http://msdn.microsoft.com/en-us/library/jj162979.aspx
[MSDN-SharePointSDK]"SharePoint Products and Technologies SDK: 2010
API Reference (Technical Preview)", July 2009, http://msdn.microsoft.com/en-
us/library/ee557253(office.14).aspx
[MSDN-WSSWF]"Workflow Development for SharePoint Foundation",
http://msdn.microsoft.com/en-us/library/ms414613.aspx
[MSDN-WSSWP]"Web Parts in SharePoint Foundation",
http://msdn.microsoft.com/en-us/library/ms476318.aspx
[MS-DOCSWS]"SharePoint Document Sharing Web Service Protocol".
[MS-DOCTRANS]"Document Transforms Service Protocol".
[MS-DSPSTSS]"Data-Source Adapter SharePoint Team Services Web Service
Protocol".
[MS-DWSS]"Document Workspace Web Service Protocol".
[MS-EAWF]"Group Approval Web Service Protocol".
[MS-ECTPWPS]"External Content Type Picker Web Service Protocol".
[MS-EDCSOM]"eDiscovery Client-Side Object Model Protocol".
[MS-EDINTWS]"eDiscovery Internal Web Service Protocol".
[MS-EDSA]"eDiscovery Service Application Protocol".
[MS-EMMCSOM]"Enterprise Managed Metadata Client-Side Object Model
Protocol".
[MS-EMMWCF]"Metadata Shared Service WCF Service Protocol".
[MS-EMMWS]"Microsoft Enterprise Managed Metadata Web Service Protocol".
[MS-ESP]"Excel Web Services Protocol".
[MS-ESREST]"Excel Services REST Protocol".
[MS-ESURL]"Excel Services Publishing Protocol".
[MS-EXSPWS]"Excel Calculation Web Service Protocol".
[MS-EXSPWS2]"Excel Calculation Web Service Version 2 Protocol".
[MS-EXSPWS3]"Excel Calculation Web Service Version 3 Protocol".
[MS-EXSPXML]"Excel Calculation Web Service XML Schema Specification".
[MS-EXSPXML3]"Excel Calculation Version 2 Web Service XML Schema".
[MS-FORMS]"Forms Service Protocol".
[MS-FPSE]"FrontPage Server Extensions Remote Protocol".
[MS-FQL2]"Fast Query Language Version 2 Protocol".
[MS-FSDAP]"Forms Services Design and Activation Web Service Protocol".
[MS-FSFDP]"Forms Services Feature Detection Protocol".
[MS-FSPP]"Forms Services Proxy Web Service Protocol".
[MS-FSSHTTP]"File Synchronization via SOAP over HTTP Protocol".
[MS-FSSHTTPB]"Binary Requests for File Synchronization via SOAP Protocol".
[MS-FSSHTTPD]"Binary Data Format for File Synchronization via SOAP
Structure Specification".
[MSFT-ADC]"Active Directory Collection", March 2003,
http://technet2.microsoft.com/WindowsServer/en/library/6f8a7c80-45fc-4916-80d9-1
6e6d46241f91033.mspx
[MS-GLOADWS]"Global Admin Web Service Protocol".
[MS-GLOS]"Windows Protocols Master Glossary".
[MS-IMAGS]"Imaging Service Protocol".
[MS-INFODCF]"InfoPath Data Connection File Download Protocol".
[MS-IPDSP]"InfoPath Digital Signing Protocol".
[MS-IPFF]"InfoPath Form Template Format".
[MS-IPFF2]"InfoPath Form Template Format Version 2".
[MS-IPFFX]"InfoPath Form File Format".
[MS-KQL]"Keyword Query Language Structure Protocol".
[MS-LISTSWS]"Lists Web Service Protocol".
[MS-MAR]"Microsoft Office SharePoint Server (MOSS) Analytics Reporting
Protocol".
[MS-MEETS]"Meetings Web Services Protocol".
[MS-METAWEB]"MetaWeblog Extensions Protocol".
[MS-NOTESWS]"MS Search Lotus Notes Web Service Protocol".
[MS-OAUTH2EX]"OAuth 2.0 Authentication Protocol Extensions".
[MS-OCPROTO]"Office Client Protocols Overview".
[MS-OFBA]"Office Forms Based Authentication Protocol".
[MS-OFCGLOS]"Microsoft Office Master Glossary".
[MS-OFFICIALFILE]"Official File Web Service Protocol".
[MS-OMS]"Office Mobile Service Protocol".
[MS-OOWQWS]"Office Online Web Query Web Service Protocol".
[MS-OSALER]"Alerts Interoperability Protocol".
[MS-OSCO]"Office Server ClickOnce Manifest Structure Specification".
[MS-OUTSPS]"Lists Client Sync Protocol".
[MS-PASCWS]"PowerPoint Automation Services Conversion Web Service
Protocol".
[MS-PEOPS]"People Web Service Protocol".
[MS-PERMS]"Permissions Web Service Protocol".
[MS-PLSP]"Published Links Web Service Protocol".
[MS-PPSAPP]"PerformancePoint Services Application Server Protocol".
[MS-PPSAS]"PerformancePoint Services Authoring Service Protocol".
[MS-PPSDECO]"PerformancePoint Services Decomposition Tree Protocol".
[MS-PRIMEPF]"Deployment Package Format Specification".
[MS-PRSTFR]"ADO XML Persistence Format Protocol Specification".
[MS-PUBCSOM]"Publishing Client-Side Object Model Protocol".
[MS-PUBWS]"Publishing Web Service Protocol".
[MS-QSSWS]"Search Query Shared Services Protocol".
[MS-SADMWS]"Search Site Administration Web Service Protocol".
[MS-SEARCH]"Search Protocol".
[MS-SHDACCWS]"Shared Access Web Service Protocol".
[MS-SITED3S]"Site Data 2003 Web Service Protocol".
[MS-SITEDATS]"Site Data Web Service Protocol".
[MS-SITESS]"Sites Web Service Protocol".
[MS-SLIDELI]"Slide Library Web Service Protocol".
[MS-SLXV]"Silverlight XAML Vocabulary Specification 2008", October 2008,
http://msdn.microsoft.com/en-us/library/dd361850(v=PROT.10).aspx
[MS-SOCCSOM]"SharePoint Social Client-Side Object Model Protocol".
[MS-SPACSOM]"SharePoint Analytics Client-Side Object Model Protocol".
[MS-SPAFWI]"SharePoint Activity Feed Web Interfaces Protocol".
[MS-SPASA]"SharePoint Analytics Service Application Protocol".
[MS-SPDIAG]"SharePoint Diagnostics Web Service Protocol".
[MS-SPEMAWS]"SharePoint Email Web Service Protocol".
[MS-SPLCHK]"SpellCheck Web Service Protocol".
[MS-SPPTC]"User Code Execution Protocol".
[MS-SPRSS]"RSS 2.0 Format Extensions Specification".
[MS-SPS2SAUTH]"OAuth 2.0 Authentication Protocol: SharePoint Profile".
[MS-SPSCRWL]"SPSCrawl Web Service Protocol".
[MS-SPSETWS]"SharePoint Subscription Settings Web Service Protocol".
[MS-SPSTWS]"SharePoint Security Token Service Web Service Protocol".
[MS-SPTWS]"Service Platform Topology Web Service Protocol".
[MS-SPWFCSOM]"SharePoint Workflow Client-Side Object Model Protocol".
[MS-SQP]"MSSearch Query Protocol".
[MS-SQP2]"MSSearch Query Version 2 Protocol".
[MS-SRCHCSOM]"Search Client Query Protocol".
[MS-SSAS]"SQL Server Analysis Services Protocol Specification".
[MS-SSP]"Single Sign-On Protocol".
[MS-SSWPS]"Secure Store Web Service Protocol".
[MS-STSSYN]"StsSync Data Structure".
[MS-SYS]"Windows System Overview".
[MS-TDS]"Tabular Data Stream Protocol Specification".
[MS-TMPLDISC]"Template Discovery Web Service Protocol".
[MS-TSCSOM]"Translation Services Client-Side Object Model Protocol".
[MS-TSWS]"Translation Services Web Service Protocol".
[MS-UDCX]"Universal Data Connection 2.0 XML File Format".
[MS-UGS]"UserGroup Web Service Protocol".
[MS-UPFCWS]"User Activity Feed Cache Web Service Protocol".
[MS-UPIEWS]"User Profile Import and Export Web Service Protocol".
[MS-UPSCDS]"User Profile Synchronization (UPS): Configuration Data
Structure".
[MS-UPSCP]"User Profile Synchronization (UPS): Configuration Protocol
Extensions".
[MS-UPSCWS]"User Profile Service Application Caching Web Service
Protocol".
[MS-UPSDWS]"User Profile Social Data Web Service Protocol".
[MS-UPSLDAP]"User Profile Synchronization (UPS): Lightweight Directory
Access Protocol Version 3 Extensions".
[MS-UPSMODS]"User Profile Synchronization (UPS): Management Objects
Data Structure".
[MS-UPSSCXPP]"User Profile Synchronization (UPS): Schema Exchange
Protocol Profile".
[MS-UPWCFWS]"User Profile Property Service Application Web Service
Protocol".
[MS-USPSWS]"User Profile Service Web Service Protocol".
[MS-USRPCH]"User Profile Change Log Web Service Protocol".
[MS-VERSS]"Versions Web Service Protocol".
[MS-VGSFF]"Visio Graphics Service File Format (.vdw) Specification".
[MS-VGSP]"Visio Graphics Service Protocol".
[MS-VIEWSS]"Views Web Service Protocol".
[MS-VSDX]"Visio Graphics Service VSDX File Format".
[MS-WDV]"Web Distributed Authoring and Versioning (WebDAV) Protocol:
Client Extensions".
[MS-WDVME]"Web Distributed Authoring and Versioning (WebDAV) Protocol:
Microsoft Extensions".
[MS-WDVMODUU]"Office Document Update Utility Extensions Protocol
Specification".
[MS-WDVSE]"Web Distributed Authoring and Versioning (WebDAV) Protocol:
Server Extensions".
[MS-WEBDAVE]"Web Distributed Authoring and Versioning Error Extensions
Protocol".
[MS-WEBSS]"Webs Web Service Protocol".
[MS-WMCSOM]"Work Management Client-Side Object Model Protocol".
[MS-WMS]"Work Management Service Web Service Protocol".
[MS-WORDSWCF]"Word Automation Services WCF Service Protocol".
[MS-WPPS]"Web Part Pages Web Service Protocol".
[MS-WSSCAML]"Collaborative Application Markup Language (CAML)
Structure".
[MS-WSSCAP]"Windows SharePoint Services Collaborative Application
Protocol".
[MS-WSSHP]"HTTP Windows SharePoint Services Headers Protocol".
[MS-WSSREST]"ListData Data Service Protocol".
[MS-WSSTS]"Windows SharePoint Services".
[MS-WWSP]"Workflow Web Service Protocol".
Información sobre el Servicio de Topología ()
SharePoint provee un balanceador de carga básico, que genera request mediante round robin a los Web service applications, también ofrece tolerancia a fallos, ya que permite detectar fallas de los services application proxy.
Cómo funciona?
Un Service Application Proxy solicita un endpoint para conectarse a un Service Application desde el Load Balancer (Service Application Load Balancer), el cual se ejecuta en el mismo dominio que el proxy.
El load balancer mantiene una lista disponible de endpoints para Service Application, y simplemente retorna el próximo endpoint disponible al proxy en un modo round robin.
El load balancer revisa la base de configuración para descubrir la lista disponible de endpoints para un service application
La cache de los endpoint es actualizada si la lista de service application endpoint ha sido actualizada en la base de configuración local, el tiempo promedio de actualización es menor a 1 minuto.
Podrá consultar la base de datos mediante el siguiente script de sql:
SELECT [Id]
,[ClassId]
,[ParentId]
,[Name]
,[Status]
,[Version]
,CAST([Properties] AS XML) AS Properties
FROM [Nombre_ConfigDB].[dbo].[Objects] WITH (NOLOCK)
WHERE [ParentId] LIKE '<ID from proxy>'
El <ID from proxy> lo podrás consultar con el siguiente script de PowerShell:
(Get-SPTopologyServiceApplicationProxy).ApplicationProxies | ? { $_.Name -eq ((Get-SPTopologyServiceApplication).Id) }
Para comunicarse con un service application en una granja remota (Ej: servicios federados), el load balancer usa el web service de Topology (aka, “Application Discovery and Load Balancer Service”) para descubrir los endpoints disponibles para un service application. Este procedimiento se actualiza cada 15 minutos por el timer job “Application Addresses Refresh”.
El Service Application Proxy podría reporta una falla al load balancer, esto genera que el load balancer saque el endpoint específico de la rotación round robin por un período de tiempo (default: 10 minutos).
Este tiempo puede modificarse mediante el parámetro badtime. Después que se cumplió este tiempo, el endpoint se setea como “bueno” de nuevo.
Por default, siempre se mantiene un endpoint disponible, incluso que reporte un status “malo”.
El Topology web service application proxy es “self-balancing”
Los errores que aparecen en el Event Viewer cuando un endpoint está caído son (Por ej: el service application proxy del servicio de Metadata):
SharePoint Web Services Round Robin Service Load Balancer Event: EndpointFailure Process Name: OWSTIMER Process ID: 12264 AppDomain Name: DefaultDomain AppDomain ID: 1 Service Application Uri: urn:schemas-microsoft-com:sharepoint:service:id#authority=urn:uuid:anotherid&authority=https://myappsserver:1234/Topology/topology.svc Active Endpoints: 1 Failed Endpoints:1 Affected Endpoint: http://myappsserver:1234/1234567890/MetadataWebService.svc
Para solucionar endpoints corruptos podemos realizar las siguientes tareas básicas:
Para exportar la configuración actual del servicio de topología, ejecuta el siguiente script de powershell:
Get-SPTopologyServiceApplication | Export-Clixml .\Get-SPTopologyServiceApplication.xml
Get-SPTopologyServiceApplicationProxy | Export-Clixml .\Get-SPTopologyServiceApplicationProxy.xml
miércoles, 5 de marzo de 2014
Loguearse con otro usuario en Sharepoint 2013
En Sharepoint 2013 no se tiene más la opción “Sign in as Different User”.
SHAREPOINT 2010
SHAREPOINT 2013
Para tener la misma funcionalidad en SP2013, podemos hacer utilizar la siguiente url, la cual cierra la conexión actual, y pide el usuario/contraseña para acceder.
http://<site URL>/_layouts/closeConnection.aspx?loginasanotheruser=true