Announcement

Collapse
No announcement yet.

JK 2 Connector in Tomcat: Bedeutung der connectionTimeout

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JK 2 Connector in Tomcat: Bedeutung der connectionTimeout

    Hallo,
    ich benutze Tomcat in Verbindung mit Apache
    ueber AJP 1.3. Dazu habe ich in Tomcat einen
    JK2 Connector konfiguriert.
    Die Konfiguration sieht so aus:

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnect or"
    port="8888"
    minProcessors="10"
    maxProcessors="100"
    acceptCount="10"
    connectionTimeout="100"
    protocolHandlerClassName="org.apache.jk.server.JkC oyoteHandler"
    />

    In der Doku von Tomcat findet man bzgl
    connectionTimeout folgendes:
    The number of milliseconds this Connector will wait, after accepting a connection, for the request URI line to be presented. The default value is 60000 (i.e. 60 seconds).

    Dies steht allerdings bei der Beschreibung
    Coyote HTTP/1.1 Connector und nicht des JK2 Connectors.

    In der Tomcat User Group wurde mir empfohlen,
    diesen Timeout zu disablen, da ansonsten
    jedesmal immer wieder neue Connections
    aufgebaut werden müssen (wenn dieses Timeout
    zuschlägt).

    Kurz gesagt, ich bin etwas verwirrt und
    weiss nun nicht mehr, welcher Aussage ich
    glauben dar. Stimmt die Doku von Tomcat nicht,
    die ja eigentlich sagt, dass der Connector,
    diese Timeout abwartet und erst dann wieder
    eine neue Connection erwartet. Oder bedeutet
    dies Variable connectionTimeout in Verbindung
    mit dem JK2Connector, dass wenn die Connection
    solange wie in ConnectionTimeout konfiguriert wurde, nicht benutzt wurde, geschlossen wird.

    Kurz gesagt, kennt jmd die genaue Bedeutung
    dieses Konfigurationsparameters in Verbindung
    mit dem JK2Connector von Tomcat.

    Danke schon mal im Voraus
    Viele Grüsse
    Karin

  • #2
    Hi Karin,

    connectionTimeout ist der SO_TIMEOUT des zugrundeliegenden Sockets. Wenn eine Verbindung offen ist und xy msec kommen keine Daten über diese Verbindung (d.h. der Thread der vom Socket liest hängt xy msec in einem blockierenden Aufruf fest) dann wird eine Exception ausgelöst und der CoyoteConnector schließt die Verbindung.

    Bei HTTP-Verbindungen macht das Sinn. Im Fall von AJP werden die Verbindungen aber vom mod_jk2 gesteuert, d.h. er macht halt gleich mal einige auf und wenn ein Request kommt, nimmt er eine freie Verbindung, schickt den Request drüber, erwartet die Antwort und gibt die Verbindung wieder frei (ohne sie zu schließen). Es ist ja ein ziemlicher Overhead, eine Verbindung zu öffnen und wieder zu schließen (TCP-Pakete für Handshake etc.). Wenn jetzt mal eine zeitlang keine Tomcat-Requests kommen, würde der CoyoteConnector alle Verbindungen zumachen (wegen dem Timeout)und mod_jk2 muß sie extra wieder öffnen.

    Es kann im Falle von AJP ja nicht vorkommen, das ein Client die Verbindung hält aber eigentlich nicht mehr braucht, denn der Client ist der Apache (mod_jk2), der für das öffnen und schließen verantwortlich ist.

    Gruß,

    Alwi

    Comment


    • #3
      Hi Alwin,
      ok dann ist die connectionTimeout also doch
      eine Art von Inactivity Timeout.

      Ich finde in gewissen Fällen macht es auch
      in Verbindung mit Apache Sinn, dieses Timeout
      kleiner zu setzen. Wir haben hier bei uns
      z.B. Servlets die nur sehr kurz und dann
      von sehr vielen Clients genutzt werden und
      später den ganzen Tag nicht mehr. Da
      es dann auf einem System auch ziemlich
      viele Resourcen benötigt all diese Threads/Connection
      offen zu halten, schliessen wir in
      solchen Servlets die Connections wieder schneller.

      Viele Grüsse
      Kari

      Comment


      • #4
        Hallo Karin,

        Ja, in diesem Fall macht der Timeout sicher Sinn. Für solche Fälle kann man ihn dann ja umstellen.

        Gruß,

        Alwi

        Comment


        • #5
          Besser als im Tomcat die Verbindung
          abzubauen, wäre sicherlich im Apache die
          Anzahl der inaktiven Prozesse nach einer Zeit wieder abzubauen. Leider fehlt dem mod_jk2 hier eine eigene Steuerung des Connectionpools auf der Seite des Apaches.

          Tschau
          Pete

          Comment

          Working...
          X