31. Oktober 2014 09:35
31. Oktober 2014 10:06
31. Oktober 2014 10:36
31. Oktober 2014 10:43
31. Oktober 2014 10:56
31. Oktober 2014 11:12
31. Oktober 2014 11:30
31. Oktober 2014 11:31
31. Oktober 2014 11:41
Der Server hat ingsgesamt 24GB RAM, SSD Platten, 4x vCPU 2.00GHz
31. Oktober 2014 12:01
31. Oktober 2014 17:22
WITH Waits AS
(SELECT
wait_type,
wait_time_ms / 1000.0 AS WaitS,
(wait_time_ms - signal_wait_time_ms) / 1000.0 AS ResourceS,
signal_wait_time_ms / 1000.0 AS SignalS,
waiting_tasks_count AS WaitCount,
100.0 * wait_time_ms / SUM (wait_time_ms) OVER() AS Percentage,
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS RowNum
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN (
'CLR_SEMAPHORE', 'LAZYWRITER_SLEEP', 'RESOURCE_QUEUE', 'SLEEP_TASK',
'SLEEP_SYSTEMTASK', 'SQLTRACE_BUFFER_FLUSH', 'WAITFOR', 'LOGMGR_QUEUE',
'CHECKPOINT_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BROKER_TO_FLUSH',
'BROKER_TASK_STOP', 'CLR_MANUAL_EVENT', 'CLR_AUTO_EVENT', 'DISPATCHER_QUEUE_SEMAPHORE',
'FT_IFTS_SCHEDULER_IDLE_WAIT', 'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'BROKER_EVENTHANDLER',
'TRACEWRITE', 'FT_IFTSHC_MUTEX', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
'BROKER_RECEIVE_WAITFOR', 'ONDEMAND_TASK_QUEUE', 'DBMIRROR_EVENTS_QUEUE',
'DBMIRRORING_CMD', 'BROKER_TRANSMITTER', 'SQLTRACE_WAIT_ENTRIES',
'SLEEP_BPOOL_FLUSH', 'SQLTRACE_LOCK')
AND wait_type NOT LIKE 'HADR_%'
)
SELECT
W1.wait_type AS WaitType,
CAST (W1.WaitS AS DECIMAL(14, 2)) AS Wait_S,
CAST (W1.ResourceS AS DECIMAL(14, 2)) AS Resource_S,
CAST (W1.SignalS AS DECIMAL(14, 2)) AS Signal_S,
W1.WaitCount AS WaitCount,
CAST (W1.Percentage AS DECIMAL(4, 2)) AS Percentage,
CAST ((W1.WaitS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgWait_S,
CAST ((W1.ResourceS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgRes_S,
CAST ((W1.SignalS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgSig_S
FROM Waits AS W1
INNER JOIN Waits AS W2 ON W2.RowNum <= W1.RowNum
GROUP BY W1.RowNum, W1.wait_type, W1.WaitS, W1.ResourceS, W1.SignalS, W1.WaitCount, W1.Percentage
HAVING SUM (W2.Percentage) - W1.Percentage < 99.9; -- percentage threshold
GO
3. November 2014 08:36
3. November 2014 09:03
USE [Database] -- set db name
GO
SET NOCOUNT ON
GO
-- Server Uptime
select cast((datediff(hh, create_date, getdate()))/24 as varchar(3)) + ' days, '
+ cast((datediff(hh, create_date, getdate())) % 24 as varchar(2)) + ' hours'
as [SQL Server Service Uptime]
from sys.databases where name = 'tempdb'
GO
SELECT TOP 100
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) as statement_text,
case when st.text like '%LIKE%' then 'LIKE' else '' end AS [Wildcard],
execution_count,
case
when execution_count = 0 then null
else total_logical_reads/execution_count
end as avg_logical_reads,
case
when execution_count = 0 then null
else (total_worker_time/execution_count) / 1000
end as [avg_cpu_(msec)],
case
when execution_count = 0 then null
else (total_elapsed_time/execution_count) / 1000
end as [avg_duration_(msec)],
case
when execution_count = 0 then null
else total_rows/execution_count
end as [avg_rows],
-- Query Plan Information
--ph.query_plan,
qs.creation_time,
qs.last_execution_time,
case when
ph.query_plan.exist('declare namespace ns="http://schemas.microsoft.com/sqlserver/2004/07/showplan";(/ns:ShowPlanXML/ns:BatchSequence/ns:Batch/ns:Statements/ns:StmtCursor/ns:CursorPlan/@CursorRequestedType)[1]') = 0
then '' else
ph.query_plan.value('declare namespace ns="http://schemas.microsoft.com/sqlserver/2004/07/showplan";(/ns:ShowPlanXML/ns:BatchSequence/ns:Batch/ns:Statements/ns:StmtCursor/ns:CursorPlan/@CursorRequestedType)[1]','nvarchar (max)')
end as cursor_type
-- Missing Indexes
,case when ph.query_plan.exist('declare namespace ns="http://schemas.microsoft.com/sqlserver/2004/07/showplan";(/ns:ShowPlanXML/ns:BatchSequence/ns:Batch/ns:Statements/ns:StmtSimple/ns:QueryPlan/ns:MissingIndexes/ns:MissingIndexGroup)[1]') = 0
then ''
else ph.query_plan.value('declare namespace ns="http://schemas.microsoft.com/sqlserver/2004/07/showplan";(/ns:ShowPlanXML/ns:BatchSequence/ns:Batch/ns:Statements/ns:StmtSimple/ns:QueryPlan/ns:MissingIndexes/ns:MissingIndexGroup/@Impact)[1]','nvarchar (max)')
end as missing_index_impact,
case when ph.query_plan.exist('declare namespace ns="http://schemas.microsoft.com/sqlserver/2004/07/showplan";(/ns:ShowPlanXML/ns:BatchSequence/ns:Batch/ns:Statements/ns:StmtSimple/ns:QueryPlan/ns:MissingIndexes/ns:MissingIndexGroup/ns:MissingIndex/@Table)[1]') = 0
then ''
else ph.query_plan.value('declare namespace ns="http://schemas.microsoft.com/sqlserver/2004/07/showplan";(/ns:ShowPlanXML/ns:BatchSequence/ns:Batch/ns:Statements/ns:StmtSimple/ns:QueryPlan/ns:MissingIndexes/ns:MissingIndexGroup/ns:MissingIndex/@Table)[1]','nvarchar(max)')
end as missing_index_table
FROM sys.dm_exec_query_stats as qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) as ph
WHERE (st.text is not null)
--AND (execution_count >= 100) -- change threshold
AND (total_logical_reads/execution_count >= 1000) -- change threshold
ORDER BY total_worker_time DESC
GO
---
SELECT migs.group_handle, mig.index_handle, migs.user_seeks, migs.last_user_seek, migs.user_scans, migs.last_user_scan, migs.avg_user_impact,
db_name(mid.database_id) as db, object_name(mid.object_id) as object, mid.equality_columns, mid.inequality_columns, mid.included_columns
--,'CREATE INDEX [ssi_' + convert(varchar, migs.group_handle) + '_' + convert(varchar, mig.index_handle) + '] ON [' + object_name(mid.object_id) + '] ' + '(' +
-- CASE WHEN mid.equality_columns is not null THEN mid.equality_columns ELSE '' END +
-- CASE WHEN mid.equality_columns is null AND mid.inequality_columns is not null THEN mid.inequality_columns ELSE '' END +
-- CASE WHEN mid.equality_columns is not null AND mid.inequality_columns is not null THEN ', ' + mid.inequality_columns ELSE '' END + ')' +
-- CASE WHEN mid.included_columns is not null THEN ' INCLUDE (' + mid.included_columns + ')' ELSE '' END as tsql
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig
ON (migs.group_handle = mig.index_group_handle)
INNER JOIN sys.dm_db_missing_index_details AS mid
ON (mig.index_handle = mid.index_handle)
WHERE (mid.database_id = db_id())
AND (migs.user_seeks >= 100) -- change threshold
AND (migs.avg_user_impact >= 90) -- change threshold
ORDER BY object_name(mid.object_id) ASC, migs.user_seeks DESC, migs.user_scans DESC
GO
4. November 2014 14:33
4. November 2014 16:03
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);
GO
WITH Waits AS
(SELECT
wait_type,
wait_time_ms / 1000.0 AS WaitS,
(wait_time_ms - signal_wait_time_ms) / 1000.0 AS ResourceS,
signal_wait_time_ms / 1000.0 AS SignalS,
waiting_tasks_count AS WaitCount,
100.0 * wait_time_ms / SUM (wait_time_ms) OVER() AS Percentage,
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS RowNum
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN (
'CLR_SEMAPHORE', 'LAZYWRITER_SLEEP', 'RESOURCE_QUEUE', 'SLEEP_TASK',
'SLEEP_SYSTEMTASK', 'SQLTRACE_BUFFER_FLUSH', 'WAITFOR', 'LOGMGR_QUEUE',
'CHECKPOINT_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BROKER_TO_FLUSH',
'BROKER_TASK_STOP', 'CLR_MANUAL_EVENT', 'CLR_AUTO_EVENT', 'DISPATCHER_QUEUE_SEMAPHORE',
'FT_IFTS_SCHEDULER_IDLE_WAIT', 'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'BROKER_EVENTHANDLER',
'TRACEWRITE', 'FT_IFTSHC_MUTEX', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
'BROKER_RECEIVE_WAITFOR', 'ONDEMAND_TASK_QUEUE', 'DBMIRROR_EVENTS_QUEUE',
'DBMIRRORING_CMD', 'BROKER_TRANSMITTER', 'SQLTRACE_WAIT_ENTRIES',
'SLEEP_BPOOL_FLUSH', 'SQLTRACE_LOCK', 'DIRTY_PAGE_POLL', 'SP_SERVER_DIAGNOSTICS_SLEEP')
AND wait_type NOT LIKE 'HADR_%'
)
SELECT
W1.wait_type AS WaitType,
CAST (W1.WaitS AS DECIMAL(14, 2)) AS Wait_S,
CAST (W1.ResourceS AS DECIMAL(14, 2)) AS Resource_S,
CAST (W1.SignalS AS DECIMAL(14, 2)) AS Signal_S,
W1.WaitCount AS WaitCount,
CAST (W1.Percentage AS DECIMAL(4, 2)) AS Percentage,
CAST ((W1.WaitS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgWait_S,
CAST ((W1.ResourceS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgRes_S,
CAST ((W1.SignalS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgSig_S
FROM Waits AS W1
INNER JOIN Waits AS W2 ON W2.RowNum <= W1.RowNum
GROUP BY W1.RowNum, W1.wait_type, W1.WaitS, W1.ResourceS, W1.SignalS, W1.WaitCount, W1.Percentage
HAVING SUM (W2.Percentage) - W1.Percentage < 99; -- percentage threshold
GO
4. November 2014 16:28
• Over provisioning and Balloon Drivers
o When over provisioning on a VM Host Server the server can begin to de-allocate memory to the individual VM’s via the Balloon Memory Drivers. This cause a drastic decrease in overall system performance, we recommend you either disable the Balloon Drivers on system critical VM’s or monitor its utilization.
• Synthetic Device Drivers
o The biggest issue we see with Virtualized servers is that the customer is not running the correct or most updated synthetic drivers for such things as Disk and Network Interface Cards. Please verify with VMware that all drivers are correct and up to date
• Server Side Scaling
o With the older version of VMware ESX server the synthetic NIC driver VMNXT 3 has “Receive Server Side Scaling” disabled. We recommend that you verify that this enabled on all NICs on all VM regardless of the driver.
4. November 2014 18:35
SilverX hat geschrieben:..., möchte aber auch darauf hinweisen, dass der SQL Server Speicher begrenzt werden sollte, so dass der NAV Server genug Luft zum atmen hat. Im allgemeinen, sicherlich auch abhängig von der Anzahl an Benutzern, empfehlen wir 8-12 GB Speicher für den Dynamics NAV Server zu reservieren (also dem SQL Server zu klauen).
5. November 2014 12:24
5. November 2014 12:34
5. November 2014 12:38
Patrick Ringert hat geschrieben:
- Code:
ASYNC_NETWORK_IO 39821.49 39816.06 Mai 43 191233 97.55 0.2082 0.2082 0.0000
5. November 2014 12:44
5. November 2014 12:50
SilverX hat geschrieben:• Over provisioning and Balloon Drivers
o When over provisioning on a VM Host Server the server can begin to de-allocate memory to the individual VM’s via the Balloon Memory Drivers. This cause a drastic decrease in overall system performance, we recommend you either disable the Balloon Drivers on system critical VM’s or monitor its utilization.
• Synthetic Device Drivers
o The biggest issue we see with Virtualized servers is that the customer is not running the correct or most updated synthetic drivers for such things as Disk and Network Interface Cards. Please verify with VMware that all drivers are correct and up to date
• Server Side Scaling
o With the older version of VMware ESX server the synthetic NIC driver VMNXT 3 has “Receive Server Side Scaling” disabled. We recommend that you verify that this enabled on all NICs on all VM regardless of the driver.
5. November 2014 12:52
Patrick Ringert hat geschrieben:Netzwerkadaptereinstellung wurden entsprechend geändert. Leider keine Änderungen.
5. November 2014 13:53
5. November 2014 14:46
Leider nicht. Aber vielleicht ist ja das vSphere Performance Guide eine gute Anlaufstelle: Performance Best Practices for VMware vSphere™ 5.0.stryk hat geschrieben:SilverX hat geschrieben:• Over provisioning and Balloon Drivers
o When over provisioning on a VM Host Server the server can begin to de-allocate memory to the individual VM’s via the Balloon Memory Drivers. This cause a drastic decrease in overall system performance, we recommend you either disable the Balloon Drivers on system critical VM’s or monitor its utilization.
• Synthetic Device Drivers
o The biggest issue we see with Virtualized servers is that the customer is not running the correct or most updated synthetic drivers for such things as Disk and Network Interface Cards. Please verify with VMware that all drivers are correct and up to date
• Server Side Scaling
o With the older version of VMware ESX server the synthetic NIC driver VMNXT 3 has “Receive Server Side Scaling” disabled. We recommend that you verify that this enabled on all NICs on all VM regardless of the driver.
@Carsten: hast Du ggf. dazu noch mehr/konkretere Hinweise?