[
https://issues.apache.org/jira/browse/SOLR-10506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15996574#comment-15996574
]
ASF GitHub Bot commented on SOLR-10506:
---------------------------------------
GitHub user tboeghk opened a pull request:
https://github.com/apache/lucene-solr/pull/197
[SOLR-10506] Fixes a memory leak in zk schema watching
Upon manual Solr Collection reloading, references to the closed SolrCore
are not fully removed by the garbage collector as a strong reference to the
ZkIndexSchemaReader is held in a ZooKeeper Watcher that watches for schema
changes.
In our case, this leads to a massive memory leak as managed resources are
still referenced by the closed SolrCore. Our Solr cloud environment utilizes
rather large managed resources (synonyms, stopwords). To reproduce, we fired
out environment up and reloaded the collection 13 times. As a result we fully
exhausted our heap. A closer look with the Yourkit profiler revealed 13
SolrCore instances, still holding strong references to the garbage collection
root.
Each SolrCore instance holds a single path with strong references to the gc
root via a Watcher in ZkIndexSchemaReader. The ZkIndexSchemaReader registers a
close hook in the SolrCore but the Zookeeper is not removed upon core close.
We supplied this Github Pull Request that extracts the zookeeper Watcher as
a static inner class. To eliminate the memory leak, the schema reader is held
inside a WeakReference and the reference is explicitly removed on core close.
Initially I wanted to supply a test case but unfortunately did not find a
good starting point ...
N.B.: I did this second PR for the same issue to separate code changes for
both SOLR-10506 and SOLR-10550 which I maintained on the same fork branch :-/
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/shopping24/lucene-solr branch_6_5__SOLR-10506
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/lucene-solr/pull/197.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #197
----
commit aa3a96cd88d1724f3ab641f25c5373ff58f4616d
Author: Torsten Bøgh Köster <[email protected]>
Date: 2017-04-18T09:43:52Z
Fixes a memory leak in zk schema watching
----
> Possible memory leak upon collection reload
> -------------------------------------------
>
> Key: SOLR-10506
> URL: https://issues.apache.org/jira/browse/SOLR-10506
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: Server
> Affects Versions: 6.5
> Reporter: Torsten Bøgh Köster
> Attachments: solr_collection_reload_13_cores.png,
> solr_gc_path_via_zk_WatchManager.png
>
>
> Upon manual Solr Collection reloading, references to the closed {{SolrCore}}
> are not fully removed by the garbage collector as a strong reference to the
> {{ZkIndexSchemaReader}} is held in a ZooKeeper {{Watcher}} that watches for
> schema changes.
> In our case, this leads to a massive memory leak as managed resources are
> still referenced by the closed {{SolrCore}}. Our Solr cloud environment
> utilizes rather large managed resources (synonyms, stopwords). To reproduce,
> we fired out environment up and reloaded the collection 13 times. As a result
> we fully exhausted our heap. A closer look with the Yourkit profiler revealed
> 13 {{SolrCore}} instances, still holding strong references to the garbage
> collection root (see screenshot 1).
> Each {{SolrCore}} instance holds a single path with strong references to the
> gc root via a `Watcher` in `ZkIndexSchemaReader` (see screenshot 2). The
> {{ZkIndexSchemaReader}} registers a close hook in the {{SolrCore}} but the
> Zookeeper is not removed upon core close.
> We supplied a Github Pull Request
> (https://github.com/apache/lucene-solr/pull/190) that extracts the zookeeper
> `Watcher` as a static inner class. To eliminate the memory leak, the schema
> reader is held inside a `WeakReference` and the reference is explicitly
> removed on core close.
> Initially I wanted to supply a test case but unfortunately did not find a
> good starting point ...
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]