Solr JVM Tuning RAM and Memory Management
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,4gor8gis 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
rowsandstart. - Use
docValuesfor 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
“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.
