java - balancing - tomcat en cluster
Problema de replicación de sesiones de Tomcat en nodos del clúster (0)
Configuración: tengo 2 servidores en mi clúster de tomcat y estoy configurado para replicar sesiones. En mis registros en ambas instancias, veo los siguientes registros con cierta frecuencia:
SEVERE: Unable to perform replication request.
java.util.ConcurrentModificationException
at java.util.ArrayList.writeObject(ArrayList.java:746)
at sun.reflect.GeneratedMethodAccessor726.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:392)
at org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRequest.java:285)
at org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaRequest.java:299)
at org.apache.catalina.ha.session.DeltaManager.serializeDeltaRequest(DeltaManager.java:621)
at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1053)
at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1018)
at org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve.java:537)
at org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(ReplicationValve.java:524)
at org.apache.catalina.ha.tcp.ReplicationValve.sendSessionReplicationMessage(ReplicationValve.java:506)
at org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage(ReplicationValve.java:419)
at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:343)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
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)
Cualquier idea / información sobre las excepciones. ¿Son inofensivos? ¿Pueden estar relacionados con una memoria en uso?
Configuración del clúster:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="4">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
<Member className="org.apache.catalina.tribes.membership.StaticMember"
port="8083"
securePort="-1"
host="IP-ADDR"
domain="XXX.com"
uniqueId=""/>
</Interceptor>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address=""
port="8083"
autoBind="100"
selectorTimeout="5000"
maxThreads="100"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir=""
deployDir=""
watchDir=""
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
Gracias por adelantado.