Solr JVM Tuning RAM & Memory Management

Configuration

Solr JVM Tuning RAM and Memory Management

SOLR JVM MEMORY ARCHITECTUREJVM Heap (-Xms / -Xmx)filterCachequeryResultCachedocumentCacheOff-Heap (docValues)FacetsSorting-Xms4g -Xmx4gRecommended heap size-XX:+UseG1GCModern garbage collectorMaxGCPauseMillis=200Target pause timeUse docValues="true" to move faceting/sorting off-heap — saves RAM dramatically.Keep caches small. Monitor heap > 85% for warnings. Tune GC for your workload.

Solr’s RAM appetite is legendary. Don’t worry, you’re not alone. Let’s help you keep your heap happy, your queries snappy, and your boss off your back.


Why Does Solr Use So Much Memory?

  • Search results: Returns tons of docs? RAM feast.
  • Caches: Four flavors, all with big appetites.
  • Big fields, bad configs, massive requests: Boom—there goes your heap.
  • Solr: “Give me RAM, and I shall give you… maybe some results.”

Best Practices, in Style

1. Save Bandwidth, Save RAM

Fewer bytes → less RAM.
See our bandwidth tips.


2. Limit the rows Parameter!

Don’t return all the docs unless you want Solr to host a BBQ in your memory.

&rows=100

3. Paginate Responsibly

Huge start values = huge RAM usage.
Try not to cross start=50000 unless you really like chaos.


4. docValues or Bust

Faceting, sorting, grouping, highlighting:

<field name="my_field" docValues="true" type="string" indexed="true" stored="true"/>

5. Cache, but Not Like a Hoarder

Tighten up your caches in solrconfig.xml.

<filterCache size="1" initialSize="1" autowarmCount="0"/>

Monitor cache hit ratios; <10% = wasted RAM.


6. JVM Heap: Not a Dumpster, Not a Bathtub

  • Heap size:
    For most, 4g or 8g is enough.
    -Xms4g -Xmx4g
    
  • Garbage Collector:
    Use G1GC (modern, less “stop the world”).
    -XX:+UseG1GC
    
  • GC Tuning:
    For Solr 8+:
    -XX:+UseStringDeduplication
    -XX:MaxGCPauseMillis=200
    
  • Monitor:
    If your GC logs show frequent full GCs, it’s time to optimize.
    Enable GC logging for real insight:
    -Xlog:gc*:file=/var/solr/gc.log:time,uptime,level,tags:filecount=10,filesize=10M
    

7. Watch the Heap & GC

  • In Solr Admin UI, watch for heap >85% or long GC pauses.
  • If your server pauses for coffee breaks, that’s bad news.

8. Index Analytics & Log Watching

  • Use the Opensolr Analytics panel to see who/what is eating RAM.
  • Tail your logs and spot traffic spikes—don’t wait for support to call you.

9. Drupal + Solr = PATCH NOW

Keep Search API Solr current or face the wrath of bugs.


TL;DR Pro Tips

  • Limit rows and start.
  • Use docValues for anything you facet, sort, or group.
  • Cache like you’re paying rent by the megabyte.
  • Tune JVM heap and GC for your workload, not someone else’s.
  • Watch logs, heap, and GC stats.
  • Patch integrations, always.

JVM Tuning Quick Reference

JVM Option What It Does Default/Example
-Xms / -Xmx Min/Max heap size -Xms4g -Xmx4g
-XX:+UseG1GC Use the G1 Garbage Collector Always for Java 8+
-XX:MaxGCPauseMillis=200 Target max GC pause time (ms) -XX:MaxGCPauseMillis=200
-XX:+UseStringDeduplication Remove duplicate strings in heap Java 8u20+
-Xlog:gc* GC logging See above
-XX:+HeapDumpOnOutOfMemoryError Write heap dump on OOM Always!
-XX:HeapDumpPath=/tmp/solr-heapdump.hprof Path for OOM heap dump Set to a safe disk

Meme Zone: Solr Memory Edition

Solr Heap Meme
“How many docs can I return? Solr: Yes.”


When to Call for Backup

  • Heap usage feels like the national debt
  • Solr restarts become your afternoon coffee break
  • JVM heap dumps are bigger than your backup drive

Contact Opensolr Support — bring logs, configs, and memes. We love a challenge.