So we had a customer call in today saying that order notification emails for their site were not going out. They run on Magento 1.9.1 which has implemented a new email queue system for magento. They receive about 100-1,000 orders a day, which can mean several thousand emails, since each order gets several emails post order (order confirmation, order update, order shipping/tracking number, follow up email).
So the first thing I did was place a test order on production. I did not receive the email. I looked in the /var/log/messages for the server and searched for my email address. It was not in there. I did notice other email’s in there, including the account creation email, which I almost dismissed to the client as the order email. This email is not queued like the order emails so it immediately gets sent out.
So this was a bit scary, not seeing the email in the system /var/log/messages then I remembered about the queuing Magento has, and that it runs from cron. I looked for a locked up cron by doing ps aux |grep cron but nothing came up. It looked like no cron was locked. I then remembered the client had AOE Scheduler installed. I browsed to system->scheduler->list view.
In the table we had to select core_email_queue_send_all and click on the search button. This limits the table view to this value. I had something like 28 results found, but my view filter was set to show 25 at a time. So I could not see the trouble 3 at the end. I switched to show the view at 50 which showed me all of my results and I noticed the last item was a “RUNNING” process from several days ago. There were a few “MISSED” processes before it.
I then selected the RUNNING row and selected “kill” from the actions window. It then said it would kill on the next cron run. This meant that I had to wait two minutes to check back. I checked back and it was still there. I then selected the row and clicked on “delete” from the action drop down and this immediately removed the row. I waited two minutes and refreshed the page and it was now running. I also started noticing through mailgun that the emails were sending but I didn’t get mine. This is because the most emails magento will process in one cron is 100. This means if you have 3,000 in queue, it will take 30 minutes to get them all out.
You may also need to do this with newsletter_send_all.