tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mohamedin" <mohame...@easy-dialog.info>
Subject Session Replication problems
Date Mon, 27 Apr 2009 10:14:55 GMT
Dear All,

I use these configuration to enable session replication:


Master server:

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="master">
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false"
notifyListenersOnReplication="true" domainReplication="true" />
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership className="org.apache.catalina.tribes.membership.McastService"
port="5000"/>
                        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"
/>
                        </Sender>
                        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                        address="111.111.111.111" port="6000" autoBind="100" selectorTimeout="5000"
                        maxThreads="6" />
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.222" domain="111.111.111.222"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.223" domain="111.111.111.223"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.224" domain="111.111.111.224"
/>
                        </Interceptor>
                </Channel>
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""
/>
                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"
/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"
/>
        </Cluster>


===========
S2 server:
===========
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s2">

        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false"
notifyListenersOnReplication="true" domainReplication="true" />
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership className="org.apache.catalina.tribes.membership.McastService"
port="5000"/>
                        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"
/>
                        </Sender>
                        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                        address="111.111.111.223" port="6000" autoBind="100" selectorTimeout="5000"
                        maxThreads="6" />
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.111" domain="111.111.111.111"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.222" domain="111.111.111.222"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.224" domain="111.111.111.224"
/>
                        </Interceptor>
                </Channel>
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""
/>
                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"
/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"
/>
        </Cluster>


==============
S3 server:
==============

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s3">

        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false"
notifyListenersOnReplication="true" domainReplication="true" />
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership className="org.apache.catalina.tribes.membership.McastService"
port="5000"/>
                        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"
/>
                        </Sender>
                        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                        address="111.111.111.224" port="6000" autoBind="100" selectorTimeout="5000"
                        maxThreads="6" />
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.111" domain="111.111.111.111"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.222" domain="111.111.111.222"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.223" domain="111.111.111.223"
/>
                        </Interceptor>
                </Channel>
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""
/>
                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"
/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"
/>
        </Cluster>

================
S1 server:
================

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false"
notifyListenersOnReplication="true" domainReplication="true" />
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership className="org.apache.catalina.tribes.membership.McastService"
port="5000"/>
                        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"
/>
                        </Sender>
                        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                        address="111.111.111.222" port="6000" autoBind="100" selectorTimeout="5000"
                        maxThreads="6" />
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"
/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.111" domain="111.111.111.111"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.223" domain="111.111.111.223"
/>
                                <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="6000" securePort="-1" host="111.111.111.224" domain="111.111.111.224"
/>
                        </Interceptor>
                </Channel>
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""
/>
                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"
/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"
/>
        </Cluster>

=============================

My problem is the Master server (First One) did not replicate the sessions well. Also sometimes
it refuse to stop and thread dump show it is in session replication

Some threads like this:

"TP-Processor15" daemon prio=1 tid=0x00002aaaab039e80 nid=0x7014 waiting on condition [0x00000000472c2000..0x00000000472c3e40]
        at sun.misc.Unsafe.park(Native Method)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:716)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:746)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1076)
        at java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync.wlock(ReentrantReadWriteLock.java:342)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:637)
        at org.apache.catalina.ha.session.DeltaSession.lock(DeltaSession.java:184)
        at org.apache.catalina.ha.session.DeltaSession.setAttribute(DeltaSession.java:517)
        at org.apache.catalina.ha.session.DeltaSession.setAttribute(DeltaSession.java:502)
        at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:130)
        at com.lutris.appserver.server.sessionContainerAdapter.ContainerAdapterSession.setHttpSession(ContainerAdapterSession.java:230)
        at com.lutris.appserver.server.sessionContainerAdapter.ContainerAdapterSessionManager.getSession(ContainerAdapterSessionManager.java:311)
        at com.lutris.appserver.server.sessionContainerAdapter.ContainerAdapterSessionManager.getSession(ContainerAdapterSessionManager.java:342)
        at com.lutris.appserver.server.sessionContainerAdapter.TomcatContainerAdapterSessionManager.getSession(TomcatContainerAdapterSessionManager.java:273)
        at com.lutris.appserver.server.StandardAppUtil.getRequestSession(StandardAppUtil.java:323)
        at com.lutris.appserver.server.StandardApplication.ensureSession(StandardApplication.java:718)
        at com.lutris.appserver.server.StandardApplication.requestPreprocessor(StandardApplication.java:900)
        at com.ours.WebApp.requestPreprocessor(WebApp.java:83)
        at com.lutris.appserver.server.httpPresentation.HttpPresentationManager.runRequestPreprocessor(HttpPresentationManager.java:400)
        at com.lutris.appserver.server.httpPresentation.HttpPresentationManager.Run(HttpPresentationManager.java:247)
        at com.lutris.appserver.server.httpPresentation.servlet.HttpPresentationServlet.serviceDirect(HttpPresentationServlet.java:682)
        at com.lutris.appserver.server.httpPresentation.servlet.HttpPresentationServlet.service(HttpPresentationServlet.java:807)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:595)

Note: The Master server is not in the same network (LAN) with other 3 servers

Regards,
Mohamedin
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message