Announcement

Collapse
No announcement yet.

Tomcat bricht ab

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

  • Tomcat bricht ab

    Hallo miteinander,

    ich habe folgendes Problem:
    In einem Batch-Lauf lasse ich mir z.B. 1000 Html-Seiten erstellen. Sobald zusätzliche Last auf den Server kommt tritt folgender Fehler auf:

    Der tomcat führt bei einem großen Teil der 1000 Aufrufe (20-40%) das Java-Prg. nicht vollständig aus, sondern steigt an den verschiedensten Stellen einfach aus (getrackt!). Die dazugehörige JSP-Seite erstellt er immer vollständig. Allerdings im Fehlerfall mit falschen Werten (die aus dem dem Java-Prg geliefert werden). Tomcat erzeugt in den Logs keinerlei Fehlermeldung, sondern tut so, ob alles in Ordnung wäre.

    Architektur:
    Apache-Webserver
    mod_jk
    tomcat 5.5.26
    Struts 1.1-Framework

    Experimentiert habe ich bereits wegen des Fehlers mit den Config-Parametern Xms, Xmx, acceptCount und maxThreads.
    Leider ohne jeglichen Erfolg.

    Nun bin ich ratlos? Ihr hoffentlich nicht.
    Danke.

  • #2
    Wie wäre es mit einem Update des Tomcat

    Ursache könnte sein, dass die zusätzlich JSP erstmal compiliert werden müssen....

    Es erscheint nicht sinnvoll, 1000 Seiten im laufenden Betrieb auf einmal unter zu schieben.

    Auch wäre der Apache entbehrlich
    Christian

    Comment


    • #3
      Hallo Christian,

      danke für die schnelle Reaktion.
      Es handelt sich immer um dasselbe Java-Programm und dieselbe JSP-Seite. Sie müssen mit verschiedenen Parametern einige tausend Seiten produzieren. Diese werden dann als statische HTML-Seiten abgelegt und entlasten dann den tomcat.

      Comment


      • #4
        Also wenn ich das richtig verstehe erzeugt der Tomcat die 1000 Seiten per Javaprogramm & einer JSP. Diese werden dann vom Apache ausgeliefert.

        Dann würde ich es erstmal mit weniger Seiten probieren um den Fehler einzugrenzen und ev. doch mal eine Fehlermeldung zu bekommen.
        Christian

        Comment


        • #5
          Ja, so wie Du das verstanden hast läuft das hier.

          Das Einkreisen habe ich mit gehörigem Aufwand bereits betrieben. Dabei kam leider heraus, dass der tomcat
          a) zu den verschiedenster punkten des java-programmes aufhört, dieses auszuführen.
          b) keinerlei fehlermeldung schreibt

          Comment


          • #6
            hmmm, fällt mir auch aus der Ferne nicht so ein, würde aber
            Allerdings im Fehlerfall mit falschen Werten (die aus dem dem Java-Prg geliefert werden).
            mal auch am Programm drehen, bsp. 5 Sek Pause zwischen jeder Seite einbauen, Logausgaben ..
            Christian

            Comment


            • #7
              Pausen habe ich bereits eingebaut. In dem Maße, wie die Last sinkt, läuft alles fehlerärmer bis hin zum fehlerfreien Durchlauf. Tritt also nur unter Last auf. Deshalb habe ich auch mit tomcat-Parametern experimentiert (Xms, Xmx, acceptCount und maxThreads). Davon habe ich aber leider nur rudimentäre Ahnung und kann nur durch try und error Versuche starten. Leider haben die Versuche alle nix gebracht. D.h. der Fehleranteil wurde weder signifikant kleiner noch größer, egal ob ich die Parameter-Werte vergrößert habe oder verkleinert.

              Comment


              • #8
                Könnte das Monitoring helfen

                http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
                Christian

                Comment


                • #9
                  Hallo Christian,

                  danke für den Tipp mit dem Monitor. Den probiere ich bezeiten einmal aus.
                  Meine jetztige Medlung hat etwas gedauert, weil ich neue Erkenntnisse gewonnen habe und diese erst einmal überprüfen wollte.
                  Durch Zufall habe ich gemerkt, dass die Java-Servlets gar nicht abgebrochen werden vom Tomcat.
                  Vielmehr 'verwirft' eine Thread die dazugehörige Session und greift sich eine andere Session. Mit deren Werten führt er das Java-Servlet 'ordnungsgemäß' aus, allerdings mit den falschen Session-Werten. Und da er in ersten Teil des Java-Servlets die Werte aus Session A und im zweiten Teil der aus Session B nutzen kommt es zu unsinnigen Ergebnissen.
                  Dieses, wie gesagt, nur unter Last (viele Requests) und bei ca. 20-40% der Fälle.

                  Nun bin ich wieder schlauer, aber von einer Lösung noch immer sehr entfernt!

                  Comment


                  • #10
                    Die Sessiontime hochsetzen?
                    Christian

                    Comment


                    • #11
                      Kenne nur session-timeout.
                      Der steht auf 20 Minuten.
                      Der ganze Batchjob dauert aber nur 1:30 Minuten.

                      Comment


                      • #12
                        Hallo Christian,

                        ich habe leider nur einen Workaround gefunden, nicht die eigentliche Ursache beheben können.
                        Wollte mich noch einmal abschließend für Deine Hilfe bedanken.

                        Gruß
                        Hanna

                        Comment


                        • #13
                          Und was hast du gemacht?
                          Christian

                          Comment


                          • #14
                            Daten frühzeitig aus der Session ausgelesen und in lokale Variablen verlagert.

                            Comment

                            Working...
                            X