Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14266

RegionServers have a lock contention of Configuration.getProps

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • None
    • 1.2.0, 1.3.0, 2.0.0
    • regionserver
    • None
    • hbase-0.98.6-cdh5.3.1

    • Reviewed

    Description

      Here's an extract from thread dump of the RegionServer of my cluster:

      ...
      Thread 267 (RW.default.readRpcServer.handler=184,queue=15,port=60020):
        State: BLOCKED
        Blocked count: 204028
        Waited count: 9702639
        Blocked on org.apache.hadoop.conf.Configuration@5a5e3da
        Blocked by 250 (RW.default.readRpcServer.handler=167,queue=18,port=60020)
        Stack:
          org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2250)
          org.apache.hadoop.conf.Configuration.get(Configuration.java:861)
          org.apache.hadoop.conf.Configuration.getTrimmed(Configuration.java:880)
          org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1281)
          org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:138)
          org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:157)
          org.apache.hadoop.hbase.regionserver.HStore.createScanner(HStore.java:1804)
          org.apache.hadoop.hbase.regionserver.HStore.getScanner(HStore.java:1794)
          org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.<init>(HRegion.java:3852)
          org.apache.hadoop.hbase.regionserver.HRegion.instantiateRegionScanner(HRegion.java:1952)
          org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1938)
          org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1915)
          org.apache.hadoop.hbase.regionserver.HRegion.get(HRegion.java:4872)
          org.apache.hadoop.hbase.regionserver.HRegion.get(HRegion.java:4847)
          org.apache.hadoop.hbase.regionserver.HRegionServer.get(HRegionServer.java:2918)
          org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29921)
          org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
          org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
          org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:116)
          org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:96)
      ...
      

      There are such many threads in the thread dump.
      I think that RegionServers have a lock contention which causes performance issue.

      Attachments

        1. 14266v2.patch
          34 kB
          Michael Stack
        2. 14266v3.patch
          45 kB
          Michael Stack
        3. 14266v3.txt
          34 kB
          Michael Stack
        4. HBASE-14266.patch
          8 kB
          John Leach
        5. Screen Shot 2015-10-23 at 5.11.46 PM.png
          196 kB
          Michael Stack
        6. Screen Shot 2015-10-23 at 5.24.03 PM.png
          138 kB
          Michael Stack
        7. thread_dump.txt
          445 kB
          Toshihiro Suzuki

        Activity

          People

            apurtell Andrew Kyle Purtell
            brfrn169 Toshihiro Suzuki
            Votes:
            1 Vote for this issue
            Watchers:
            16 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 1h
                1h
                Remaining:
                Remaining Estimate - 1h
                1h
                Logged:
                Time Spent - Not Specified
                Not Specified