I have an Umbraco 7.3.4 site with a large number of nodes (20,000+).
The website takes forever to load and most of the time won't; the server RAM peaks around 3 GB, maxes out the CPU, and most of the time returns an error of: Failed to enter the lock within timeout.
Here are some items of interest in the log file:
_shutDownMessage=IIS configuration change
HostingEnvironment initiated shutdown
HostingEnvironment caused shutdown
_shutDownStack= at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
at System.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand()
at System.Web.Hosting.PipelineRuntime.StopProcessing()
-
2016-05-16 10:52:23,223 [P4604/D12/T23] WARN Umbraco.Core.Sync.DatabaseServerMessenger - No last synced Id found, this generally means this is a new server/install. The server will rebuild its caches and indexes and then adjust it's last synced id to the latest found in the database and will start maintaining cache updates based on that id
-
2016-05-16 10:52:23,237 [P4604/D12/T23] WARN umbraco.content - Failed to load Xml, file does not exist.
-
2016-05-16 10:52:42,374 [P4604/D12/T8] INFO umbraco.content - Save Xml to file...
2016-05-16 10:52:45,666 [P4604/D12/T8] ERROR umbraco.content - Failed to save Xml to file.
-
2016-05-16 10:52:45,666 [P4604/D12/T8] ERROR umbraco.content - Failed to save Xml to file.
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Text.Encoding.GetBytes(String s)
at umbraco.content.<SaveXmlToFileAsync>d__b.MoveNext()
2016-05-16 10:53:00,501 [P4604/D12/T14] INFO umbraco.content - Save Xml to file...
2016-05-16 10:53:04,476 [P4604/D12/T14] ERROR umbraco.content - Failed to save Xml to file.
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Text.Encoding.GetBytes(String s)
at umbraco.content.<SaveXmlToFileAsync>d__b.MoveNext()
-
2016-05-16 10:53:23,184 [P4604/D11/T24] ERROR UmbracoExamine.DataServices.UmbracoLogService - Provider=ExternalIndexer, NodeId=-1
System.Exception: Error indexing queue items,Lucene.Net.Store.AlreadyClosedException: this IndexWriter is closed
at Lucene.Net.Index.IndexWriter.EnsureOpen(Boolean includePendingClose)
at Lucene.Net.Index.IndexWriter.EnsureOpen()
at Lucene.Net.Index.IndexWriter.UpdateDocument(Term term, Document doc)
at Examine.LuceneEngine.Providers.LuceneIndexer.AddDocument(Dictionary`2 fields, IndexWriter writer, Int32 nodeId, String type) in x:\Projects\Examine\Examine\Projects\Examine\LuceneEngine\Providers\LuceneIndexer.cs:line 1322
at Examine.LuceneEngine.Providers.LuceneIndexer.ProcessIndexQueueItem(IndexOperation op, IndexWriter writer) in x:\Projects\Examine\Examine\Projects\Examine\LuceneEngine\Providers\LuceneIndexer.cs:line 1802
at Examine.LuceneEngine.Providers.LuceneIndexer.ProcessQueueItem(IndexOperation item, ICollection`1 indexedNodes, IndexWriter writer) in x:\Projects\Examine\Examine\Projects\Examine\LuceneEngine\Providers\LuceneIndexer.cs:line 1580
at Examine.LuceneEngine.Providers.LuceneIndexer.ForceProcessQueueItems(Boolean block) in x:\Projects\Examine\Examine\Projects\Examine\LuceneEngine\Providers\LuceneIndexer.cs:line 1539, IndexSet: ExternalIndexSet
2016-05-16 10:53:23,185 [P4604/D11/T24] ERROR UmbracoExamine.DataServices.UmbracoLogService - Provider=ExternalIndexer, NodeId=-1
System.Exception: Error indexing queue items,Lucene.Net.Store.AlreadyClosedException: this IndexWriter is closed
at Lucene.Net.Index.IndexWriter.EnsureOpen(Boolean includePendingClose)
at Lucene.Net.Index.IndexWriter.EnsureOpen()
at Lucene.Net.Index.IndexWriter.Commit(IDictionary`2 commitUserData)
Is Umbraco not able to handle such a large amount of nodes without throwing a done of server resources at it?
It looks like Umbraco hasn't access to 'AppData' folder.
Can you check that there are /AppData/umbraco.config is working fine and Umbraco can write data?
Umbraco does have access to the folder and is able to generate the umbraco.config file AFTER I increase the server's resources by a multiple of 3. The price of the server with these increased resources is not something we can afford. I was hoping for ways to optimize Umbraco so it runs in a less than ideal server environment.
I do understand why the umbraco.config file exists. To decrease the calls to the database which can be costly. But if app pool recycle or update to the DLLs causes the umbraco.config to be re-created and can't because of the server resources, this is a problem.
By switching the XmlCacheEnabled to 'false' will it always go to the database when a node is loaded on the front-end?
Also, it doesn't help when Umbraco says:
XmlCacheEnabled: Turn Xml caching of content on/off. Umbraco Makes heavy use of caching content in memory to avoid database calls. This makes umbraco faster and more efficient. You should not in any way turn this off, unless you have a very good reason to do so. It will make your website very slow.
I'm not sure cache would help because the problem is Umbraco generating the umbraco.config file in the first place.
Try to set ContinouslyUpdateXmlDiskCache to false for preventing updating the cache during changing pages.
As I understand problem with generating umbraco.config
I suggested to you - don't use umbraco.config, if site is slow without using umbraco.config - try to rewrite some logic and add serverside cache at views or at controllers level.
Site Won't Load With Large Amount of Nodes
I have an Umbraco 7.3.4 site with a large number of nodes (20,000+).
The website takes forever to load and most of the time won't; the server RAM peaks around 3 GB, maxes out the CPU, and most of the time returns an error of: Failed to enter the lock within timeout.
Here are some items of interest in the log file:
-
-
-
-
-
Is Umbraco not able to handle such a large amount of nodes without throwing a done of server resources at it?
Hi Ron,
It looks like Umbraco hasn't access to 'AppData' folder. Can you check that there are /AppData/umbraco.config is working fine and Umbraco can write data?
Thanks, Alex
Umbraco does have access to the folder and is able to generate the umbraco.config file AFTER I increase the server's resources by a multiple of 3. The price of the server with these increased resources is not something we can afford. I was hoping for ways to optimize Umbraco so it runs in a less than ideal server environment.
I do understand why the umbraco.config file exists. To decrease the calls to the database which can be costly. But if app pool recycle or update to the DLLs causes the umbraco.config to be re-created and can't because of the server resources, this is a problem.
Hi Ron,
You can disable using of Umbraco.config, try to set 'XmlCacheEnabled' key to false.
Another great performance booster is using of Serve cache, Html.CachedPartial or Output cache.
What Umbraco version are you using?
Thanks
Umbraco 7.3.4
By switching the XmlCacheEnabled to 'false' will it always go to the database when a node is loaded on the front-end?
Also, it doesn't help when Umbraco says:
I'm not sure cache would help because the problem is Umbraco generating the umbraco.config file in the first place.
Hi Ron,
Sorry for late response.
Try to set ContinouslyUpdateXmlDiskCache to false for preventing updating the cache during changing pages.
As I understand problem with generating umbraco.config
I suggested to you - don't use umbraco.config, if site is slow without using umbraco.config - try to rewrite some logic and add serverside cache at views or at controllers level.
Cheers,
Oleksandr Skrypnyk
Hi Ron,
Did you solve the issue?
Hi Ron,
I would also be very interested in finding out how you got on.
I would be as happy getting the data from the database as from the umbraco.config file.
Thanks, Muiris
is working on a reply...