Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Zugriffe auf Document in parallelen Threads

<< < (2/2)

flaite:
Wenn es noch um das selbe Design wir hier geht, dann führt einfach das Design zu Connections, die zu schwer zu managen sind:

http://atnotes.de/index.php?topic=32458.0

Ich predige seit 5 Jahren:
1. xml nur, wenn es wirklich Vorteile bringt und nicht weil sich die buzzwords so doll anhören.
2. connections dürfen nicht zu langlebig sein oder man weiss wirklich was man tut und das ist schwierig.
3. EJBs sind kein Quatsch (mit der Version 3.0 erhalte ich vielleicht sogar Recht)
4. Eigene Frameworks zu bauen ist schwierig.

Vor allem mit 1 und 2 habe ich mir kurzfristig gar nicht so wenig Feinde geschaffen und einiges an triumphierenden Grinsen geerntet ("Naaatüüürliiiich geht das"). Im Nachhinein haben die lieben Kollegen dann aber oft gemerkt, dass es cross-country oft ziemlich rauh zugeht. Gerade mit Domino.
Kannst du vielleicht das ganze stateless machen? D.h. Du versuchst irgendwie keine Session und sonstigen Objekte über einen Request-Response Zyklus zu halten?
Natürlich ist das "schlecht für die Performance". Aber du bewegst dich in Bereiche, in denen es schwer wird mit gegebenen Ressourcen, eine stabile Anwendung hinzubekommen. Und das ist das eindeutig größere Problem.

Gruß Axel

exratt:
Also es geht hier nicht um das Programm, das ich in dem anderen Thread angesprochen habe. Das war nur ein Versuch, mich mit der API ein wenig vertraut zu machen und rumzuprobieren.

Was genau kann eigentlich passieren, wenn eine Session "zu langlebig" ist? Oder ist das schlimme daran, dass man gar nicht genau sagen kann, was dann passiert? Zumindest im Server-Dokument gibt es für DIIOP nur eine einstellbare "Idle Timeout", die in meinem Fall besagt, dass die Session nach 60 Minuten nichts tun verworfen wird, aber kein allgemeines Timeout, das auch dann in Kraft tritt, wenn noch Verkehr im Netz ist. Also zumindest macht einen diese Einstellmöglichkeit glauben, dass eine lang geöffnete Session etwas stinknormales ist, was keine Probleme aufwirft...

flaite:

--- Zitat von: exratt am 05.10.06 - 08:57:56 ---Was genau kann eigentlich passieren, wenn eine Session "zu langlebig" ist?

--- Ende Zitat ---
1. Sessions sind ein knappes Gut. Du kannst nicht unendlich viele davon benutzen. Dies schränkt die Skallierbarkeit des Systems ein.
2. Ich würde mich niemals auf ein automatisches Timeout verlassen. Gerade im Zusammenspiel mit JNI führt das zu Problemen (und Domino beruht darauf). Selbst wenn die Session irgendwie von Notes beendet wird, werden möglicherweise nicht alle Ressourcen freigesetzt. Java (und .NET) setzen hier auf automatische Garbage Collection und die funktionieren (aus allgemeinen Performance-Gesichtspunkten) komplizierter als viele Leute glauben. Sprich: Die Connection wird vielleicht gar nicht geschlossen, auch wenn du es glaubst.

Ich würd immer mit einem System anfangen, dass eine Session mit einem externen Programm eindeutig innerhalb eines durch den Anwender (oder ein automatatisch geschedulten) initiierten Request/Response Zyklus hält. Erst wenn das unter Performance-Gesichtspunkten nicht geht, mach ich was anderes. Vor dem anderen habe ich aber Respekt und verlasse mich nicht auf irgendwelche Automatismen. 



--- Zitat von: exratt am 05.10.06 - 08:57:56 ---Oder ist das schlimme daran, dass man gar nicht genau sagen kann, was dann passiert? Zumindest im Server-Dokument gibt es für DIIOP nur eine einstellbare "Idle Timeout", die in meinem Fall besagt, dass die Session nach 60 Minuten nichts tun verworfen wird, aber kein allgemeines Timeout, das auch dann in Kraft tritt, wenn noch Verkehr im Netz ist. Also zumindest macht einen diese Einstellmöglichkeit glauben, dass eine lang geöffnete Session etwas stinknormales ist, was keine Probleme aufwirft...

--- Ende Zitat ---
In der realen Welt nicht.
Wie gesagt. Es gibt diese Garbage Collection Probleme.
Die Garbage Collection Mechanismen sind (in .NET und Java) so, dass kleine Objekte aus Optimierungsgründen bei Garbage Collector Läufen nicht berücksichtigt werden, obwohl sie eligible for garbage collection sind. Objekte, die bereits bei einem Lauf übersehen wurden, werden beim nächsten Lauf auch aus Optimierungsgründen oft nicht berücksichtigt. D.h. die Session wird in Wirklichkeit gar nicht geschlossen.

In dem DIIOP Prozess des Domino Servers sind die Anzahl der Sessions beschränkt. Wenn du ein paar ungenutzt herumschwirren läßt, vermindert das die Skallierbarkeit des Systems.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln