2013-04-01 1 views
2

catalina.sh에서 CATALINA_OPTS를 설정 중이지만 이상하게도이 값은 무시되는 것 같습니다. 나는 768M RAM을 가진 기계를 사용하고있다. 재현 할 단계는 다음과 같습니다Tomcat 7 - 작동시킬 CATALINA_OPTS 힙 크기를 얻을 수 없습니다.

free -m을 실행하여 Tomcat을 시작하기 전에 메모리를 검사합니다. 나는과 같이 catalina.sh의 첫 번째 줄에 CATALINA_OPTS을 설정 한

total  used  free  shared buffers  cached 
    768   43  724   0   0   16 

다음 얻을 :

export CATALINA_OPTS="-Xms64M -Xmx256M" 

그때 사용 ./startup.sh

을 Tomcat을 시작에게 나는 톰캣이 걸렸다 확인 인수를 통해 ps aux | grep tomcat. 나는 설정이

루트 1,164 26.0 6.2 1,232,968 49,116 점/0 SL 10시 반 0시 1분 는/usr/빈/자바 -Djava.util.logging을 읽은 것을 나타내는 것 같다 다음과 같은 결과를 얻을 수 .config.file =/usr/share/apache-tomcat-7.0.39/conf/logging.properties -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager -Xms64M -Xmx256M -Djava.endorsed .dirs =/usr/share/apache-tomcat-7.0.39/endorsed -classpath /usr/share/apache-tomcat-7.0.39/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.39 /bin/tomcat-juli.jar -Dcatalina.base =/usr/share/apache-tomcat-7.0.39 -Dcatalina.home =/usr/share/apache-tomcat-7.0.39 -Djava.io.tmpdir = /usr/share/apache-tomcat-7.0. 내가 다시 free -m을 실행하지만 이것은 5백12메가바이트 사용한 것을 제안

 total  used  free  shared buffers  cached 
     768  558  209   0   0   20 

을 얻을

39/임시 시작 org.apache.catalina.startup.Bootstrap. 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 나 또한 JAVA_OPTS 설정 시도했지만 그 중 하나가 작동하지 않았다.

I가 JDK7 아파치 톰캣으로 CentOS는 6 일 오전 7

EDIT 1 : 여기서 I는 각각

 total  used  free  shared buffers  cached 
     768  432  335   0   0   39 

128에 -Xmx 값을 설정하고 (64)하면 결과는
 total  used  free  shared buffers  cached 
     768  366  401   0   0   32 

-Xms 설정은 전혀 영향을 미치지 않으며 -Xmx 설정 값보다 약 250MB 이상 사용됩니다.

설명하기가 다소 어렵습니다. 웹 애플리케이션이 설치되지 않은 일반 바닐라 Tomcat 7 설치입니다 (기본값 이외의 경우). 확실히 그들은 250 MB를 사용하지 않습니까?

답변

1

힙이 Java가 획득하는 유일한 메모리 블록이 아니라는 점에 유의하십시오. 또한, Tomcat의 시작 프로세스가 64M 이상을 사용하면 JVM은 더 많은 메모리를 행복하게 -Xmx 값까지 할당합니다. 그러나 그것은 모든 것이 아닙니다. 다양한 스택의 스택은 메모리뿐만 아니라로드 할 클래스입니다. 힙 메모리의 맨 위에 찍힌 PermGen 메모리가 있습니다.

당신이 다루고있는 다양한 메모리에 대한 자세한 내용은 this article을 확인하십시오.오늘날의 메모리 가격을 감안할 때,이 수준에서 애플리케이션의 메모리 소비를 최적화하는 것에 대한 걱정보다 더 많은 메모리를 사용하도록 서버를 업그레이드하는 것이 비용면에서 저렴할 수 있습니다.

+0

안녕하세요. 답변 해 주셔서 감사합니다. 250MB를 차지하는 것을 어떻게 찾을 수 있습니까? 나는 Tomcat이 약한 컨테이너이지만 250 MB의 계산되지 않은 사용량이 너무 많습니다. – arahant

+1

프로세스에 연결하기 위해 jdk와 함께 제공되는 도구 인 jconsole을 사용하십시오. 적어도 할당 된 자원에 대한 개요를 제공 할 것입니다. 바이트 단위로는 작동하지 않지만 메모리를 할당 한 대상에 대해서는 몇 가지 추가 정보를 제공합니다. 또한 Java 프로세스는 일반적으로 핫 스폿 컴파일러와 같은 기능을 제공하므로 최소 메모리 풋 프린트가 아닌 장기 실행 프로세스의 성능에 최적화되어 있습니다. 메모리를 교환하기 위해 몇 가지 jvm 기능을 비활성화 할 수도 있지만, 처음에는 더 많은 메모리를 구입하는 것이 더 저렴합니다. –

+0

PermGen 공간은 약 150MB였습니다. 반으로 줄였습니다. – arahant