memcached를 사용하여 요청 결과를 항상 저장하는 grails 응용 프로그램이 있습니다.큰로드 및 큰 캐시 파일에서 memcached (ElastiCache)를 사용하여 grails 응용 프로그램의 시간 초과
요청시 캐시에 저장되는 결과가 작은 경우 (100kb) 50K 요청에는 문제가 없지만 결과가 약 800kb 인 경우 1K 분이 넘는 요청이있을 때 응용 프로그램에서 예외가 발생합니다.
지난 2 일이 문제를 해결하기 위해 노력했지만 모든 대답은 결론적이지 않습니다. 문제가 ElastiCache에있을 수 있다고 생각하기 시작합니다.
구현을 위해 spymemcached 포크 인 AWS ElastiCache 클러스터 클라이언트를 사용합니다.
클라이언트를 기본 spymemcached 및 xmemcached로 변경하려고했지만 오류가 동일합니다.
예외는 다음과 같습니다. java.util.concurrent.ExecutionException : net.spy.memcached.internal.CheckedOperationTimeoutException : 작업 시간이 초과되었습니다.
내 서비스 구현 :
import net.spy.memcached.*
import grails.converters.JSON
import org.springframework.beans.factory.InitializingBean
class MemCacheService implements InitializingBean {
String ELASTIC_CACHE_CLUSTER_IP = "teste.ptsfty.cfg.use1.cache.amazonaws.com";
def ELASTIC_CACHE_CLUSTER_PORT = 11211
def MemcachedClient client
def expireTime = 21600
def void afterPropertiesSet() {
client = new MemcachedClient(new InetSocketAddress(ELASTIC_CACHE_CLUSTER_IP, ELASTIC_CACHE_CLUSTER_PORT));
}
def getDataOnCache(key) {
try {
def result = client.get(key)
if (result) return JSON.parse(result)
else return null
} catch(Exception e) {
println e.getMessage()
return null
}
}
def saveOnCache(key, value) {
try {
def result = client.add(key, expireTime, value);
return result
} catch(Exception e) {
println e.getMessage()
return null
}
}
def removeOnCache(key) {
def result = client.delete(key);
return result
}
}
안녕하세요 Carlos. 도와 줘서 고마워. ElastiCache에서 구성을 변경했지만 오류가 멈추지 않습니다. –
로그에서 찾을 때이 문제점의 징후가 있습니까? –