OutOfMemoryException when transferring multiple nodes
Running Umbraco 4.6.1 - I'm getting OutOfMemory exceptions when transferring multiple nodes (10-15 with images) via Courier to our staging site.
Has anyone come across a similar problem, and/or has a simple workaround? I'm hoping the answer isn't going to be to upgrade to 4.7 - but if that's the solution, so be it :)
Exception of type 'System.OutOfMemoryException' was thrown. Error details
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at System.Net.ScatterGatherBuffers.AllocateMemoryChunk(Int32 newSize) at System.Net.ScatterGatherBuffers.Write(Byte[] buffer, Int32 offset, Int32 count) at System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state) at System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) at System.IO.StreamWriter.Write(Char[] buffer, Int32 index, Int32 count) at System.Xml.XmlTextEncoder.WriteRaw(Char[] array, Int32 offset, Int32 count) at System.Xml.XmlTextWriterBase64Encoder.WriteChars(Char[] chars, Int32 index, Int32 count) at System.Xml.Base64Encoder.Encode(Byte[] buffer, Int32 index, Int32 count) at System.Xml.XmlTextWriter.WriteBase64(Byte[] buffer, Int32 index, Int32 count) at System.Xml.Serialization.XmlSerializationWriter.WriteElementStringRaw(String localName, String ns, Byte[] value, XmlQualifiedName xsiType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterRepositoryWebservice.Write7_Resource(String n, String ns, Resource o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterRepositoryWebservice.Write12_ResourceTransfer(String n, String ns, ResourceTransfer o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterRepositoryWebservice.Write42_TransferResources(Object[] p) at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer47.Serialize(Object objectToSerialize, XmlSerializationWriter writer) at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) at System.Web.Services.Protocols.SoapHttpClientProtocol.Serialize(SoapClientMessage message) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Umbraco.Courier.RepositoryProviders.WebServiceProvider.RepositoryWebservice.TransferResources(ResourceTransfer[] resources, String user, String pass) in d:\TeamCity6\buildAgent\work\399aef48762b5884\Umbraco.Courier.RepositoryProviders\WebserviceProvider\webservice.cs:line 1094 at Umbraco.Courier.RepositoryProviders.CourierWebserviceRepositoryProvider.TransferResources(ResourceTransfer[] resources) in d:\TeamCity6\buildAgent\work\399aef48762b5884\Umbraco.Courier.RepositoryProviders\WebserviceProvider\CourierWebserviceRepositoryProvider.cs:line 286 at Umbraco.Courier.Core.ExtractionManager.ExtractItemResources(Item item, ResourceExtractionOrder order) at Umbraco.Courier.Core.ExtractionManager.ExtractResources(ResourceExtractionOrder order) at Umbraco.Courier.UI.Dialogs.CommitItem.TransferAndExtractOnSelectedRepo(String repo) at Umbraco.Courier.UI.Dialogs.CommitItem.oneSteptransfer(Object sender, EventArgs e) at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
What are you trying to transfer? Courier will serialize all your stuff in memory so it can take some resources, but it shouldn't ever require so much memory that you would run out, (one of my largest test revisions is about 8mb)
Each of those nodes do have some reasonably large source images associated with them (5-10mb)
I'm using version 2.1, and (probably rather foolishly) running the local dev site under IIS Express, which may well be the problem. Restarting the IIS Express process has made the problem go away, so most likely running into some memory limits there..
I'll try the next large deployment through full IIS for comparison, but I suspect that's the problem.
OutOfMemoryException when transferring multiple nodes
Running Umbraco 4.6.1 - I'm getting OutOfMemory exceptions when transferring multiple nodes (10-15 with images) via Courier to our staging site.
Has anyone come across a similar problem, and/or has a simple workaround? I'm hoping the answer isn't going to be to upgrade to 4.7 - but if that's the solution, so be it :)
Hope you can help :)
Hi,
What version of Courier are you using? Maybe grab a later version (2.1.1) from here http://nightly.umbraco.org/UmbracoCourier/
Rich
What are you trying to transfer? Courier will serialize all your stuff in memory so it can take some resources, but it shouldn't ever require so much memory that you would run out, (one of my largest test revisions is about 8mb)
Each of those nodes do have some reasonably large source images associated with them (5-10mb)
I'm using version 2.1, and (probably rather foolishly) running the local dev site under IIS Express, which may well be the problem. Restarting the IIS Express process has made the problem go away, so most likely running into some memory limits there..
I'll try the next large deployment through full IIS for comparison, but I suspect that's the problem.
Thanks for your help :)
is working on a reply...