Einleitung
Dieses Dokument beschreibt ein Speicherleck im Zusammenhang mit einem Cisco Catalyst 9800 Wireless LAN Controller (WLC).
Speicherleck
Weist ein Programm oder Prozess Speicher für die vorübergehende Verwendung zu und gibt ihn nicht korrekt frei, wenn er nicht mehr benötigt wird, so bleibt dieser Speicher aus Sicht des Betriebssystems belegt. Wenn der Prozess weiterläuft und wiederholt keinen Speicher freizugeben vermag, wächst die vom Prozess insgesamt genutzte Speichermenge, und für andere Prozesse und Systemfunktionen steht weniger Speicher zur Verfügung. Speicherlecks werden normalerweise durch Softwarefehler oder Probleme in der System-Firmware oder den darauf ausgeführten Anwendungen verursacht.
Bei einem Cisco Catalyst 9800 WLC kann sich ein Speicherleck wie folgt manifestieren:
- Geringere Leistung: Da immer mehr Speicher knapp wird, verlangsamt sich der WLC möglicherweise, was zu langsameren Reaktionszeiten bei Managementfunktionen oder einer geringeren Leistung der mit dem Netzwerk verbundenen Client-Geräte führt.
- Systeminstabilität: Kritische Prozesse können ausfallen, was dazu führen kann, dass Client-Verbindungen unterbrochen werden, der WLC nicht mehr verwaltet werden kann oder andere unberechenbare Verhaltensweisen auftreten.
- Systemabstürze: In schweren Fällen kann der WLC abstürzen und neu starten, insbesondere wenn ihm der Arbeitsspeicher für wesentliche Vorgänge ausgeht.
Anmerkung: Bei 9800 WLC kann es zu einem plötzlichen Neustart/Absturz kommen, um den ausgelaufenen Speicher zurückzugewinnen und sich selbst wiederherzustellen. Da ein Speicherleck ein fehlerhaftes Verhalten ist, treten Lecks auch nach einem Neustart auf, es sei denn, das Leck, das die Konfiguration/Funktion verursacht, ist deaktiviert.
Syslog
%PLATFORM-4-ELEMENT_WARNUNG:R0/0: smand: Der Wert des verwendeten RP/0-Speichers liegt um 91 % über dem Warnwert um 88 %.
Diese Meldung druckt den Namen des Prozesses mit den drei höchsten Speicherbelegungen zusammen mit dem Ablaufverfolgungsschlüssel, der Anrufstandort-ID und Diff-Aufrufen:
%PLATFORM-4-ELEMENT_WARNUNG: Chassis 1 R0/0: smand: 1/RP/0: Der Wert des verwendeten Speichers (91 %) überschreitet die Warnstufe (88 %). Die wichtigsten Speicherzuweisungen sind: Prozess: sessmgrd_rp_0. Ablaufverfolgung: 1#258b8858a63c7998252e96352473c9c6 Anrufstandort-ID: 11B8F825A8768000 (diff_call: 20941). Prozess: fman_fp_image_fp_0. Schlüssel: 1#36b34d8e636a89f6397a3b12acab9706 Anrufsstandort-ID: 1944E78DF68EC002 (diff_call: 19887). Prozess: linux_Cisco IOSd-imag_rp_0. Schlüssel: 1#8ec74901dc8e23a44e060e69d5820ece-Anrufsstandort-ID: E2AA338E11594003 (diff_call: 13404).
Identifizierung von Speicherverlusten beim 9800 WLC
Speicherlecks müssen schnell behoben werden, da sie die Stabilität und Zuverlässigkeit der vom WLC bereitgestellten Netzwerkdienste beeinträchtigen können. Um ein Speicherleck auf einem WLC zu diagnostizieren, können Sie verschiedene Befehle in der CLI verwenden, um die Speichernutzung über einen längeren Zeitraum zu überwachen. Sie können nach Prozessen suchen, die eine zunehmende Speichermenge nutzen, ohne sie freizugeben, oder nach Mustern, die darauf hinweisen, dass Speicher nicht wie erwartet wiederhergestellt wird.
Überprüfen Sie, wie viel Speicher der Plattform insgesamt zugewiesen ist.
9800WLC#show version | in memory
cisco C9800-L-F-K9 (KATAR) processor (revision KATAR) with 1634914K/6147K bytes of memory.
32768K bytes of non-volatile configuration memory.
16777216K bytes of physical memory.
!! Determines Total platform memory available, Here it is 16GB
Überprüfen Sie, wie viel Speicher jedem Pool zugewiesen ist.
9800WLC#show processes memory
Processor Pool Total: 1674013452 Used: 823578520 Free: 850434932
reserve P Pool Total: 102404 Used: 88 Free: 102316
lsmpi_io Pool Total: 6295128 Used: 6294296 Free: 832
Überprüfen Sie die Ressourcennutzung, einschließlich der Speichernutzung. Wenn der Wert die Warnstufe oder die Stufe Kritisch überschreitet, kann dies auf ein potenzielles Speicherleck hinweisen.
Speichernutzung auf 9800 WLC
Überwachung der gesamten Speichernutzung für Ressourcen auf Kontrollebene
9800WLC#show platform software status control-processor brief
Slot Status 1-Min 5-Min 15-Min
1-RP0 Healthy 0.52 0.75 0.80
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
1-RP0 Healthy 16327028 4898110(30%) 114218918 (70%) 5387920 (33%)
Überwachen Sie die zugewiesene und verwendete Speichergröße für die Hauptprozesse. Wenn die Speichernutzung weiter zunimmt, während der freie Speicher unverändert bleibt oder zu niedrig ist, besteht eine hohe Wahrscheinlichkeit eines Speicherverlusts auf Cisco IOSd-Ebene.
Speicherstatus pro Prozess, beginnend mit dem höchsten Halteprozess
Bei Speicherverlusten auf Plattformebene sollten Sie die RSS-Zähler (Resident Set Size) überwachen. RSS gibt die Speichermenge an, die einem Prozess während der Ausführung zugewiesen wurde. Wenn dieser Wert schnell ansteigt, kann dies auf ein potenzielles Speicherleck hinweisen.
Plattform verarbeitet Speichernutzung aus der höchsten Holding
Fehlerbehebung: Speicherleck im Cisco IOS®-Prozess
In Cisco IOS XE wird Cisco IOS als Prozess (Daemon) betrieben, der auf dem Linux-Kernel ausgeführt wird. Dieser Vorgang wird als Cisco IOSd bezeichnet. In der Regel wird Cisco IOSd zwischen 35 % und 50 % des insgesamt verfügbaren Plattform-DRAMs zugewiesen.
Grundlegende Protokolle von WLC
Aktivieren Sie Zeitstempel, um eine Zeitreferenz für alle Befehle zu erhalten.
9800WLC#term exec prompt timestamp
So überprüfen Sie die Konfiguration und die speicherbezogenen Informationen:
9800WLC#show tech-support wireless
9800WLC#show tech-support memory
Sammeln Sie die Core Dump-Datei oder den Systembericht, falls generiert.
Über GUI
Navigieren Sie zu Troubleshooting > Core Dumps and System Report
.
Bericht zu Core Dump und System
Über CLI
9800WLC#show bootflash: | in core/system-report
9800WLC#copy bootflash:system-report/Core_file {tftp: | ftp: | https: ..}
Für Prozessorspeicherpool
Prüfen Sie den Speicher pro Prozess ab dem höchsten Haltevorgang.
9800WLC#show process memory sorted
Überprüfen Sie die Gesamtspeicherstatistiken für den betreffenden Pool. Außerdem werden der größte freie Block und der niedrigste verfügbare Speicher seit dem Start angezeigt.
9800WLC#show memory Statistics
Überprüfen Sie den Programmzähler (PC), der eine große Speichermenge zugewiesen hat.
9800WLC#show memory allocation-process totals
Überprüfen Sie undichte Blöcke und Blöcke.
9800WLC#show memory debug leak chunks
!!This is CPU intensive cli and use only if above CLI output is not helping.
Für IO-Speicherpool
Prüfen Sie die obersten Zuteilungen.
9800WLC#show memory io allocating-process totals
Wenn der oberste Zuweiser Packet Data oder Pool Manager ist, überprüfen Sie, welcher caller_pc eine große Anzahl von Puffern angefordert hat.
9800WLC#show buffers
9800WLC#show buffers usage
Wenn der oberste Zuweiser ausgeführt wird mananged_chunk_process()
oder Chunk Manager
verarbeitet wird, bedeutet dies, dass ein oder mehrere Blöcke eine große Speichermenge zuweisen.
9800WLC#show chunk summary
9800WLC#show chunk brief
Wenn der Prozess MallocLite ist der Top-Allocator.
9800WLC#show memory lite-chunks totals
9800WLC#show memory lite-chunks stats
Fehlerbehebung Speicherleck auf Polaris-/Plattformebene
Überprüfen Sie die Speichernutzung % auf verfügbare Speicherressourcen auf der Plattform.
9800WLC#show Platform resources
Überprüfen Sie den gesamten Systemspeicher-Snapshot.
9800WLC#show platform software process slot chassis active R0 Monitor | in Mem
Überprüfen Sie alle Plattformprozesse nach Speicher sortiert.
9800WLC#show process memory platform sorted
9800WLC#show platform software process memory chassid active r0 all sorted
Überprüfen Sie den Status der Anrufstandorte für die letzte Stunde.
9800WLC#show process memory platform accounting
Wählen Sie aus den beiden vorherigen CLI-Ausgaben den oberen Contender aus, und aktivieren Sie die Debugging-Funktionen für die einzelnen Prozesse.
9800WLC#debug platform software memory
chassis <1-2/active/standby> R0 alloc callsite stop
9800WLC#debug platform software memory
chassis <1-2/active/standby> R0 alloc callsite clear
9800WLC#debug platform software memory
chassis <1-2/active/standby> R0 alloc backtrace start
depth 10
9800WLC#debug platform software memory
chassis <1-2/active/standby> R0 alloc callsite start
!! Running these debugs has no impact to device
Erfassen Sie die Ausgabe einige Minuten (15 Minuten bis eine Stunde) nach dem Initiieren der Fehlersuche.
9800WLC#show platform software memory
chassis <1-2/active/standby> R0 alloc backtrace
!! Capture this output three times, with a 5-10 minutes interval between each capture, to identify the pattern.
Überprüfen Sie, ob call_diff, reserviert und gibt Werte mit dem entsprechenden Backtrace für jeden Prozess frei.
9800WLC#show platform software memory
chassis <1-2/active/standby> R0 alloc callsite brief
Anmerkung: call_diff = Zuweisungen - Frei
Wenn allocs = frees, kein Speicherleck
Wenn Frei = 0, Speicherleck
Wenn Allocs != frei sind, vielleicht oder vielleicht nicht, ein Speicherleck sein (Wenn call_diff mehr ist, weist dies auf hohe Wahrscheinlichkeit eines Speicherlecks hin)
Erfassen von Daten des Datenbankspeichers für einen einzelnen Prozess.
9800WLC#show platform software memory
chassis <1-2/active/standby>active R0 alloc type data brief
9800WLC#show platform software memory database
chassis <1-2/active/standby> chassis active R0 brief
Überprüfen Sie die Systembereitstellungsinformationen, um die Speichernutzung für das temporär erstellte virtuelle Dateisystem zu überprüfen.
9800WLC#show platform software mount
Empfehlung
Empfehlungen zu Arbeitsspeicher und Skalierungsbeschränkungen finden Sie in den entsprechenden Konfigurationsanleitungen, Datenblättern und Versionshinweisen. Stellen Sie sicher, dass der WLC auf die neueste empfohlene Version aktualisiert wird.
Zugehörige Informationen