ERROR 내용 - 톰캣 세션 클러스터링 중 ERROR 발생
11월 09, 2016 9:32:22 오전 org.apache.catalina.ha.session.DeltaManager messageReceived
심각: Manager []: Unable to receive message through TCP channel
java.lang.IllegalStateException: removeAttribute: Session already invalidated
at org.apache.catalina.ha.session.DeltaSession.removeAttribute(DeltaSession.java:656)
at org.apache.catalina.ha.session.DeltaRequest.execute(DeltaRequest.java:182)
at org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1221)
at org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.java:1167)
at org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager.java:918)
at org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:91)
at org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:938)
at org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:919)
at org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:283)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:84)
at org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:117)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:84)
at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:84)
at org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:275)
at org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:292)
at org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:210)
at org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:99)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
원인
Tomcat conf/server.xml에
channelSendOptions 이라는 설정값이 있는데, 값이 8이면 노드가 비동기적으로 전송된다.
비동기적으로 전송 된 값은 때때로 메시지 도착 순서가 달라진다. 이로인해 이미 무효(삭제)된 세션에 정보를 갱신하려고 할때 위와 같은 에러가 나타나게 된다.
이럴경우 channelSendOptions의 값을 6으로 변경하면 순서를 보장하는 동기적인 방법은 통신하게 된다.
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
참조 : https://tomcat.apache.org/tomcat-6.0-doc/config/cluster.html#Attributes
by. 조조나리
'[프로그래밍] > Apache & Tomcat' 카테고리의 다른 글
apr 컴파일 설치시 에러 - no acceptable C compiler found in $PATH (0) | 2017.01.08 |
---|---|
Centos 7 방화벽 문제 - 아파치 로드밸런싱 & 톰캣 클러스터링 (0) | 2016.11.15 |
Tomcat, IOException while loading persisted sessions, java.io.WriteAbortedException (0) | 2016.10.21 |
댓글