[ 
https://issues.apache.org/jira/browse/PHOENIX-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

James Taylor resolved PHOENIX-1521.
-----------------------------------
    Resolution: Not a Problem

It's entirely possible that the CPU on the region server would go to 100%.

> cpu 100% when using local secondary index.
> ------------------------------------------
>
>                 Key: PHOENIX-1521
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1521
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.2
>         Environment: hadoop2.5.1
> hbase-0.98.7-hadoop2
> phoenix-4.2.1
> --------------------------------------------
> 8 Servers(cpu : 24 processors, RAM:64G)
> 16 regionservers (each server 2 regionservers)
>            Reporter: wuchengzhi
>            Assignee: rajeshbabu
>
> I run upsert test with 96 threads(each client 12 threads) to run upsert sql 
> together, each 2,000,000 rows, and 10000 rows batch.
> ThreadPoolExecutor executor = new ThreadPoolExecutor(16, 16, 30, 
> TimeUnit.SECONDS, new ArrayBlockingQueue(50));
> executor.submit(new Callable<Long>() {
>       public Long call() throws Exception {
>               Connection conn = null;
>               //....
>               for(int j = 0; j < 2000000; j ++ ) {
>                       if (j > 0 && j % (10000) == 0) {
>                               stmt.executeBatch();
>                               conn.commit();
>                       }
>               }
>       }
> });
> DDL:
> create table TEST_USER (id varchar primary key , attr1 varchar, attr2 
> varchar,attr3 varchar,attr4 varchar,attr5 varchar,attr6 integer,attr7 
> integer,attr8 integer,attr9 integer,attr10 integer )  
> DATA_BLOCK_ENCODING='FAST_DIFF',VERSIONS=1,BLOOMFILTER='ROW',COMPRESSION='LZ4',BLOCKSIZE
>  = '65536',SALT_BUCKETS=16;
> without the index, there are 350,000 rows per seconds putting in the 
> hbase,and the cpu ,memery is very low.
> the i recreate the table and create one index as :
> create local index TEST_USER_INDEX on 
> TEST_USER(attr1,attr2,attr3,attr4,attr5,attr6,attr7,attr8,attr9,attr10);
> using the same client code to send request.
> but i got only 85,000 rows per seconds, and the cpu is high load almost 100% 
> in each server.
> i get the jstack info when running.
> "$MY_SERVER_DNS,60021,1417746400312-index-writer--pool3-t311" daemon prio=10 
> tid=0x000000000212a800 nid=0x11887 runnable [0x00007f895f081000]
>    java.lang.Thread.State: RUNNABLE
>         at 
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$30.call(RegionCoprocessorHost.java:792)
>         at 
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1522)
>         at 
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1597)
>         at 
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1554)
>         at 
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.prePut(RegionCoprocessorHost.java:788)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.doPreMutationHook(HRegion.java:2284)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2259)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2215)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2219)
>         at 
> org.apache.phoenix.hbase.index.write.ParallelWriterIndexCommitter$1.call(ParallelWriterIndexCommitter.java:156)
>         at 
> org.apache.phoenix.hbase.index.write.ParallelWriterIndexCommitter$1.call(ParallelWriterIndexCommitter.java:128)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:724)
>               
> "$MY_SERVER_DNS,60021,1417746400312-index-builder--pool2-t319" daemon prio=10 
> tid=0x00007f8960273800 nid=0x11847 runnable [0x00007f895e964000]
>    java.lang.Thread.State: RUNNABLE
>         at org.apache.hadoop.hbase.KeyValue.<init>(KeyValue.java:640)
>         at org.apache.hadoop.hbase.KeyValue.<init>(KeyValue.java:568)
>         at org.apache.hadoop.hbase.KeyValue.<init>(KeyValue.java:471)
>         at org.apache.hadoop.hbase.KeyValue.<init>(KeyValue.java:405)
>         at 
> org.apache.hadoop.hbase.KeyValue.createFirstOnRow(KeyValue.java:2515)
>         at 
> org.apache.hadoop.hbase.KeyValue.createFirstOnRow(KeyValue.java:2490)
>         at 
> org.apache.hadoop.hbase.regionserver.StoreFile$Reader.passesKeyRangeFilter(StoreFile.java:1335)
>         at 
> org.apache.hadoop.hbase.regionserver.StoreFileScanner.shouldUseScanner(StoreFileScanner.java:403)
>         at 
> org.apache.hadoop.hbase.regionserver.StoreScanner.selectScannersFrom(StoreScanner.java:363)
>         at 
> org.apache.hadoop.hbase.regionserver.StoreScanner.getScannersNoCompaction(StoreScanner.java:291)
>         at 
> org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:170)
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.getScanner(HStore.java:1816)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.<init>(HRegion.java:3856)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.instantiateRegionScanner(HRegion.java:1951)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1937)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1914)
>         at 
> org.apache.phoenix.hbase.index.covered.data.LocalTable.getCurrentRowState(LocalTable.java:62)
>         at 
> org.apache.phoenix.hbase.index.covered.LocalTableState.ensureLocalStateInitialized(LocalTableState.java:158)
>         - locked <0x00000002c1c4bae8> (a 
> org.apache.phoenix.hbase.index.covered.LocalTableState)
>         at 
> org.apache.phoenix.hbase.index.covered.LocalTableState.getIndexedColumnsTableState(LocalTableState.java:125)
>         at 
> org.apache.phoenix.index.PhoenixIndexCodec.getIndexUpdates(PhoenixIndexCodec.java:160)
>         at 
> org.apache.phoenix.index.PhoenixIndexCodec.getIndexDeletes(PhoenixIndexCodec.java:119)
>         at 
> org.apache.phoenix.hbase.index.covered.CoveredColumnsIndexBuilder.addDeleteUpdatesToMap(CoveredColumnsIndexBuilder.java:403)
>         at 
> org.apache.phoenix.hbase.index.covered.CoveredColumnsIndexBuilder.addCleanupForCurrentBatch(CoveredColumnsIndexBuilder.java:287)
>         at 
> org.apache.phoenix.hbase.index.covered.CoveredColumnsIndexBuilder.addMutationsForBatch(CoveredColumnsIndexBuilder.java:239)
>         at 
> org.apache.phoenix.hbase.index.covered.CoveredColumnsIndexBuilder.batchMutationAndAddUpdates(CoveredColumnsIndexBuilder.java:136)
>         at 
> org.apache.phoenix.hbase.index.covered.CoveredColumnsIndexBuilder.getIndexUpdate(CoveredColumnsIndexBuilder.java:99)
>         at 
> org.apache.phoenix.hbase.index.builder.IndexBuildManager$1.call(IndexBuildManager.java:133)
>         at 
> org.apache.phoenix.hbase.index.builder.IndexBuildManager$1.call(IndexBuildManager.java:129)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:724)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to