使用memcached(ElastiCache)的grails应用程序在重载和大缓存文件上超时

使用memcached(ElastiCache)的grails应用程序在重载和大缓存文件上超时,grails,memcached,spymemcached,Grails,Memcached,Spymemcached,我有一个grails应用程序,它始终使用memcached存储请求和结果 在缓存中存储的结果很小(100kb)的请求上,50K请求可以正常工作,但在一种情况下,如果结果大约为800kb,则当每分钟有1K以上的请求时,应用程序会抛出异常 我在过去两天试图解决这个问题,但所有的答案都是不确定的。我开始认为问题可能出在弹性体上 对于实现,我使用AWS ElastiCache集群客户端,即SpymeCached的分支 我试图修复将客户端更改为默认spymemcached和xmemcached的问题,但错

我有一个grails应用程序,它始终使用memcached存储请求和结果

在缓存中存储的结果很小(100kb)的请求上,50K请求可以正常工作,但在一种情况下,如果结果大约为800kb,则当每分钟有1K以上的请求时,应用程序会抛出异常

我在过去两天试图解决这个问题,但所有的答案都是不确定的。我开始认为问题可能出在弹性体上

对于实现,我使用AWS ElastiCache集群客户端,即SpymeCached的分支

我试图修复将客户端更改为默认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
    }


}

如果Elasticache随着连接数的增加而停止工作,请尝试增加memcached\u connections\u开销参数。您的Elasticache实例可能内存不足,无法处理传入连接。每个实例都使用少量内存来处理每个连接,此参数的默认值通常较低。

Hi Carlos。谢谢你的帮助。我更改了ElastiCache上的配置,但错误没有停止。是否有任何问题的迹象可在日志中查找?