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