nginx 무중단 배포를 하면
8081, 8082 두 포트에서 jar 파일이 실행되고 nginx가 둘중 하나의 service port를 바라본다. 아래의 블로그를 참조하면 우리가 구성한 배포자동화가 어떤식으로 실행되는지 알수 있다.
https://yeonyeon.tistory.com/76
뭔가 두개가 실행되고 있어서 충돌이 나는지 nginx가 바라보지 않는 port에서 실행되는 프로세스를 강제로 종료시키도록 switch.sh를 아래와 같이 수정하였다
#!/usr/bin/env bash
ABSPATH=$(readlink -f $0)
ABSDIR=$(dirname $ABSPATH)
source ${ABSDIR}/profile.sh
function switch_proxy() {
IDLE_PORT=$(find_idle_port)
echo "> 전환할 Port: $IDLE_PORT"
echo "> Port 전환"
echo "set \$service_url http://127.0.0.1:${IDLE_PORT};" | sudo tee /etc/nginx/conf.d/service-url.inc
# 포트 전환하면서, 바꾼거말고 다른거 kill
if [ ${IDLE_PORT} == 8081 ]
then
KILL_PORT=8082
IDLE_PID=$(lsof -ti tcp:${KILL_PORT})
echo "> ${KILL_PORT} 포트를 종료합니다."
kill -15 ${IDLE_PID}
else
KILL_PORT=8081
IDLE_PID=$(lsof -ti tcp:${KILL_PORT})
echo "> ${KILL_PORT} 포트를 종료합니다."
kill -15 ${IDLE_PID}
fi
echo "> 엔진엑스 Reload"
sudo service nginx reload
}
수정 후 하나의 jar파일만 실행되는것을 확인하였고, 현재까지는 서버의 CPU가 올라가는 이상현상이 더 이상 발생하지 않고있다.
oneToMany, ManyToOne 양방향 관계에서 ManyToOne에 있는 entity를 삭제시 외래키 참조 무결성 위반 에러가 떴다. 출처의 내용처럼 외래키 설정 시 owner 설정을 oneToMany쪽에 해주지 않아서 양방향 관계에서 ManyToOne 이 기본값으로 owner로 설정되는 바람에 oneToMany쪽에서는 함께 삭제 되지않았다.
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
private List<Comment> commentList;
주인관계를 위와 같이 설정하여 해결하였다.
우분투의 CPU 부하 원인을 찾기위해 아래와 같이 명령어를 백그라운드에서 실행시켜두었다.
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done &
%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.1 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.0 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
...
이런식으로 로그가 떨어진다.