概述
本文针对一个实际的项目中影响 Phoenix并发量2个因素进行介绍,希望能对大家有所帮助。
背景
刚上线时phoenix并发量和响应时间一直不理想,表现出两个问题,一是极其简单的点查(where in条件、走索引)单客户端并发量只有几十,二是多个客户端同时压测时tps反而会下降。尝试调了诸如threadPoolSize 等参数都没有明显提升。
踩坑CURRENT_TIME
多客户端同时压测,tps相比单客户端压测反而更低,因此推断服务端存在瓶颈。修改源码打印日志后发现,所有使用current_time()这个函数的SQL都很慢,于是推测此函数会去服务端获取时间, 使得服务端资源竞争,从而导致了多客户端并发tps反而下降的问题。最终在包裹SQL的java程序中用常量代替了函数,解决了此问题。
撒盐带来了性能下降