群集节点上的Tomcat会话复制问题

时间:2015-12-07 06:23:11

标签: java tomcat jmeter tomcat7

配置: 我的tomcat集群上有2台服务器,并配置为复制会话。在我对两个实例的日志中,我经常看到以下日志:

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)

有关例外的任何想法/信息。它们无害吗?它们可以与使用中的内存相关吗?

群集配置:

  <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>

提前致谢。

0 个答案:

没有答案