I'm hoping that someone can give me some hints as to where to look for a problem.
I have a "virtual host" account at a major hosting company. Running CENTOS Enterprise 3.9 i686 on virtuozzo, CPanel, php 4.4.8, MySQL 4.1.22, Exim is the mail server.
I have a script that sends a blast email of site updates from time to time. There are around 1100 recipients on the subscription list. It sends a individual, distinct email to each recipient with a "to:" header, running in a loop. So the php script takes a good bit of time to execute. Once the loop starts there are no hits against MySQL until it is finished. This script had been running quite well and reliably for about a year. Sending is through the mail() function rather than through smtp.
Recently my host did some upgrades to my server, including a new version of Exim and conversion from mbox to maildir structure. Some other miscellaneous upgrades happened as a result. Coincidental (?) to the upgrade, this script has stopped performing reliably. It works, but the complete subscription list is not gotten through. Sometimes if gets into the 300's, occasionally as deep as the 800's, but not completely, at least for the big list. I have a couple of test "blasts" that go to only a dozen or so recipients and that executes completely. The list of emails is always sent in the same order, so it's not choking on the same email each time. The blast to the short recipient lists always runs successfully, so it doesn't have anything to do with the content being sent. It seems to simply be the size of the list that's a problem, and that used to work fine.
So I think this is a performance issue. Or a throttling issue. I've talked to tech support, and any of the normal throttling controls are off. They have no other suggestions.
Here's some relevent php settings:
memory_limit 12M
post_max_size 8M
default_socket_timeout 60
mysql.connect_timeout 120
max_execution_time 60
max_input_time 120
I increased some of the above before I had any specific metrics for performance, so I can't tell you if they helped or not. But they didn't solve the problem.
Anybody have any suggestions?