8

पर मेमकैच-सत्र-प्रबंधक मेरे पास अमेज़ॅन वेब सर्विसेज पर चल रही एक वेबसाइट है जिसे लोचदार बीनस्टॉक का उपयोग करके तैनात किया गया है और कम से कम 2 ईसी 2 माइक्रो इंस्टेंस पर चलता है। एक ऑटो स्केलिंग नीति जगह पर है, ताकि यह वेबसाइट में यातायात के आधार पर स्केल और स्केल कर सके। इस ऑटो स्केलिंग नीति के कारण, मैं चिपचिपा सत्रों का उपयोग करना टालना चाहता था और इसी कारण से मैं memcached-session-manager का उपयोग कर रहा हूं। मैं memcached सर्वर के लिए अमेज़ॅन ElastiCache (छोटा उदाहरण) का उपयोग कर रहा हूँ।एडब्ल्यूएस

context.xml में विन्यास इस प्रकार है:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
    memcachedNodes="sessions.myinstancecode.0001.use1.cache.amazonaws.com:11211" 
    sticky="false" 
    sessionBackupAsync="false" 
    lockingMode="none" 
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> 

यह ठीक काम करता है जब यातायात कम है (यानी कम से कम 10 उपयोगकर्ताओं को ऑनलाइन) लेकिन कभी कभी पुनः आरंभ करने के EC2 उदाहरण कारण बनता है। आप कल्पना कर सकते हैं कि यदि वेबसाइट वर्तमान में दो उदाहरणों पर चल रही है और वे दोनों एक ही समय में पुनरारंभ करने का निर्णय लेते हैं, तो वेबसाइट पहुंच योग्य नहीं होती है और यह एक बड़ी समस्या है। ये tail_catalina.log में पिछले लाइनों है कि अमेज़न S3 पर घुमाया जाता है इससे पहले कि EC2 उदाहरण पुनः आरंभ करने का फैसला करता हैं:

Jun 13, 2012 12:32:27 AM de.javakaffee.web.msm.BackupSessionTask handleException 
WARNING: Could not store session 42F9761AC24F826E1FC3F2A834FBF442 in memcached. 
Note that this session was relocated to this node because the original node was not available. 
net.spy.memcached.internal.CheckedOperationTimeoutException: Timed out waiting for operation - failing node: sessions.myinstancecode.0001.use1.cache.amazonaws.com/10.194.23.99:11211 
    at net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:73) 
    at de.javakaffee.web.msm.BackupSessionTask.storeSessionInMemcached(BackupSessionTask.java:230) 
    at de.javakaffee.web.msm.BackupSessionTask.doBackupSession(BackupSessionTask.java:195) 
    at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:120) 
    at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:51) 
    at de.javakaffee.web.msm.BackupSessionService$SynchronousExecutorService.submit(BackupSessionService.java:339) 
    at de.javakaffee.web.msm.BackupSessionService.backupSession(BackupSessionService.java:198) 
    at de.javakaffee.web.msm.MemcachedSessionService.backupSession(MemcachedSessionService.java:967) 
    at de.javakaffee.web.msm.SessionTrackerValve.backupSession(SessionTrackerValve.java:226) 
    at de.javakaffee.web.msm.SessionTrackerValve.invoke(SessionTrackerValve.java:128) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:680) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:636) 
Jun 13, 2012 12:32:28 AM de.javakaffee.web.msm.LockingStrategy onAfterBackupSession 
WARNING: An error occurred during onAfterBackupSession. 
net.spy.memcached.internal.CheckedOperationTimeoutException: Timed out waiting for operation - failing node: sessions.myinstancecode.0001.use1.cache.amazonaws.com/10.194.23.99:11211 
    at net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:73) 
    at de.javakaffee.web.msm.LockingStrategy.onAfterBackupSession(LockingStrategy.java:287) 
    at de.javakaffee.web.msm.MemcachedSessionService.backupSession(MemcachedSessionService.java:970) 
    at de.javakaffee.web.msm.SessionTrackerValve.backupSession(SessionTrackerValve.java:226) 
    at de.javakaffee.web.msm.SessionTrackerValve.invoke(SessionTrackerValve.java:128) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:680) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:636) 

यह अमेज़न ElastiCache नोड की तरह लगता है विफल हो रहा है, लेकिन बात यह है कि है, अमेज़न पर जाँच क्लाउडवॉच, मैं देख सकता हूं कि सीपीयू उपयोग 8% से अधिक नहीं हुआ। क्या अमेज़ॅन एलिस्टी कैश नोड विफल होने का कोई कारण है, भले ही इसे इतना तनाव नहीं दिया जा रहा है? अमेज़ॅन ElastiChace नोड विफल होने पर अमेज़ॅन फिर से शुरू करने का फैसला क्यों करता है (या बेहतर: समाप्त करें और एक नया उदाहरण शुरू करें)?

किसी भी मदद की बहुत सराहना की।

धन्यवाद!

उत्तर

7

आप documentation से, memcached सत्र प्रबंधक की sessionBackupTimeout वृद्धि करनी चाहिए: (वैकल्पिक डिफ़ॉल्ट 100)

sessionBackupTimeout

कि एक सत्र बैकअप के बाद मिलीसेकेंड में समय समाप्ति के रूप में माना जाता है मधुमक्खी विफल इस संपत्ति का मूल्यांकन केवल तभी किया जाता है जब सत्र सिंक्रनाइज़ रूप से संग्रहीत (सत्र बैकअपएसिंक के माध्यम से सेट करें)। डिफ़ॉल्ट मान 100 मिलीसेकंड है।

संबंधित मुद्दे