Mailabruf blockiert das ganze Intranet
Marcus
- asp.net
Hallo Brettgemeinde !
Ich finde es Super das diese Forum wieder eröffnet wurde und das neue Layout sieht auch gut aus ! :)
Ich benutze in unserem Intranet den IIS4.0 + ASP.
Wir bekommen am Tag einige Mails und diese werden durch die ASP-Komponente XPOP3 von Lightcom abgerufen und in eine Access Datenbank geschrieben.
Ich habe eine Seite erstellt wo eben diese ASP-Komponente mehrere POP3-Konten abruft (jede 5 min.) und diese dann in eine DB schreibt.
Jedesmal wenn die Seite die Konten abruft können keine anderen ASP-Seiten aufgerufen werden, sie sind einfach blockiert.
Nach einer gewissen Zeit löst sich die Blockade und man kann bis zum nächsten Mailabruf weiterarbeiten.
Hat jemand einen Tip woran das liegen kann ???
thx & Mfg
Marcus
Moin,
Jedesmal wenn die Seite die Konten abruft können keine anderen ASP-Seiten aufgerufen werden, sie sind einfach blockiert.
Nach einer gewissen Zeit löst sich die Blockade und man kann bis zum nächsten Mailabruf weiterarbeiten.
ich kann nur raten: Guck mal in der IIS-Konfiguration nach wieviele http-Verbindungen
bzw. CGI-Prozesse gleichzeitig erlaubt sind (falls man das verstellen kann).
Ansonsten klingt das Verhalten des Servers für mich
ziemlich merkwürdig - normalerweise sollten mehrere
cgi-Prozesse gleichzeitig kein Problem darstellen - vielleicht
ist bei der Installation irgendwas schiefgelaufen?
Viele Grüße
Andreas
Hallo,
Ich finde es Super das diese Forum wieder eröffnet wurde und das neue Layout sieht auch gut aus ! :)
Jupp, das finde ich auch.
Ich habe eine Seite erstellt wo eben diese ASP-Komponente mehrere POP3-Konten abruft (jede 5 min.) und diese dann in eine DB schreibt.
Jedesmal wenn die Seite die Konten abruft können keine anderen ASP-Seiten aufgerufen werden, sie sind einfach blockiert.
Nach einer gewissen Zeit löst sich die Blockade und man kann bis zum nächsten Mailabruf weiterarbeiten.Hat jemand einen Tip woran das liegen kann ???
welche MDAC Version ist denn auf dem Server installiert.
Bei MDAC 2.x gibt es eine klitzekleine Änderung bzgl.
Objekterstellung innerhalb von Schleifen.
Dieser Code z.B.: bringt den Server fast zum Stillstand
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN","",""
Do While Not MailAbruf.EOF ' oder deine Abbruchbedingung
SQL = "INSERT INTO ..."
Set rs = conn.Execute SQL
' --- vorige Zeile ersetzen durch: conn.execute SQL (ohne Set rs ...)
MailAbruf.MoveNext
Loop
conn.Close
Set conn = Nothing
%>
Andere generelle Möglichkeit (nicht auf deine Frage zugeschnitten)
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN","",""
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT Spalte ..."
rs.Open SQL, conn, 3, 3
Set rs2 = Server.CreateObject("ADODB.Recordset")
Do While Not rs.EOF
SQL2 = "SELECT ..."
rs2.Open SQL2, conn, 3, 3
...
rs2.Close
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
Auf jeden Fall würde ich mal hinter jedem Aufruf oder Schleifendurchlauf
die aktuelle Zeit ausgeben, damit Du siehst, welche Funktion so
zeitraubend ist.
Ein evtl. eingebautes Response.Buffer für den Test auf False setzen.
Solltest Du irgendwo ein Application.Lock drinhaben, schmeiß es auch mal raus.
Tschau, Stefan