我使用enyim为多线程队列读取器提供对membase服务器的访问。这些读取器访问AQMP队列,检查缓存以查看项目是否已经处理,如果没有,则将其插入到数据库和缓存中。问题是访问缓存会消耗掉CPU。使用4个线程处理消息时,CPU占有率为80-90%。我已经实现了一个自定义的序列化程序,它将字节提供给enyim。如果我切换到in memory,在CPU使用率变高之前,我可以回退到9个线程。内存缓存和membase缓存的唯一区别是字节存储在内存中,而不是存储在缓存中。你知道我在eynim上做错了什么,这可能导致CPU使用率这么高,还是正常的?根据membase控制台,客户端的最大执行速度约为2.5k次/秒。
发布于 2011-06-27 12:14:09
一个已知的瓶颈是每次你想要访问缓存时创建一个新的MembaseClient。建议创建MembaseClient的一个实例,并传递相同的实例。有关详细信息,请查看此链接:
https://github.com/enyim/EnyimMemcached/wiki/MembaseClient-Usage
https://stackoverflow.com/questions/6350297
复制相似问题