Programming/Java(Spring)2019.07.06 19:59

128GB 서버에서 돌리니 최대 힙 사이즈가 32기가가 잡히는것 같고

16GB 서버에서 확인해보니 InitialHeapSize 와 MaxHeapSize가 모두 1/4 크기이다.

# java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
     intx CompilerThreadStackSize                   = 0                                   {pd product}
    uintx ErgoHeapSizeLimit                         = 0                                   {product}
    uintx HeapSizePerGCThread                       = 87241520                            {product}
    uintx InitialHeapSize                          := 2109734912                          {product}
    uintx LargePageHeapSizeThreshold                = 134217728                           {product}
    uintx MaxHeapSize                              := 32210157568                         {product}
     intx ThreadStackSize                           = 1024                                {pd product}
     intx VMThreadStackSize                         = 1024                                {pd product}
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

[링크 : https://www.mkyong.com/java/find-out-your-java-heap-memory-size/]

 

spring boot로 실행하니(java -jar을 통해서 war 실행)

-Xms2971M -Xmx3971M -Xmn400M 으로 뜨는데 순서대로 (실수.. 카산드라 메모리였음.. -_ㅠ)

InitialHeapSize / MaxHeapSize / 마지막은 모르겠네?

아무튼.. 저 값이 기본인지 부터 확인해야 할 듯

1. -X Option (모든 VM에서 동작하지 않을 수 있는 비표준 option이며, 버젼별로 언급없이 변경되어질 수 있음)
-Xms : 초기 Heap size 설정
-Xmx : 최대 Heap size 설정
-Xss : 각 Thread에 할당되는 Stack size 설정
-Xmn : New 영역을 위한 Heap size 설정

2. -XX Option (올바른 동작을 위해 특정한 시스템 요구사항들이 있으며, 시스템 설정 파라미터에 대한 접근 권한이 요구됨)
-XX:PermSize : 초기 Permanent size 설정
-XX:MaxPermSize : 최대 Permanent size 설정

[링크 : https://webprogrammer.tistory.com/1430]

[링크 : https://spring.io/blog/2015/12/10/spring-boot-memory-performance]

 

+

일단은 -Xmx로 설정해주는게 영향을 주긴 한 듯..

'Programming > Java(Spring)' 카테고리의 다른 글

java 메모리 관련...2?  (0) 2019.07.06
java.lang.OutOfMemoryError: GC overhead limit exceeded  (0) 2019.07.06
mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.07.06 19:50

이거 먼가.. 심각하게 심각해 보이는데..

아무튼 heap 메모리를 좀 넉넉하게 잡아주면 될거 같으면서도 애매하네?

 

java -Xmx1024m com.yourcompany.YourClass

[링크 : https://helloino.tistory.com/97]

[링크 : https://www.baeldung.com/java-gc-overhead-limit-exceeded]

 

If starting the app with the spring-boot plugin:

mvn spring-boot:run -Drun.jvmArguments="-Xmx512m" -Drun.profiles=dev
Otherwise if running java -jar:

java -Xmx512m -Dspring.profiles.active=dev -jar app.jar

[링크 : https://stackoverflow.com/questions/23072187]

'Programming > Java(Spring)' 카테고리의 다른 글

java 메모리 관련...2?  (0) 2019.07.06
java.lang.OutOfMemoryError: GC overhead limit exceeded  (0) 2019.07.06
mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.06.08 20:19

 

6.1.3. Using Build Profiles

To activate one or more build profiles from the command line, use the following option:

-P, --activate-profiles <arg>Comma-delimited list of profiles to activate

For more information about build profiles, see Chapter 5, Build Profiles.

 

[링크 : https://books.sonatype.com/mvnref-book/reference/running-sect-options.html]

[링크 : https://www.lesstif.com/pages/viewpage.action?pageId=14090588]

'Programming > Java(Spring)' 카테고리의 다른 글

java 메모리 관련...2?  (0) 2019.07.06
java.lang.OutOfMemoryError: GC overhead limit exceeded  (0) 2019.07.06
mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.06.07 16:26

$ sudo apt-get install tomcat9-admin

$ sudo vim /etc/tomcat9/tomcat-users.xml

  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="password" roles="manager-gui,manager-script,manager-status"/>

 

war 디플로이 경로(tomcat manager 쓰면 상관없음)

/var/lib/tomcat9/webapps

'Programming > Java(Spring)' 카테고리의 다른 글

java.lang.OutOfMemoryError: GC overhead limit exceeded  (0) 2019.07.06
mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
WARNING: An illegal reflective access operation has occurred  (0) 2019.06.05
Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.06.07 15:59

해당 옵션이 true 라서 war 파일 넣어두고 서버 재시작 하면 배포 되어 버리는 듯

 

unpackWARs
Set to true if you want web applications that are placed in the appBase directory as web application archive (WAR) files to be unpacked into a corresponding disk directory structure, false to run such web applications directly from a WAR file. See Automatic Application Deployment for more information.

[링크 : http://tomcat.apache.org/tomcat-5.5-doc/config/host.html#Standard_Implementation]

[링크 : https://okky.kr/article/130341]

'Programming > Java(Spring)' 카테고리의 다른 글

mvn -P profile  (0) 2019.06.08
tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
WARNING: An illegal reflective access operation has occurred  (0) 2019.06.05
spring에 angluar 통합하기  (0) 2019.06.04
Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.06.07 10:22

tt
0.00MB

에디터 바뀌면서 <> 들어가면 다 날려버려 내용이 안들어가네

어떻게 해야하지? -_-


[링크 : 
https://elfinlas.tistory.com/369]

[링크 : https://cpdev.tistory.com/110]

'Programming > Java(Spring)' 카테고리의 다른 글

tomcat9 on ubuntu18.04  (0) 2019.06.07
tomcat 자동 war 배포 막기  (0) 2019.06.07
tomcat manager GUI  (0) 2019.06.07
WARNING: An illegal reflective access operation has occurred  (0) 2019.06.05
spring에 angluar 통합하기  (0) 2019.06.04
spring war와 war.original  (0) 2019.04.23
Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.06.05 22:25

openJDK-11 이 깔려서 생기는 문제..

라고 하는데, 경고라서 무시해도 되려나?

일단 openJDK-8-jre를 설치하니 경고가 없이 실행된다.

 

[링크 :https://okky.kr/article/487270]

Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.06.04 14:47

머.. spring 이라는 놈은 java 로 만든 웹 프레임 워크 겸 웹 서버니까

ng build 등으로 생성된 static 파일을 넣어 주면 되는거고

 

src/main/resources/static 에 넣어주면 되는 듯

[링크 : https://studystorage.blogspot.com/2017/01/spring-angular2.html]

Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.04.23 10:19

maven 에서 repackging 이라는걸로 인해서 이렇게 바뀐다는데

file로 보면 war는 data과 war.original은 zip archive data 라고 되어있는데 무슨 차이인지 감이 안오네..

 

The answer is that you are using repackage goal in your spring-boot-maven-plugin. So, What it does?

Maven first builds your project and packages your classes and resources into a WAR (${artifactId}.war) file.

Then, repackaging happens. In this goal, all the dependencies mentioned in the pom.xml are packaged inside a new WAR (${artifactId}.war) and the previously generated war is renamed to ${artifactId}.war.original.

[링크 : https://stackoverflow.com/.../why-spring-boot-generate-jar-or-war-file-with-original-extention/43641913]

[링크 : https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html]

 

[링크 : http://repackage.org/]

 

Repackages existing JAR and WAR archives so that they can be executed from the command line using java -jar. With layout=NONE can also be used simply to package a JAR with nested dependencies (and no main class, so not executable).

[링크 : https://docs.spring.io/spring-boot/docs/current/maven-plugin/repackage-mojo.html]

 

[링크 : https://preamtree.tistory.com/69]

Posted by 구차니

댓글을 달아 주세요

Programming/Java(Spring)2019.04.18 10:30

jcmd

[링크 : https://docs.oracle.com/javase/10/tools/jcmd.htm]

 

# jcmd --help
Error parsing arguments: No command specified

Usage: jcmd  PerfCounter.print|-f file>
   or: jcmd -l
   or: jcmd -h

  command must be a valid jcmd command for the selected jvm.
  Use the command "help" to see which commands are available.
  If the pid is 0, commands will be sent to all Java processes.
  The main class argument will be used to match (either partially
  or fully) the class used to start Java.
  If no options are given, lists Java processes (same as -p).

  PerfCounter.print display the counters exposed by this process
  -f  read and execute commands from the file
  -l  list JVM processes on the local machine
  -h  this help

 

근데 보는법을 모르겠다 ㅠㅠ

# jcmd 10776 help
10776:
The following commands are available:
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
VM.classloader_stats
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.finalizer_info
GC.heap_info
GC.run_finalization
GC.run
VM.uptime
VM.dynlibs
VM.flags
VM.system_properties
VM.command_line
VM.version
help

For more information about a specific command use 'help 

'.

# jcmd 10776 GC.heap_info
10776:
 PSYoungGen      total 192512K, used 187956K [0x00000000ec400000, 0x00000000f8300000, 0x0000000100000000)
  eden space 189952K, 98% used [0x00000000ec400000,0x00000000f7a0d258,0x00000000f7d80000)
  from space 2560K, 60% used [0x00000000f7d80000,0x00000000f7f00000,0x00000000f8000000)
  to   space 2560K, 0% used [0x00000000f8080000,0x00000000f8080000,0x00000000f8300000)
 ParOldGen       total 647168K, used 591782K [0x00000000c4c00000, 0x00000000ec400000, 0x00000000ec400000)
  object space 647168K, 91% used [0x00000000c4c00000,0x00000000e8de99b8,0x00000000ec400000)
 Metaspace       used 107438K, capacity 109826K, committed 110336K, reserved 1146880K
  class space    used 13031K, capacity 13457K, committed 13568K, reserved 1048576K

[링크 : http://karunsubramanian.com/websphere/how-to-monior-heap-usage-of-a-java-application/]

 

+

GPL 이라는데 상용으로 사용가능한지 모르겠음

[링크 : https://visualvm.github.io/]

 

 

+

클래스 히스토그램은.. 클래스별 메모리 사용량인가?

# jcmd 10776 GC.class_histogram
10776:

 num     #instances         #bytes  class name
----------------------------------------------
   1:        150865      436535528  [C
   2:          7008       47125920  [B
   3:        134955        4318560  java.util.concurrent.ConcurrentHashMap$Node
   4:        145517        3492408  java.lang.String
   5:         11226        3398488  [I

 

찾다보니 jmap -histo pid도 동일한 결과를 내주네..

[링크 : http://www.openkb.info/2014/06/how-to-check-java-memory-usage.html]

 

일단 의미를 보건대.. [C는 Char array 라는 느낌인데

무슨 미친 char 배열 객체가 이렇게 메모리를 쳐드시나...

Element Type        Encoding
boolean             Z
byte                B
char                C
class or interface  Lclassname;
double              D
float               F
int                 I
long                J
short               S 

 

it is an array of objects as specified by JVM Specifications for internal representation of class names:

  • a single [ means an array of
  • L followed by a fully qualified class name (e.g. java/lang/Object) is the class name terminated by semicolon ;

so [Ljava.lang.object; means Object[]

[링크 : https://stackoverflow.com/.../what-do-those-strange-class-names-in-a-java-heap-dump-mean]

 

+

[링크 : https://spring.io/blog/2015/12/10/spring-boot-memory-performance]

Posted by 구차니

댓글을 달아 주세요