We have intermittent problems sending order confirmation mails. Sometimes they are sent out, sometimes they aren’t, and the root cause seems to be that
- The mail service can’t get the HTML for the mail because the web request fails
- The scheduler doesn’t retry the send even though it says it will
Here is the actual error:
Execution of background processor Litium.Application.Scheduler.BackgroundJobWorker, Litium.Application failed, executing again in 5 seconds.
System.Net.WebException: Unable to connect to the remote server —> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [load balancer external IP]:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
— End of inner exception stack trace —
at System.Net.HttpWebRequest.GetResponse()
at Litium.Accelerator.Services.MailServiceImpl.MailServiceProcessor.GetWebPageContent(…
Only one error appears per failed order confirmation mail send, and only this error.
While beginning to troubleshoot this, I have some questions:
- Is it correct/normal that it should use the external load balancer IP to fetch the mail body? If not, where would I configure this?
- Does the scheduler run on all servers in a cluster? I can’t find any references to the scheduler in configuration.
- Why does the scheduler not retry the send even though it says it will in “5 seconds”? Is this something that needs to be configured?
- Some other pointers on how to troubleshoot?
Litium version: 7.6.1 + accelerator @ Litium Cloud production environment