ENG: | A timeout was reached (30000 milliseconds) while waiting for the XXX service to connect |
На компьютере не запускается служба. В журнале ОС сообщение об ошибке (полный текст ошибки приведен в самом конце статьи):
A timeout was reached (30000 milliseconds) while waiting for the ХХХ service to connect.
В моем конкретной случае это был сервер Oracle, поэтому ошибка выглядела так:
A timeout was reached (30000 milliseconds) while waiting for the OracleOraDb11g_home1TNSListener service to connect.
Обычно код события (Event ID) при этом 7000 или 7011 или 7009 (подробнее в A service does not start, and events 7000 and 7011 are logged in Windows Server 2003, Windows Server 2008, and Windows Server 2008 R2).
ПРИЧИНА
Причина ошибки в том что у ОС есть timeout запуска служб. По умолчанию он равен 30000 миллисекунд (30 секунд). Во время старта ОС сервер сильно загружен, т.к. стартует множество процессов и некоторые из них не успевают уложиться в 30 сек. В этом случае ОС прекращает работу такой службы принудительно и записывает в журнал ОС ошибку.
В моем конкретном случае служба Oracle Listener не успевает запуститься за 30 сек.
РЕШЕНИЕ
Есть несколько способов решения проблемы.
1) Самый простой способ — это увеличить timeout, чтобы служба успевала стартовать. Для этого нужно изменить параметр в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServicesPipeTimeout
.
Тип параметра DWORD32. Значение задается в миллисекундах (1 секунда = 1000 миллисекунд). Если его нет — создайте его. На картинке показано что параметр равен 180000 миллисекунд = 180 секунд = 3 минуты.
2) Уменьшить нагрузку на CPU во время старта ОС. Для этого нужно отключить все неиспользуемые сервисы и убрать из автозагрузки все неиспользуемые приложения.
3) Перенести ПО на другой компьютер, более мощный компьютер или обновить существующий компьютер.
х) Дополнительно можно сделать зависимости между службами. Например, для Oracle, сделать зависимость службы БД OracleService<SID> от службы Listener Oracle<ORA_HOME>TNSListener. Т.е. службы будут стартовать не все сразу, а в определенном порядке, строго друг за другом. Делается это с помощью команды SC. Ниже дан пример (пробел между равно и кавычной — нужен!).
sc config "OracleServiceORA112" depend= "OracleOraDb11g_home1TNSListener"
ПОЛНЫЙ ТЕКСТ ОШИБКИ
Log Name: System
Source: Service Control Manager
Date: 08.08.2013 10:08:52
Event ID: 7009
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: VENUS2
Description:
A timeout was reached (30000 milliseconds) while waiting for the OracleOraDb11g_home1TNSListener service to connect.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
<EventID Qualifiers="49152">7009</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8080000000000000</Keywords>
<TimeCreated SystemTime="2013-08-08T06:08:52.073062700Z" />
<EventRecordID>16215</EventRecordID>
<Correlation />
<Execution ProcessID="476" ThreadID="480" />
<Channel>System</Channel>
<Computer>VENUS2</Computer>
<Security />
</System>
<EventData>
<Data Name="param1">30000</Data>
<Data Name="param2">OracleOraDb11g_home1TNSListener</Data>
</EventData>
</Event>
Log Name: System
Source: Service Control Manager
Date: 08.08.2013 10:08:52
Event ID: 7000
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: VENUS2
Description:
The OracleOraDb11g_home1TNSListener service failed to start due to the following error:
The service did not respond to the start or control request in a timely fashion.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
<EventID Qualifiers="49152">7000</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8080000000000000</Keywords>
<TimeCreated SystemTime="2013-08-08T06:08:52.073062700Z" />
<EventRecordID>16216</EventRecordID>
<Correlation />
<Execution ProcessID="476" ThreadID="480" />
<Channel>System</Channel>
<Computer>VENUS2</Computer>
<Security />
</System>
<EventData>
<Data Name="param1">OracleOraDb11g_home1TNSListener</Data>
<Data Name="param2">%%1053</Data>
</EventData>
</Event>
Запись A timeout was reached (30000 milliseconds) while waiting for the XXX service to connect впервые появилась Dmitry Bobrovsky Blog
— Author: Dmitry Bobrovsky Google