arko_renual/deploy/dev/arko-dev.service
URP2026 62ef19c78f
All checks were successful
deploy-dev / deploy (push) Successful in 31s
Gitea 1.22 호환: 워크플로에서 workflow_dispatch 제거
Gitea 1.22.3은 workflow_dispatch(수동 실행)와 inputs 컨텍스트를 지원하지 않아
워크플로가 Actions 목록에 표시되지 않았다. 트리거를 push 하나로 단순화한다.
롤백은 서버에서 직접 수행하도록 README에 절차를 남긴다.

Tomcat 힙도 768m -> 448m로 낮춘다. 가용 메모리 1G 안팎인 서버에서
Tomcat 재기동 직후 서버 전체가 응답 불능이 된 사례가 두 번 있었다.
2026-07-29 17:03:55 +09:00

45 lines
1.8 KiB
Desktop File

# arko_renual 개발서버 Tomcat 서비스
# 설치 위치: /etc/systemd/system/arko-dev.service
#
# 이 서버(zio-server)의 기존 서비스들과 같은 방식(systemd 직접 관리)을 따른다.
#
# 힙 448m — 처음엔 768m로 잡았다가 낮췄다. 이 서버는 40여 개 서비스가 동거해
# 평상시 가용 메모리가 1G 안팎이고, 2026-07-29 Tomcat 재기동 직후 서버 전체가
# 응답 불능이 되어 재부팅된 일이 두 번 있었다. arko는 기동 시 JSP 컴파일로
# 메모리를 크게 쓰므로 상한을 낮춰 다른 서비스를 밀어내지 않도록 한다.
# 늘리려면 반드시 free -h 로 여유를 먼저 확인할 것.
[Unit]
Description=arko_renual DEV (Tomcat 9, csv.zioinfo.co.kr, :8088)
After=network.target mariadb.service
Wants=mariadb.service
[Service]
Type=forking
Environment="JAVA_HOME=/opt/arko-dev/jdk8"
Environment="CATALINA_HOME=/opt/arko-dev/tomcat"
Environment="CATALINA_BASE=/opt/arko-dev/tomcat"
Environment="CATALINA_PID=/opt/arko-dev/tomcat/temp/tomcat.pid"
# headless: 이미지 처리(썸네일) 시 X11 없는 환경에서 죽지 않도록
# Asia/Seoul: 로그·배치 시각을 서버 다른 서비스와 맞춘다
# ExitOnOutOfMemoryError: OOM으로 반쯤 죽은 채 살아있느니 죽고 재기동하는 편이 낫다
Environment="CATALINA_OPTS=-Xms192m -Xmx448m -XX:MaxMetaspaceSize=192m -XX:+ExitOnOutOfMemoryError -Djava.awt.headless=true -Duser.timezone=Asia/Seoul -Dfile.encoding=UTF-8"
ExecStart=/opt/arko-dev/tomcat/bin/startup.sh
ExecStop=/opt/arko-dev/tomcat/bin/shutdown.sh 30 -force
# arko는 첫 기동 시 JSP 컴파일로 60~90초가 걸린다
TimeoutStartSec=300
TimeoutStopSec=90
Restart=on-failure
RestartSec=15
# 배포 스크립트가 webapps/ROOT를 갈아끼우므로 파일 접근 제약은 걸지 않는다
User=root
Group=root
UMask=0027
[Install]
WantedBy=multi-user.target