본문 바로가기

개발

[Tomcat] 톰캣 서비스 시작 오류시 해결방법(에러로그 미기록 상황)

728x90
반응형

 

Apache Tomcat 을 윈도우 환경에서 설치 및 사용시 처음에는 문제가 없다가 어플리케이션이 점점 커지고 윈도우의 리소스를 많이 사용하게 되면 톰캣 서비스 구동이 안되서 문제가 발생하는 경우가 종종 발생한다.

Tomcat\bin\startup.bat 실행으로 웹어플리케이션이 구동되면 사용에는 문제없지만 서비스 방식이 아니면 콘솔창이 계속 표시될 수 있고 관리자가 콘솔창을 닫게 되면 웹어플리케이션이 내려가게 되어 장애가 발생될 수 있다.

catalina.log, localhost.log, common-daemon.log 에 에러메세지가 표시되어 해결되면 다행이지만 로그가 기록이 안되는 경우이면 원인파악이 쉽지 않다.

Tomcat Logs

환경정보

  • Window Server 2012 R2
  • JDK 11
  • Apache Tomcat 8.5

원인파악

윈도우 서비스 구동시 에러가 발생하기때문에 윈도우 로그를 확인

윈도우 우클릭 > Computer Management

Computer Management

Computer Management > System Tools > Event Viewer > Windows Logs > System 에서 Tomcat 8.5 서비스관련 Event ID : 7000, 7030 에러가 발생하고 있는 것을 확인

Windows Logs > System > Event ID 7000, 7030

Event ID - 7000 : The Apache Tomcat 8.5 service failed to start due to the following error: The system cannot find the file specified.
Event ID - 7030 : The Apache Tomcat 8.5 service is marked as an interactive service. However, the system is configured to not allow interactive services. This service may not function properly.

장애원인

Event ID 7000 은 윈도우 서비스 시작이 오래걸리면 표시되는 ID이다. (서비스 시작시간 제한에 관련된 이슈)

톰캣에서 웹어플리케이션을 WAR로 배포할시 WAR파일용량이 크면 압축해제만 해도 시간이 많이 걸리거나 OS가 리소스를 사용하여 서비스 구동이 오래걸리면 발생하는 문제인 것 같다.(그래서 처음에는 장애가 발생되지 않다가 어플리케이션이 점점 커지면 발생하는 것을 많이 겪었다.)

해결방법

이미 MS에서는 문제를 파악하였고 "시간제한 오류로 인해 느린 서비스가 시작되지 않는 문제"로 해결방법이 존재하는 것을 확인

https://docs.microsoft.com/ko-kr/troubleshoot/windows-server/system-management-components/service-not-start-events-7000-7011-time-out-error

 

서비스가 시작되지 않는 경우 7000 및 7011 이벤트가 Windows 서버에 기록됩니다. - Windows Server

서비스가 시작되기 전에 시간이 정해진 문제를 설명합니다. ServicesPipeTimeout 레지스트리 항목의 값을 늘려 이 문제를 해결하는 방법에 대해 설명

docs.microsoft.com

Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows 10 - 모든 버전에서 발생하는 문제이며 서비스 시작 제한시간을 레지스트리를 편집 또는 추가하여 해결하면 된다. 하지만 OS 재기동이 필요하다.

https://docs.microsoft.com/ko-kr/troubleshoot/windows-server/system-management-components/service-not-start-events-7000-7011-time-out-error

 

1. 윈도우 실행 > regedit > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 으로 이동 후 새로만들기, DWORD값

2. ServicesPipeTimeout 항목, 10진수 선택 후 값을 60000 입력 후 확인

[레지스트리편집] ServicesPipeTimeout

3. OS 재기동를 하면 해결된다.

 

728x90
반응형