我正在使用enyim为多线程队列读取器提供对membase服务器的访问。这些读者访问AQMP队列,检查缓存以查看该项是否已被处理,如果没有,则将其插入数据库和缓存中。问题是访问缓存会占用CPU。有4个线程处理消息,CPU为80-90%。我已经实现了一个自定义序列化器,它将字节提供给enyim。如果我切换到我的内存后退,我可以在CPU使用率变高之前上升到9个线程。与内存中缓存和membase缓存的唯一区别是字节存储在内存而不是缓存中。知道我可能在eynim上做错了什么可能导致这种高CPU使用率或者是正常的吗?在max,客户端根据membase控制台执行大约2.5k ops / s。
答案 0 :(得分:0)
每次要访问缓存时,一个已知的瓶颈就是创建一个新的MembaseClient。建议是创建一个MembaseClient实例并传递相同的实例。请查看此链接以获取相关详细信息:
https://github.com/enyim/EnyimMemcached/wiki/MembaseClient-Usage