docs: document Neo4j memory sizing and what the sizing presets assume - #10258
Draft
lancamat1 wants to merge 2 commits into
Draft
docs: document Neo4j memory sizing and what the sizing presets assume#10258lancamat1 wants to merge 2 commits into
lancamat1 wants to merge 2 commits into
Conversation
Heap and page cache are the largest allocations in every sizing preset, and nothing in the docs explained how they are used, that heap is reserved in full at startup, or how to size them for the host that runs the database. A reader hitting a memory problem found only Infrahub settings on the performance page. Add a Neo4j memory section covering the two pools, AlwaysPreTouch, the memory-recommendation tool, bounded transaction memory, and a symptom table. Say what the RAM figures in the sizing tables cover, and how to override the preset values per environment. Note on the upgrade known issue that the transaction memory limit should be restored afterwards. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
All reported issues were addressed across 5 files
Shadow auto-approve: would not auto-approve because issues were found.
Re-trigger cubic
`dbms.memory.transaction.total.max` defaults to 70% of the heap, not unlimited; only `db.memory.transaction.max` defaults to `0B`. Reword both places that claimed otherwise, note that an explicit total only tightens the default share, and point the upgrade note's link label at the subsection it actually lands on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
0 issues found across 2 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Shadow auto-approve: would auto-approve. Documentation-only: adds Neo4j memory-sizing guidance and a note to restore the transaction limit after migration. No product, config, auth, data, or behavior changes.
Re-trigger cubic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A customer ran every environment with Neo4j consuming all 32 GB of RAM plus swap, on databases holding under 100 MB, and asked how that was possible on a wiped instance. The configuration was
24Gheap and4Gpage cache — themediumsizing preset, which we ship in Docker Compose and Helm and publish in the install docs.The docs could not have answered the question. Nothing explained what heap and page cache hold, that Neo4j reserves the whole heap at startup so resident memory reflects the setting rather than the contents, or how to size either pool for a host.
Tune performancecovered onlyINFRAHUB_*settings, so a reader with a memory problem found nothing about the process using the memory. When we recommended smaller values, the customer pushed back by citing our own enterprise sizing table.What changed
performance-tuning.mdx— aNeo4j memorysection: the two pools and what each holds,-XX:+AlwaysPreTouchand why an oversized heap is resident on an empty database, reading the resolved values from thedebug.logstartup block, sizing withneo4j-admin server memory-recommendation, bounding transaction memory, and a symptoms-and-causes table.hardware-requirements.mdx— what the enterprise RAM figures cover, and that the database values need checking against the machine that runs Neo4j rather than assumed from the tier.install/enterprise.mdx— the preset heap and page cache values are defaults for a host of that size, how to override them per environment, and a warning to validate before deploying.upgrade/overview.mdx— thedbms.memory.transaction.total.max=0workaround now says to restore the limit afterwards, and why..vale/styles/spelling-exceptions.txt— addsLucene.Worth a reviewer's attention
mediumreserves 28 GB of 32 GB (88%) where Neo4j's own tool asks for 12G heap / 12G page cache / 8 GB reserved, and the ratio is inverted — page cache is what holds the graph.smallreserves 56% andlarge73%, somediumis the outlier. These docs explain how to override the preset; they do not defend its numbers. A separate issue againstinfrahub-helmcovers changing them, and this page will need a pass if they change.12G / 12Gexample ininstall/enterprise.mdxis scoped to a 32 GB host running only Neo4j. It sits under a table coveringsmallthroughlarge, so check the framing reads unambiguously.debug.logexcerpt is a real startup block, with nothing identifying in it.Checks
npm run build— passes, no broken links or anchorsvale— 0 errors, 0 warnings (installed locally; the invoke task skips silently when it is missing)markdownlint-cli2— 0 errors