Problem comes from that "phoenix.query.threadPoolSize" can not be set via 
connection settings. You must set this props via hbase-site.xml.
Looks like thread pool initialized before any connections inside JDBC driver.

I think that this moment must be clarified in documentation 
http://phoenix.apache.org/tuning.html <http://phoenix.apache.org/tuning.html>
 

> On 10 Oct 2018, at 18:59, Hemal Parekh <he...@bitscopic.com> wrote:
> 
> We have an analytical application running concurrent phoenix queries against 
> Hortonworks HDP 2.6 cluster. Application uses phoenix JDBC connection to run 
> queries. Often times, concurrent queries fail with 
> "java.lang.OutOfMemoryError: unable to create new native thread" error. JDBC 
> connection sets following phoenix properties. 
> 
> connectionProps.setProperty("phoenix.query.threadPoolSize", "2000")
> connectionProps.setProperty("phoenix.query.querySize", "40000")
> 
> Phoenix version is 4.7 and Hbase version is 1.1.2, The HDP cluster has six 
> regionservers on six data nodes. Concurrent queries run against different 
> phoenix tables, some are small having few million records and some are big 
> having few billions records. Most of the queries do not have joins,  where 
> clause includes conditions on rowkey and few nonkey columns. Queries with 
> joins (which are on small tables) have used USE_SORT_MERGE_JOIN hint. 
> 
> Are there other phoenix properties which need to be set on JDBC connection? 
> Are above values for phoenix.query.threadPoolSize and phoenix.query.querySize 
> enough to handle concurrent query use case? We have changed these two 
> properties couple of times to increase their values but the error still 
> remains the same.
> 
> 
> Thanks,
> 
> Hemal Parekh
> 
> 
> 

Reply via email to