Marcus: Mailabruf blockiert das ganze Intranet

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

  1. 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

  2. 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