4 Stimmen

Wie kann ich Seitenaufrufe mit Speicherspitzen korrelieren?

Ich habe einige Speicherprobleme mit einer Anwendung, aber es ist ein bisschen schwierig herauszufinden, wo genau das Problem liegt. Ich habe zwei Sätze von Daten:

Seitenaufrufe

  • Die Seite, die angefordert wurde
  • Die Zeit, zu der die Seite angefordert wurde

Speicherverbrauch

  • Die Menge des genutzten Speichers
  • Die Zeit, zu der diese Speichernutzung aufgezeichnet wurde

Ich würde gerne genau sehen, welche Seitenaufrufe mit einer hohen Speichernutzung korreliert sind. Ich vermute, dass ich eine Art T-Test durchführen werde, um festzustellen, welche Seitenaufrufe mit einer erhöhten Speichernutzung korreliert sind. Ich bin mir jedoch nicht ganz sicher, welche Art von T-Test ich verwenden soll. Kann mir jemand wenigstens die richtige Richtung weisen?

3voto

Grembo Punkte 1207

Jason,

Sie stellen gute statistische Fragen. Stellen Sie sich den verwendeten Speicherplatz als eine Zufallsvariable vor. Der erste Schritt besteht darin, die Verteilung dieser Zufallsvariable zu untersuchen. Sie passt vielleicht nicht zu einer bekannten Verteilung, aber das sollte uns nicht davon abhalten. Ein einfacher Ansatz wäre, die höchste Speichernutzung (die obersten 5-10 %) zu nehmen und zu sehen, ob diese Seitenaufrufe (oder die Zeiten, zu denen sie angefordert wurden) sich von den Seitenaufrufen für den Rest unterscheiden. Ich denke, Sie benötigen einen nicht-parametrischen Test, der den Anteil der Seitenaufrufe der Stichprobe mit geringem Speicherbedarf mit dem Anteil der Seitenaufrufe der Stichprobe mit hohem Speicherbedarf vergleicht. Ich hoffe, das hilft.

3voto

George Dontas Punkte 28585

Ich würde vorschlagen, einen Datensatz mit zwei Spalten zu erstellen. Die erste wäre der Anteil jeder Seite, die in den Zeiten der höchsten Speichernutzung der Verteilung auftritt, und die zweite der Anteil dieser (gleichen) Seiten für den Rest der Werte der Speicherverteilung.

Dann müssten Sie einen gepaarten Test durchführen, um zu prüfen, ob der Median der Differenzen (hoch - Rest) kleiner oder gleich Null ist (H0), gegenüber der Alternativhypothese, dass der Median der Differenz größer als Null ist (H1). Ich würde vorschlagen, den nicht parametrischen Test zu verwenden Wilcoxon Signed Ranks Test was eine Abwandlung ist von Mann - Whitney Test für gepaarte Stichproben. Er berücksichtigt auch die Größe der Unterschiede in jedem Paar, was bei anderen Tests (z. B. Vorzeichentest) nicht berücksichtigt wird.

Beachten Sie, dass Gleichstände (Nullunterschiede) bei der Ableitung nichtparametrischer Methoden zahlreiche Probleme aufwerfen und vermieden werden sollten. Der beste Weg, mit Gleichständen umzugehen, ist, den Daten ein wenig "Rauschen" hinzuzufügen. Das heißt, dass der Test nach der Änderung der gebundenen Werte durch Hinzufügen einer Zufallsvariablen, die klein genug ist, um die Rangfolge der Unterschiede nicht zu beeinflussen, abgeschlossen wird.

Ich hoffe, dass die Ergebnisse des Tests und die grafische Darstellung der Verteilung der Differenzen Ihnen Aufschluss darüber geben, wo das Problem liegt.

Dies ist eine Implementierung von Wilcoxon Signed Ranks Test en R-Sprache

1voto

Theran Punkte 3746

Die von Ihnen aufgeworfene Frage ist sicherlich ein interessantes statistisches Problem, aber darf ich stattdessen einen grafischen Ansatz mit einer guten alten Tabellenkalkulation vorschlagen?

Weisen Sie jeder Ihrer Seiten eine eindeutige Nummer zu, und erstellen Sie ein Streudiagramm zwischen Seitennummer und Speicherverbrauch. Sie sollten eine Reihe von vertikalen Linien mit Markern erhalten. Hoffentlich wird der Übeltäter offensichtlich sein.

Wenn es so viele Datenpunkte gibt, dass die Linien durchgängig werden, können Sie den Seitenzahlen eine kleine Menge Rauschen hinzufügen, um die Linien zu verbreitern. Wenn sich die Anfragen überschneiden, müssen Sie möglicherweise Tricks ausprobieren, wie z. B. die Division des Speichers durch die Anzahl der gleichzeitigen Anfragen, aber Ihr Auge sollte in der Lage sein, den Übeltäter auch mit viel Rauschen zu erkennen.

1voto

George Dontas Punkte 28585

Hier eine weitere Idee: Wenn Sie in der Lage sind, Seitenaufrufe und Speichernutzung anhand der Zeitstempelwerte zu verknüpfen, könnten Sie eine Tabelle wie diese erstellen

Seite A | Seite B | Seite C | Seite D | Seite E |....| Speicher_Verwendung

Der Wert für jede der Seitenspalten kann ein Bit [0,1] sein, das anzeigt, ob die Seite angefordert wurde oder nicht, oder eine Anzahl von Seiten, abhängig von Ihren Daten. In der Spalte "Memory_use" könnten Sie die entsprechenden Anteile der Speicherauslastung oder die Anzahl in MB angeben. Auf diese Weise kann man sich die Speichernutzung als abhängige Variable und die Seiten als erklärende Variablen vorstellen. Sie könnten also ein geeignetes (je nach Form der abhängigen Variable) verallgemeinertes lineares Modell an diesen Datensatz anpassen. Die Ergebnisse dieser Analyse werden Ihnen Aufschluss über Folgendes geben

-Welche Seiten den Wert der Speichernutzung wesentlich beeinflussen

-den Anteil jeder Seite an der Belastung (durch ihren Koeffizienten im Modell)

-Die Möglichkeit, dass andere, nicht gemessene Faktoren eine bedeutende Rolle bei der Gedächtnisbelastung spielen (Überdispersion), wobei sich im schlimmsten Fall alle Prädiktorvariablen als unwichtig erweisen könnten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X