java.lang.StackOverflow 오류
이 오류가 발생하는 이유와 이를 방지할 수 있는 방법은 무엇입니까?
증상
원인
com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet utils.secure_invoker in application ccd_mdmprod-appsvr. Exception created : com.ibm.websphere.servlet.error.ServletErrorReport: java.lang.StackOverflowError
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:695)
at utils.secure_invoker._jspService(Unknown Source)
at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
문제점 해결
- conf 디렉토리에서 service_mem_settings.ini 파일을 찾으십시오. 이 디렉토리는 일반적으로 $TOP/bin 디렉토리 아래 있지만 수평적 클러스터링이 있는 경우 사용자 정의 위치에 있을 수도 있습니다.
- 이 파일은 다양한 서비스에 대한 JVM 인수를 포함합니다. 예를 들어,
애플리케이션 서버 프로세스에 대해서는 다음과 같은 플래그를 포함합니다.
APPSVR_MEMORY_FLAG=-Xmx1024m -Xms256m위의 엔트리는 최대 힙 크기가 1024MB이고 기본 시작 힙 크기가 256MB인 것을 보여줍니다. 힙 크기를 증가시키기 위해 다음과 같이 다른 -Xss 인수를 추가할 수 있습니다.
APPSVR_MEMORY_FLAG=-Xmx1024m -Xms256m -Xss2048k
위의 엔트리는 스택 크기를 2MB로 설정하며 이 값이 충분하지 않으면 추가로 늘릴 수 있습니다. 이는 애플리케이션 서버만이 아니라 모든 서비스에 적용할 수 있습니다.
- $TOP/bin/go 디렉토리 아래의 스크립트를 사용하여 애플리케이션을 재시작하십시오. 참고:
- 대형 데이터 모델이 없는 한 이 문제는 드물게 일어납니다. 보통은 기본값이 충분합니다.
- 기본 스택 공간을 매우 큰 값으로 설정하면 성능 저하를 초래할 수 있습니다. 2MB부터 시작하고 필요에 따라 값을 증가시키십시오.