I/O request has taken longer than 15 seconds to complete. This may indicate an SQL Server I/O bottlenecks. SQL Server performance highly relies on the disk performance. Note: this rule is disabled by default. Please use overrides to enable it when necessary.
I/O request has taken longer than 15 seconds to complete. This may indicate an SQL Server I/O bottlenecks. SQL Server performance highly relies on the disk performance. Note: this rule is disabled by default. Please use overrides to enable it when necessary.
SQL Server is spawning more I/O requests than what I/O disk subsystem could handle.
There could be an Issue with I/O subsystem (or) driver/firmware issue (or) Misconfiguration in I/O Subsystem (or) Compression and so the Disks are performing very slowly and hence SQL Server is affected.
Some other process on the system is saturating the disks with I/O requests. Common application includes AV Scan, System Backup etc. Therefore, I/O requests posted by SQL Server become slow.
Exclude SQL Server files from antivirus scan.
Do not place SQL Server FILES on compressed drives.
Distribute SQL Server data files and transaction log files across drives.
If the “I/O request taking longer” warning is for tempdb, enable trace flag 1118 and increase the tempdb data files, refer to http://support.microsoft.com/kb/2154845
If none of the above resolves the issue, collect the below perfmon counters.
Target | Microsoft.SQLServer.Linux.DBEngine | ||
Category | EventCollection | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Comment | Mom2017ID='{ACF21E73-7DD4-4899-A1BF-5BCBACF479EF}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.Linux.EventRule.DBEngine.IORequestsTakingLongerThen15SecondsToComplete" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="false" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{ACF21E73-7DD4-4899-A1BF-5BCBACF479EF}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>833</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.IORequestsTakingLongerThen15SecondsToComplete.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>