Einleitung
In diesem Dokument wird die Lösung für Sessmgr-Instanzen beschrieben, die aufgrund eines hohen acsmgr_icsr_frwk_instance_chkpt_falied()
Prozessnutzung.
Problembeschreibung
Plattform ASR5500
SW-Version: 21.27.4 und 21.19.10
Sitzungsmanager-Instanzen im Warnungsstatus aufgrund hoher Speicherbelegung auf acsmgr_icsr_frwk_instance_chkpt_falied()
Funktion bei deaktivierter Sitzungswiederherstellung:
[local]ASR5500# show task resources | grep -v good
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
1/0 sessmgr 13 26% 100% 930.8M 900.0M 37 500 4643 12000 I warn
1/0 sessmgr 36 32% 100% 938.8M 900.0M 39 500 5155 12000 I warn
1/0 sessmgr 53 29% 100% 937.8M 900.0M 40 500 4916 12000 I warn
1/0 sessmgr 56 29% 100% 930.2M 900.0M 41 500 4649 12000 I warn
1/0 sessmgr 83 35% 100% 970.2M 900.0M 40 500 5382 12000 I warn
1/0 sessmgr 90 24% 100% 931.3M 900.0M 42 500 4621 12000 I warn
1/0 sessmgr 130 28% 100% 935.0M 900.0M 40 500 4907 12000 I warn
1/0 sessmgr 141 26% 100% 936.7M 900.0M 37 500 4917 12000 I warn
1/0 sessmgr 145 23% 100% 933.9M 900.0M 39 500 4883 12000 I warn
1/0 sessmgr 174 26% 100% 927.4M 900.0M 37 500 4620 12000 I warn
1/0 sessmgr 188 31% 100% 963.0M 900.0M 40 500 5305 12000 I warn
1/0 sessmgr 223 26% 100% 933.5M 900.0M 38 500 4631 12000 I warn
Aggregate consumption per proc:
-------- ------------------------------------------ -------------- -------------- -------------- --------- ---------
| Nr | Process | Similar | Total Bytes | Human Bytes | Percent | % Acum |
======== ========================================== ============== ============== ============== ========= =========
| 1 | acsmgr_icsr_frwk_instance_chkpt_falied() | 757 | 108301860 | 103.3 MB | 13.95% | 13.95% |
| 2 | egtpc_allocate_peer_rec() | 89 | 77599472 | 74.0 MB | 10.00% | 23.95% |
| 3 | sn_slist_dnode_alloc() | 471 | 64427392 | 61.4 MB | 8.30% | 32.25% |
| 4 | sessmgr_allocate_callline() | 156 | 48601944 | 46.4 MB | 6.26% | 38.51% |
| 5 | sn_aaa_buffer_alloc_more_type() | 45 | 34836120 | 33.2 MB | 4.49% | 43.00% |
[local]ASR5500# show task resources | grep -v good
Session Recovery Status:
Overall Status : Not Enabled
Last Status Update : 8 seconds ago
Analyse
Um zu isolieren, ob die große Anzahl an Teilnehmern den Prozess auslöst acsmgr_icsr_frwk_instance_chkpt_falied()
um überlastet zu werden, wird eine Sessmgr-Instanz ausgelastet und es wird bestätigt, dass die Speichernutzung von Sessmgr nicht abgenommen hat:
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 20% 100% 981.8M 900.0M 43 500 4142 12000 I warn
Total 1 20.20% 981.8M 43 4142
[local]ASR5500> task sessmgr instance 10 busy-out
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 19% 100% 979.7M 900.0M 42 500 3946 12000 B warn
Total 1 19.35% 979.7M 42 3946
[local]ASR5500> task sessmgr instance 10 enable
[local]ASR5500> show task resources facility sessmgr instance 10
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- ----------- ------------- --------- ------------- ------
8/0 sessmgr 10 17% 100% 979.8M 900.0M 40 500 4141 12000 I warn
Total 1 17.33% 979.8M 40 4141
Wenn in den Protokollen ein "Besetzt"-Out für eine der betroffenen Sessmgr-Instanzen ausgeführt wird, verringert dies die Anzahl der verwendeten Sitzungen, aber die belegte Speicherzuweisung bleibt hoch und zeigt an, dass die Sessmgr-Instanz den WARN-Status hat.
Zu weiteren Untersuchungen: acsmgr_icsr_frwk_instance_chkpt_falied()
wird aufgerufen, während die Prüfpunktinformationen verarbeitet werden. In dieser Funktion gibt es Listen-Hinzufügungs-/Aktualisierungs-/Löschvorgänge, die bei deaktivierter Sitzungswiederherstellung nicht erwartungsgemäß funktionieren. Dies ist der Grund für den erhöhten Speicherverbrauch. Der hier verwendete Speicher wird in diesem Szenario über die Zeit akkumuliert. Dieses Verhalten tritt nur in Szenarien auf, in denen die require session recovery
ist nicht konfiguriert. Der akkumulierte Speicher, der verarbeitet werden soll acsmgr_icsr_frwk_instance_chkpt_falied()
wird nicht freigegeben, wenn (nein require session recovery
), was zu einem Memlek führen kann."
Lösung
Implementieren Sie die Sitzungswiederherstellung, um dieses Problem zu beheben.
Vorgehensweise
Schritt 1: Überprüfen Sie an der Eingabeaufforderung des Exec-Modus, ob die Sitzungswiederherstellungsfunktion über die Sitzung aktiviert ist, und verwenden Sie die Funktionslizenzen auf dem System mit dem show license info
aus. Wenn der aktuelle Status der Sitzungswiederherstellungsfunktion "Disabled" (Deaktiviert) lautet, können Sie diese Funktion erst aktivieren, nachdem ein Lizenzschlüssel im System installiert wurde.
Schritt 2: Verwenden Sie dieses Konfigurationsbeispiel, um die Sitzungswiederherstellung zu aktivieren.
configure
require session recovery
end
Diese Funktion wird erst nach dem Neustart des Systems wirksam.
Schritt 3: Speichern Sie die Konfiguration wie unter Prüfen und Speichern der Konfiguration beschrieben.
Schritt 4: Führen Sie einen Systemneustart mit dem reload
aus. Die folgende Eingabeaufforderung wird angezeigt:
Bestätigen Sie den Systemneustart, und geben Sie Yes
.
Nach dem Neustart aktiviert das System die Sitzungswiederherstellung und erstellt alle gespiegelten "Standby-Modus"-Aufgaben, führt Paketverarbeitungskartenreservierungen durch und führt andere Vorgänge automatisch aus.
Schritt 5: Nachdem das System neu gestartet wurde, müssen Sie die Systembereitschaft überprüfen, um diese Funktion wie unter Sitzungswiederherstellungsstatus anzeigen beschrieben zu unterstützen. Erfahrenere Benutzer können die require session recovery
-Befehlssyntax in eine Konfigurationsdatei einfügen, die bereits mit einem Texteditor oder auf andere Weise existiert, und dann die Konfigurationsdatei manuell anwenden. Gehen Sie dabei vorsichtig vor, um sicherzustellen, dass dieser Befehl in die ersten Zeilen einer bereits vorhandenen Konfigurationsdatei eingefügt wird. Er muss vor der Erstellung eines nicht lokalen Kontexts stehen.