2010. 2. 1 오후 4:43:28 org.apache.catalina.core.StandardHostValve
custom
심각: Exception Processing ErrorPage[errorCode=500, location=/error.htm]
org.springframework.web.util.NestedServletException: Handler
processing failed; nested exception is java.lang.OutOfMemoryError:
Java heap space
at org.springframework.web.servlet.DispatcherServlet.doDispatch
(DispatcherServlet.java:924)
at org.springframework.web.servlet.DispatcherServlet.doService
(DispatcherServlet.java:807)
at org.springframework.web.servlet.FrameworkServlet.processRequest
(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doGet
(FrameworkServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke
(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.processRequest
(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward
(ApplicationDispatcher.java:399)
at org.apache.catalina.core.ApplicationDispatcher.forward
(ApplicationDispatcher.java:301)
at org.apache.catalina.core.StandardHostValve.custom
(StandardHostValve.java:364)
at org.apache.catalina.core.StandardHostValve.status
(StandardHostValve.java:285)
at org.apache.catalina.core.StandardHostValve.throwable
(StandardHostValve.java:229)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
On 2월2일, 오후3시22분, 선영욱 <twinmoon2...@gmail.com> wrote:
> 안녕하세요.
>
> 다름이 아니라 Spring 2.5 + iBatis + DWR + SiteMash 의 구성으로 만든 웹 어플리케이션이 하나 있습니다.
>
> 그런데 보안심사 과정에서 스트레스 테스트 처럼 Requst를 사이트 전반적으로 요청을 하는 과정에서 웹 어플리케이션에서 out of
> memory 오류가 발생하였습니다.
>
> 2010. 1. 29 오후 1:03:21 org.apache.tomcat.util.http.Parameters
> processParameters
> 경고: Parameters: Invalid chunk ignored.
> 2010. 1. 29 오후 1:03:28 org.apache.catalina.connector.CoyoteAdapter service
> 심각: An exception or error occurred in the container during the request
> processing
> java.lang.OutOfMemoryError: Java heap space
> at java.io.BufferedReader.<init>(BufferedReader.java:80)
> at java.io.BufferedReader.<init>(BufferedReader.java:91)
> at java.io.LineNumberReader.<init>(LineNumberReader.java:52)
> at
> org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep(ThrowableInfor-mation.java:78)
> at
> org.apache.log4j.spi.LoggingEvent.getThrowableStrRep(LoggingEvent.java:407)
> at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:305)
> at
> org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppender.java:263-)
> at org.apache.log4j.WriterAppender.append(WriterAppender.java:160)
> at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
> at
> org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(Appen-derAttachableImpl.java:66)
> at org.apache.log4j.Category.callAppenders(Category.java:206)
> at org.apache.log4j.Category.forcedLog(Category.java:391)
> at org.apache.log4j.Category.log(Category.java:856)
> at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:257)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j-ava:253)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j-ava:172)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12-7)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:11-7)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav-a:108)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
> at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.process-Connection(Http11BaseProtocol.java:665)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.ja-va:528)
> at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW-orkerThread.java:81)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja-va:689)
여기 문서를 참고하십시오.
http://www.chemaxon.com/jchem/doc/admin/tomcat.html
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
메모리를 더 늘린다고 해결될 문제처럼 보이지 않습니다.
안녕하세요?
이거 공유하는 방법을 몰라서 ksug에서 찾다가 그냥 답변 메일로 글 쓰네요.
저도 같은 경험이 있어서 글 드립니다.
아래 좋은 글들도 참고 하시고요.
저 같은 경우도 같은 메모리 에러가 있었는데요.
[제 경우 환경]
WAS : Tomcat 6.0
서버 : Window 2008 Server
서버의 물리 메모리를 확인 후 적정한 메모리를 할당하시면 될 듯합니다.
실제로 할당해보니 1GB 인가 넘어서는 할당할 수 없다는 메시지를 본 듯도 한데 기억이 가물 -.-;
heap 메모리 확장 할당을 startup.bat에
CATALINA_OPTS= -XX:MaxPermSize=128m;-Xms256m;-Xmx1024m 이렇게 할당해 봤는데 적용이 안되더군요.
동일한 오류가 발생하였습니다. 확인하는 방법은 해당 메모리를 설정하지 않고 작업관리자를 띄우고 메모리 변화를 지켜보시면 알 수 있습니다.
변화가 없습니다.
그래서 찾다 보니까 톰캣의 설정화일들을 디적거리다보니 %CATALINA_OPTS% 이 문구를 여러개 발견했습니다.
이게 우리가 환경변수 설정할 때 많이 사용하는 거잖아요?
그래서 혹시나 싶어 환경변수에 아래와 같이 추가해 보고 톰캣을 재구동해보니 메모리가 올라가는 것이 확인되었고,
더이상 java.lang.OutOfMemoryError: Java heap space 에러는 발생하지 않았습니다.
환경변수명 : CATALINA_OPTS
값 : -XX:MaxPermSize=128m;-Xms256m;-Xmx1024m
값의 수치들은 조정을 요리 조리 해보시고요.
참고로 님께서는 스프링을 사용하시니 이 제 경우와 같은 실수는 없으시리라 보는데요.
한가지 제 경우의 잘못 설정한 경우가 있었는데 iBatis 의 SqlMapConfig.xml 파일(아래)에서 <dataSource type="SIMPLE"> 부분인데요.
예전에 <dataSource type="DBCP"> 로 설정했다가 ConnectionPool 이 잘 관리가 되질 않아 연결이 계속 죽은 적도 있었습니다.
혹시나 저 같은 실수를 하셨으면 참고하시라고 같이 적어봅니다.
그럼 즐거운 하루 되십시요 ^^;
--- SqlMapConfig.xml 파일의 dataSource 설정 부분 (참고자료) -----------------------
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${jdbc.driver}"/>
<property name="JDBC.ConnectionURL" value="${jdbc.url}"/>
<property name="JDBC.Username" value="${jdbc.user}"/>
<property name="JDBC.Password" value="${jdbc.password}"/>
<property name="Pool.MaximumActiveConnections" value="${pool.maxConn}"/>
<property name="JDBC.MaxIdle" value="${jdbc.maxIdle}"/>
</dataSource>
PS.근데 이거 어디서 글 쓰면 이렇게 다 공유되나요?
무식한 사용자가 첨으로 답변하나 변변히 못달면서 문의 드려봅니다.