Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-4083

TabletServerResourceManager doesn't sanity check memory settings if native maps are being used

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.6.4
    • Fix Version/s: 1.6.5, 1.7.1, 1.8.0
    • Component/s: tserver
    • Labels:
      None

      Description

      Noticed that the TServer tries to fail fast if caches and memory maps are configured to use more memory than the JVM has given to it via -Xmx. However, if native maps are being used, this check fails. I recently had OOMEs kill TServers because their data block cache was 16gb and the max heap was 16gb.

      Here's the check:

      TabletServerResourceManager.java
          Runtime runtime = Runtime.getRuntime();
          if (!usingNativeMap && maxMemory + dCacheSize + iCacheSize > runtime.maxMemory()) {
            throw new IllegalArgumentException(String.format(
                "Maximum tablet server map memory %,d and block cache sizes %,d is too large for this JVM configuration %,d", maxMemory, dCacheSize + iCacheSize,
                runtime.maxMemory()));
          }
      

      I think the check should still happen for index and data caches if native maps are being used.

        Attachments

          Activity

            People

            • Assignee:
              elserj Josh Elser
              Reporter:
              bills William Slacum
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

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