Author |
Topic  |
|
Deleted
deleted
    
4116 Posts |
Posted - 29 January 2003 : 10:55:56
|
One of the sites I'm dealing with uses subscriptions. It is on a shared server and has a variety of e-mail components. Latey, with the increase in number of members and posts, we faced timeouts. We disabled higher level subscriptions (also deleted existing records) and put some performance statistics.
The statistics show, even with a couple of e-mails sent out, the post_info.asp took a lot of time to complete. It even reached 100+ seconds (measured with the forum timer). It is very annoying.
We have the following components (as shown by v3.4.03): ASPEmail ASPMail ASPQEmail CDONTS CDOSYS JMail SA-Smtp Mail
Now, a couple of questions: 1) Can the stress be caused by other sites on the server using that specific component? 2) Does anyone has info on performance on these components? 3) Did anybody used the BCC approach and has the code to share with me? 4) Any ideas to prevent this and/or improve the performance?
We don't want to disable them, they are very usefull to pull people back to community...
|
Stop the WAR! |
|
HuwR
Forum Admin
    
United Kingdom
20600 Posts |
Posted - 29 January 2003 : 11:10:55
|
try searching here Bozden, you will find that is why we don't have subscriptions here, it was killing posting, to alleviate the problem I wrote a dll, but have not had chance to update it since we upgraded the forum to 3.4.
I think you will find the BCC approach to be fraught with problems, many mail servers will simply reject the emails.
|
 |
|
Deleted
deleted
    
4116 Posts |
Posted - 29 January 2003 : 11:46:20
|
I already know the talks around here, also in dev-team only area and recently gone through them to find some ideas. Dave Maxwell was working on a BCC'ed version for an older version but left that after your explanations on Spam detectors.
I know that some of you are against these e-mails, as a forum application is designed to be "regularly visited", but for small and medium sized forums it is very important. I have some forums that I don't visit ten times a day but just whenever a post is done on them.
The non-BCC approach does also have problems with Spam detectors as they are configurable nowadays. For example this is a mail header from a "reply to a topic" post:
...
X-RBL-Warning: SPAMHEADERS: This E-mail has headers consistent with spam [4000020e].
X-Declude-Sender: he@thewebsite.com [***.***.***.***]
X-Note: This E-mail was scanned by Declude JunkMail (www.declude.com) for spam.
X-Spam-Tests-Failed: SPAMHEADERS
X-RCPT-TO: <me@myserver.com>
Status: U
X-UIDL: 2861
What I don't know is the DLL mechanism on the server. Can 2-3 mails per post cause that much stress? Can it be that the webserver has too many websites on it?
This is what I collected as statistics. As you see in 33.6 hours only 192 e-mails (all e-mails including registration and member-to-merber ones) got sent...
Statistics Start____________: 1/28/2003 1:58:55 AM
Now_________________________: 1/29/2003 11:36:18 AM
Minutes passed______________: 2018
Execution time for this page: 0.22
Maximum execution time______: 41.32813 on page /forum/post_info.asp
Total users_________________: 977
Average users per minute____: 0.484
Current users_______________: 25
Max users___________________: 35
Total E-Mails_______________: 192
Average E-Mails per minute__: 0.095
Max E-Mails per minute______: 0.333
|
Stop the WAR! |
 |
|
HuwR
Forum Admin
    
United Kingdom
20600 Posts |
Posted - 29 January 2003 : 12:47:23
|
quote:
Can 2-3 mails per post cause that much stress?
No, but 20 to 30 can, it really depends on a few other factors. but esentially, the mail components are only designed to send one or two emails at a time, so if you make a post and there are 10 people subscribed, you have to wait for the mail component to send them first, and they are all pretty slow at doing it. ASpemail if you have the paid version has a seperate queueing component which would help, but you would need to see if it was available.
having a lot of sites obviously won't help, but is not necesarily the problem, there are only half a dozen sites on this server, and we had the same problems. |
 |
|
Deleted
deleted
    
4116 Posts |
Posted - 29 January 2003 : 19:11:26
|
I checked that server for installed components and ran some test. I found ASPQMail is there, I tested it with 10 messages with and without Queue, with same object values set once send 10 times, and with different objects created/deleted. Nothing much changed, sending of 10 simple messages took 10s, 28s, 11s, 13s in four test. Because the server is a remote one and I wanted to test it in real-time conditions the differences are acceptable I think.
So, we can assume 1-2 seconds per e-mail. This does not explain 40-100+ seconds spent for a single post where 2-3 users are subscribed, but your statement about 30+ subscriptions stands as a rock...
I think, I found another issue with Snitz code: Ref: http://www.serverobjects.com/comp/AspQmail.htm
ASPQMail uses the following syntax to enable the Queued processing:
Mailer.QMessage = true
But Snitz uses:
objNewMail.QMessage = 1
According to VBS documentation TRUE=-1, so that code never turns the queue on.
Can you confirm that?
Also with ASPQMail there is an option for deferred processing, but it did not work, actually it sent the message immediately and the timeframe reached 38 sec, 34s and 34 sec in three consequitive tests. So I assume it is ASPMAIL not ASPQMAIL that is running or it is not correctly setup.
Actually this is from the header:
quote:
X-mailer: AspMail 4.0 4.03 (SMT4068056)
Here is my test code (portion of all) for this (for reference):
datStart = now
datSend = dateadd("s",300,datStart)
datSend = formatdatetime(datSend,2) & " " & formatdatetime(datSend,4)
response.write "Send time = " & datSend & "<br>"
for i=1 to 10
response.write "Sending #" & i & "<br>"
response.flush
Set obj = Server.CreateObject("SMTPsvg.Mailer")
obj.QMessage = True
obj.QTime = datSend
obj.FromName = "xxxx xxxx"
obj.FromAddress = "xxxx@xxxx.xxx"
obj.RemoteHost = "mail.xxxx.xxx"
obj.AddRecipient "yyyy yyyy", "yyyy@yyy.yyy"
obj.BodyText = "Test Message"
obj.Subject = "Test #" & i & " at " & now & " - Reply to a posting"
on error resume next '## Ignore Errors
obj.SendMail
If Err <> 0 Then
Err_Msg = Err_Msg & "<li>Error: " & Err.Description & "</li>"
End if
on error goto 0
Set obj = nothing
next
datEnd = now
response.write datEnd & "<br>"
response.write "Duration = " & abs(datediff("s",datStart,datEnd)) & "<br>"
|
Stop the WAR! |
 |
|
Doug G
Support Moderator
    
USA
6493 Posts |
Posted - 29 January 2003 : 20:37:58
|
It seems to me, if you are willing to throw away email erro processing JMail has an asynchronous mode (or something similar) where control returns immediately to the asp code. If that's so, perhaps that will work for you.
Also, the not free JMail has a process where you can put your mail list in a DB file, pass the db table to JMail, and go on about your business while it sends to all the recipients in background.
|
====== Doug G ====== Computer history and help at www.dougscode.com |
 |
|
Deleted
deleted
    
4116 Posts |
Posted - 29 January 2003 : 21:06:32
|
It seems that the e-mail server does not allow deferred e-mails processing. I used the JMail.DeferredDelivery (JMail v3.7) with no success. Here is the code if somebody makes use of it:
case "jmail"
Set objNewMail = Server.CreateObject("Jmail.smtpmail")
objNewMail.DeferredDelivery = dateadd("s",300,now)
objNewMail.ServerAddress = strMailServer
objNewMail.AddRecipient strRecipients
objNewMail.Sender = strSender
objNewMail.Subject = strSubject
objNewMail.body = strMessage
objNewMail.priority = 3
on error resume next '## Ignore Errors
objNewMail.execute
If Err <> 0 Then
Err_Msg = Err_Msg & "<li>Your request was not sent due to the following error: " & Err.Description & "</li>"
End if
This case 10 e-mails took 10 seconds...
I found this from their knowledge base (http://www.dimac.net/websites/dimac/website/support/FAQ?ID=34):
quote:
JMail is not limited in any way of how manby concurrent calls it can handle. How ever the threading model of your component may impact the behaviour of JMail.
If JMail behaves slow it's because it does realtime SMTP comunication to your server.
A good thing to speedup jmail is to reuse th object without setting the "serverAddress" property. This cases Jmail to pool the smtp connection and makes it perform alot better under heavy loads.
Tried, but nothing changed in performance... |
Stop the WAR! |
 |
|
HuwR
Forum Admin
    
United Kingdom
20600 Posts |
Posted - 29 January 2003 : 21:56:24
|
quote:
Also with ASPQMail there is an option for deferred processing, but it did not work, actually it sent the message immediately and the timeframe reached 38 sec, 34s and 34 sec in three consequitive tests. So I assume it is ASPMAIL not ASPQMAIL that is running or it is not correctly setup.
It is installed by default when you install aspemail, but it only runs for 30 days if it is the free version. |
 |
|
Deleted
deleted
    
4116 Posts |
Posted - 29 January 2003 : 22:44:16
|
quote: Originally posted by HuwR
quote:
Also with ASPQMail there is an option for deferred processing, but it did not work, actually it sent the message immediately and the timeframe reached 38 sec, 34s and 34 sec in three consequitive tests. So I assume it is ASPMAIL not ASPQMAIL that is running or it is not correctly setup.
It is installed by default when you install aspemail, but it only runs for 30 days if it is the free version.
Oh, well. This is why .Expires gives N/A? I thought it was registered!
|
Stop the WAR! |
 |
|
Deleted
deleted
    
4116 Posts |
Posted - 29 January 2003 : 23:06:52
|
quote: Originally posted by Doug G
It seems to me, if you are willing to throw away email erro processing JMail has an asynchronous mode (or something similar) where control returns immediately to the asp code. If that's so, perhaps that will work for you.
Also, the not free JMail has a process where you can put your mail list in a DB file, pass the db table to JMail, and go on about your business while it sends to all the recipients in background.
I could not find info on this in the reference. I'll search it tomorrow...
Q: Can I use a remote "trigger" to start an ASP page that does the mass-mail every hour? Somehing like a sitechecker?
Or I can use cgi, php etc to do the timed events?
|
Stop the WAR! |
 |
|
Doug G
Support Moderator
    
USA
6493 Posts |
Posted - 30 January 2003 : 02:38:33
|
You should probably know my memory, while good, is pretty short Somewhere I have some JMail documentation that I printed off their website a long time ago, if I can get these docs to surface I'll post what I find.
|
====== Doug G ====== Computer history and help at www.dougscode.com |
 |
|
|
Topic  |
|
|
|