Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JavaScript
- 자바기초스터디
- CentOS8
- class파일바로보기
- Linux
- 남산타워뷰
- 7kyu
- Python
- 이클립스
- 서울에어비앤비
- monthPicker
- Eclipse
- 6kyu
- SQL
- java
- 멀티쓰레드프로그래밍
- CentOS
- 이것이리눅스다
- https
- Oralce
- 서울복층에어비앤비
- 오류
- VMware
- 주민번호마스킹
- 파이썬
- 시즌1
- 중첩쿼리
- 8kyu
- 사용자변경
- Codewars
Archives
- Today
- Total
보통사람
[오류] 톰캣 프로세스 여러개 뜨는 경우 본문
환경버전
개발툴 : 이클립스
Spring : 4.3.3
Quartz : 2.3.0
Tomcat : 8.5
서버 :CentOS
1. 오류
개발서버에서 톰캣 프로세스가 여러개가 뜨면서 메모리 너무 많이 잡아먹는 현상이 발생하였다.
netstate -tnlp 하면 8080포트는 하나만 나오고, ps -ef | grep tomcat 하면 여러개 나왔다.
2. 원인
검색을 하다가 아래의 글을 보고 quartz 스케쥴러의 문제라고 생각이 들었다.
톰캣 서버가 종료되어도 이미 실행된 job 스레드는 종료되지 않고 계속 남는다.
[Tomcat] 톰켓 프로세스 종료 이슈 (shutdown 시 PID 남음)
이슈 내용 Tomcat을 종료하는 스크립트(shutdown.sh)를 실행했지만 프로세스가 죽지 않고 그대로 남는다. netstate -tnlp 상으로는 확인되지 않고, ps -ef 상으로는 PID 번호가 확인된다. 기존 프로세스를 kil
log4day.tistory.com
3. 해결
destroy-method 속성을 이용해서 SchedulerFactoryBean 클래스에 있는 destroy() 메소드를 추가해줬다.
<bean id="qcrmJobScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" destroy-method="destroy">
<property name="triggers">
<list>
<ref bean="testJobTrigger" />
</list>
</property>
</bean>
하지만 모든 job을 종료시키는 destroy() 메소드는 빈 소멸시 자동으로 호출되는 것 같은데, 왜 실행되지 않았던걸까?
/**
* Shut down the Quartz scheduler on bean factory shutdown,
* stopping all scheduled jobs.
*/
@Override
public void destroy() throws SchedulerException {
if (this.scheduler != null) {
logger.info("Shutting down Quartz Scheduler");
this.scheduler.shutdown(this.waitForJobsToCompleteOnShutdown);
}
}
+ 추가(2023.10.13)
위 방법으로 적용 후에도 계속 발생하여 젠킨스 배포시 실행중인 톰캣 프로세스 모두 종료시키는 쉘 스크립트를 추가하였다.
#!/bin/bash
tomcat_pids=$(ps aux | grep tomcat | grep java | grep -v grep | awk '{print $2}')
if [ -n "$tomcat_pids" ]; then
for pid in $tomcat_pids; do
echo "PID: $pid"
kill -9 $pid
done
fi
참조
'오류' 카테고리의 다른 글
[오류] https 도메인인데 request.isSecure() return false인 경우 (0) | 2023.08.10 |
---|---|
[오류] 팝업 여러개 띄울때 화면 reload 발생 (0) | 2023.07.30 |
[오류] 자동으로 도메인에 https가 붙는 경우 (0) | 2023.07.30 |