SHM Shared Object Memory Multiple Server? Thema ist als GELÖST markiert

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

SHM Shared Object Memory Multiple Server?

Beitrag von sharkofnose (ForumUser / 13 / 0 / 0 ) » 27.03.2020 04:59
Hallo Zusammen,

ich arbeite mit einem Shared Object Memory und habe nun folgendes Problem:
Im Entwicklungs- und Testsystem haben wir immer nur jeweils einen Application Server und im Produktiv-System natürlich mehrere...
Im Hintergrund läuft ein Job, der den SHM alle paar Minuten updatet.
Der Load Balancer macht leider seine arbeit und führt den Job mal auf dem einen Server und mal auf dem anderen aus.
Im Hinterkopf war mir schon klar, dass der Shared Object Memory Application Server abhängig ist aber das Konzept hat gerade so schön gepasst und jetzt will ich nicht alles neu programmieren 😭 😭 😭 😭

Die Möglichkeit, den Job auf allen Servern laufen zulassen, sodass auf allen Servern ein Gebiet aufgebaut wird kommt leider nicht in Frage bzw. wäre Plan Z + ausführliche Argumentation für die Basis und Systembetrieb.

Meine Frage wäre nun, ob einer der folgenden Wunschgedanken möglich wäre (oder andere Lösungen):

1. Der Job läuft nur auf einem Server und man spiegelt / kopiert das Gebiet auf die anderen Server?

2. Wenn ich in meinem Programm auf den Shared Object Memory zugreife, wäre es natürlich auch cool, wenn ich auf allen Servern suchen könnte, wo das Gebiet vorhanden ist,um dann darauf zuzugreifen?

Mit dem einzigen brauchbaren Google-Treffer, den ich nach Stunden gefunden habe, kann ich nicht wirklich was anfangen...
https://answers.sap.com/questions/93768 ... rvers.html
Hat jemand damit schon mal Erfahrungen sammeln können?

Ich würde mich sehr über eure Erfahrungen und Ratschläge (hoffentlich Lösungsvorschläge) freuen :)

Beste Grüße


Re: SHM Shared Object Memory Multiple Server?

Beitrag von a-dead-trousers (Top Expert / 3437 / 105 / 884 ) » 27.03.2020 16:23
Du köntest in deinem Job einen RFC-Baustein auf allen Instanzen ausführen lassen der das SHM-Objekt aktualisiert. So hab ich das bei uns gemacht.
Mit TH_SERVER_LIST kriegst du alle Instanzen raus und für das SHM-Upate erstellst du einfach eine RFC-fähige Hülle um dein bestehendes Coding.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: SHM Shared Object Memory Multiple Server?

Beitrag von sharkofnose (ForumUser / 13 / 0 / 0 ) » 03.04.2020 17:18
Hallo a-dead-trousers,

erstmal vielen Dank für deine Antwort.
Könntest du mir bitte ein Beispiel Coding schicken?

Also angenommen ich habe 5 Server, dann rufe ich in meinem Job den RFC Baustein 4 mal auf und gebe dort den Server an. Dem RFC Baustein übergebe ich dann die Daten, die ich in den SHM Puffer schreiben will und der FB updatet dann den SHM.
Verstehe ich das so richtig?

Beste Grüße

Re: SHM Shared Object Memory Multiple Server?

Beitrag von a-dead-trousers (Top Expert / 3437 / 105 / 884 ) » 03.04.2020 22:12
sharkofnose hat geschrieben:
03.04.2020 17:18
Könntest du mir bitte ein Beispiel Coding schicken?
Ich komm leider im Moment nicht an das System ran. Probiers mal selber. Wenn du nicht zurecht kommst postest du was du hast und wir schauen dann gemeinsam weiter. Die Namen die TH_SERVER_LIST zurückliefert kannst du direkt als RFC-Destination einsetzen. In der Hilfe zu CALL FUNCTION ... DESTINATION sollte das auch beschrieben sein.

sharkofnose hat geschrieben:
03.04.2020 17:18
Also angenommen ich habe 5 Server, dann rufe ich in meinem Job den RFC Baustein 4 mal auf und gebe dort den Server an. Dem RFC Baustein übergebe ich dann die Daten, die ich in den SHM Puffer schreiben will und der FB updatet dann den SHM.
Verstehe ich das so richtig?
Korrekt. Ich würde nur der Einfachheit halber den RFC-Baustein für alle 5 Server ident ausführen lassen, weil du sonst eine Weiche für die aktuelle Serverinstanz einbauen müsstest und das macht es nur wieder kompliziert.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: SHM Shared Object Memory Multiple Server?

Beitrag von edwin (Specialist / 293 / 7 / 62 ) » 04.04.2020 15:14
Hi,
ich habe mal so etwas ähnliches gehabt:

ein RFC fähiger Baustein (ZZ_REFRESH_RFC_SHARED_MEM) , und ein normaler(zz_refresh_shared_mem) der diesen in allen Servern aufruft:

Code: Alles auswählen.

FUNCTION zz_refresh_shared_mem.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(CLIENT)  TYPE  SYMANDT DEFAULT SY-MANDT
*"     VALUE(DATA)    TYPE  ZDATA
*"----------------------------------------------------------------------
  DATA  it_srv_list TYPE TABLE OF  msxxlist.
  FIELD-SYMBOLS <fs_srv> TYPE  msxxlist.


  CALL FUNCTION 'TH_SERVER_LIST'
*   EXPORTING
*     SERVICES             = 255
    TABLES
      list                 = it_srv_list
    EXCEPTIONS
      no_server_list       = 1
      OTHERS               = 2.

  IF sy-subrc <> 0.     EXIT.  ENDIF.

  LOOP AT it_srv_list ASSIGNING <fs_srv>.
    CALL FUNCTION 'ZZ_REFRESH_RFC_SHARED_MEM' IN BACKGROUND TASK
      DESTINATION <fs_srv>-name
      EXPORTING
        client  = client
        data    = zdata
  ENDLOOP.
  COMMIT WORK.
ENDFUNCTION.

/Edwin

Re: SHM Shared Object Memory Multiple Server?

Beitrag von sharkofnose (ForumUser / 13 / 0 / 0 ) » 03.05.2020 16:19
Hallo edwin,

vielen Dank für das Beispiel.
Das hilft mir sehr weiter.
Meine Welt ist ODATA und nicht RFC...

Leider kann ich das nur im Produktiv System testen...
Sobald ich ein Ergebnis habe, gebe ich nochmal Bescheid ;)

Danke für eure Hilfe

Beste Grüße

Re: SHM Shared Object Memory Multiple Server?

Beitrag von sharkofnose (ForumUser / 13 / 0 / 0 ) » 12.05.2020 02:46
Hallo Zusammen,

der Lösungsvorschlag von edwin hat funktioniert. Der SHM wird auf allen AS geladen. bzw. erstellt.

Vielen Dank.

Beste Grüße

Seite 1 von 1