我选择 Spymemcached 作为 memcached java 客户端,因为我发现它的 set 方法没有回复似乎比其他 memcached 客户端快十倍。
我的代码:
memcachedClient.set(key,0,value);
代替:
memcachedClient.set(key,0,value).get();
我确实关心时间成本比设置的结果要多得多。
现在看起来快了很多,但内存泄漏很可能发生在 memcached 客户端上。
当我使用 memcached 服务器在同一台计算机上运行 4 时,它为每个 memcached 客户端进程分配大约 2G 内存。8核cpu和4G内存几乎全部消耗。本地网络接口“lo”只有大约 0.2Gbits 每秒。
如何降低 cpu 和内存消耗率,甚至加快 memcached qps。
我需要来自 memcached 客户端的 280k qps,每个 qps 发送具有 50B 键长度和 500B 值长度的数据。现在我尝试在本地主机上启动 memcached 客户端,以避免网络接口带宽的限制。四个memcahced进程,每个运行6个线程,现在我几乎可以实现180qps,这与我的目标相差甚远,cpu和内存成为限制。而且我还需要在包含真正的 java memcached 客户端的同一台计算机上运行storm。所以我当然不能让 memcached 客户端占用核心资源。
如何减少cpu和内存消耗,或者如何实现单台计算机上的多个java memcached客户端与分布式memcached服务器之间的280qps。
获取和设置都占用了一半的查询。也许我可以尝试 getMulti 每次获取 50 个键。但问题仍然存在。
期待您的回复。谢谢!