Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Neil Gaietto 13 posts 72 karma points c-trib
    Jul 08, 2020 @ 15:32
    Neil Gaietto
    0

    Issues with Multiple IIS Worker processes running Umbraco.

    We have a pretty large umbraco 7.15.3 site. Its currently load-balanced, but we wanted to get a little more use out of each machine by giving it multi worker processes. This would essentially let IIS run multiple instances of the site on each server.

    We've hit a couple issues trying to use multi processes, so I wanted to see if anyone was successful with this setup.

    One of the core issues is that umbraco identifies itself by machine name, instead of process id.

    This leads into the first issue was that content cache was not getting updated between processes. Lets say there were 3 processes on the box. If admin pushed a change, then only 1 of those processes was pulling in the update.

    I believe I fixed this issue by setting: <XmlContentCheckForDiskChanges>True</XmlContentCheckForDiskChanges> My theory was that the since update instructions are based on machine name, then the first process to receive the update would clear that content change from the queue. Thus leaving the other processes to not get notified of a change. Luckily the other processes can watch the cache file for other processes to change it. This fix is not in production yet, but staging testing seemed to be fine.

    The second issue, that I havent been able to solve is with lucene. I think there is a conflict with multiple processes using the indexes. I tried adding {appdomainappid} to our index paths to try and separate indexes for each process, but that didnt help.

    The error im randomly receiving with lucene is the following error: Exception Details: Lucene.Net.Store.AlreadyClosedException: this IndexReader is closed

    I am thinking that one of the processes is keeping the others from opening the index, but I havent been able to narrow it down.

    Here is the useful bit from the stack track: [AlreadyClosedException: this IndexReader is closed] Lucene.Net.Index.IndexReader.EnsureOpen() +74 Lucene.Net.Index.DirectoryReader.GetFieldNames(FieldOption fieldNames) +20 Examine.LuceneEngine.Providers.LuceneSearcher.GetSearchFields() +98 UmbracoExamine.UmbracoExamineSearcher.GetSearchFields() +12 Examine.LuceneEngine.Providers.BaseLuceneSearcher.CreateSearchCriteria(String type, BooleanOperation defaultOperation) +38 UmbracoExamine.UmbracoExamineSearcher.CreateSearchCriteria(String type, BooleanOperation defaultOperation) +10

Please Sign in or register to post replies

Write your reply to:

Draft