본문 바로가기
IT/JAVA

java with cpulimit & visualvm 으로 확인

by 최고영회 2022. 7. 19.
728x90
반응형
SMALL

기존에 product.jar 모듈 실행시키는 스크립트 (ex. start.sh)

nohup java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dlogging.config=/productName/.conf/product_logback.xml -jar /productName/product.jar > /dev/null 2>&1 &

 

cpulimit 처리를 위한 스크립트 추가 

nohup java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dlogging.config=/productName/.conf/product_logback.xml -jar /productName/product.jar > /dev/null 2>&1 &

new_pid=`ps -ef | grep -v grep | grep -v /bin/sh | grep "/productName/product.jar" | awk '{print $2}'`

nohup cpulimit -p $new_pid -l 30 > /dev/null 2>&1 &

cpulimit 을 30% 로 설정했으며 이는 single core 기준이다.

 

jmx 를 이용하여 visualvm 으로 cpulimit 이 잘 동작하는지 확인 하기 위해 java -Xms512m .... 부분에 아래와 같은 옵션을 추가 한다. 

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port={port}
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname={ip}

nohup java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dlogging.config=/productName/.conf/product_logback.xml -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9098 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.107.252 -jar /productName/product.jar > /dev/null 2>&1 &

./start.sh 로 실행시키고 

 

client PC 에서는 visualvm 을 실행시킨다.

Remote 에 host 를 추가하고 

JMX Connection 을 추가한다.

 

CPU 를 확인한다. 

728x90
반응형
LIST