Tenebrias

~ Ein Spiegel für den Winter meiner Seele ~

Weblog-Archiv für 14. Februar 2008

Detektivarbeit mit Statspack

Verfasst von Tenebrias am 14.02.2008 - 17:12

Edit: Narv. Morgen mal gucken, wie man diese überbreiten Sachen ohne Informationsverlust in das Blog bekommt. Hier fehlt ja die Hälfte. -.-

Seit zwei Tagen rattert eine unsere Datenbanken wie irre, macht die CPU ihrer Zone vollständig dicht. Bis jetzt scheint zwar alles glatt zu laufen, denn vom Kunden kam noch keinerlei Beschwerde über Wartezeiten, aber ich schaue mir das dennoch mal an. Im GridControl sehe ich faktisch: Nichts.

CPU

Mhm. Die Sessions sehen allesamt völlig normal aus, aber dennoch drehen wir mit der CPU an der Obergrenze. Also werde ich mal einen Blick in den Statspack-Report werfen.

Und der kommt nicht zurück. Mhm. Da muss doch etwas blockieren. Ok…

SQL> select sid, event, wait_time, seconds_in_wait, state from v$session_wait where sid = 88;
       SID EVENT                           WAIT_TIME SECONDS_IN_WAIT STATE  
---------- ------------------------------ ---------- --------------- --------------------------------------------------------- 
         88 db file scattered read                  0               0 WAITING
1 row selected.

Hum. Ein paarmal hintereinander zeigt mir: Der tut schon. Keine anderen Waits als db_file_scattered_read, der mir sagt: Da rutscht er mit Full-Table-Scans auf Tabellen rum.

Also eher IO als CPU. Aber warum wird der einfach nicht fertig?

Warten .. und dann ist der Lauf endlich fertig. Schauen wir mal

Load Profile
~~~~~~~~~~~~                            Per Second       Per Transaction
                                   ---------------       ---------------
                  Redo size:             43,273.30              5,539.68
              Logical reads:             15,801.36              2,022.83
              Block changes:                310.33                 39.73
             Physical reads:                 14.00                  1.79
            Physical writes:                  9.94                  1.27
                 User calls:              1,331.36                170.43
                     Parses:                526.48                 67.40
                Hard parses:                 97.84                 12.53
                      Sorts:                146.20                 18.72
                     Logons:                  0.14                  0.02
                   Executes:              1,871.40                239.57
               Transactions:                  7.81

Wir haben also 1871 Statements, die pro Sekunde ausgeführt werden, 526 Parses und 97 Hardparses. Das sieht schonmal nicht gut aus, aber letztlich sind das immer Werte zum Vergleichen. Eine Woche zurückgeschaut finde ich: 1918 Statements, 542 Parses und 95 Hardparses.

Faktischer Unterschied also Null.

Gucken wir also mal weiter.

  Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            Buffer Nowait %:  100.00       Redo NoWait %:    100.00
            Buffer  Hit   %:   99.91    In-memory Sort %:    100.00
            Library Hit   %:   95.03        Soft Parse %:     81.42
         Execute to Parse %:   71.87         Latch Hit %:     99.92
Parse CPU to Parse Elapsd %:   26.50     % Non-Parse CPU:     73.06

Sieht soweit gut aus und unterscheidet sich nur an einem Punkt wesentlich zur Woche vorher: Parse CPU to Parse Elapsd war da bei 54%. Das lasse ich für den Moment aber mal zur Seite und schaue weiter.

Top 5 Timed Events
~~~~~~~~~~~~~~~~~~                                                     % Total
Event                                               Waits    Time (s) Ela Time
-------------------------------------------- ------------ ----------- --------
log file sync                                     524,599      77,394    32.91
CPU time                                                       39,471    16.78
enqueue                                            89,730      39,021    16.59
log file parallel write                         1,168,951      20,537     8.73
latch free                                      1,826,071      19,317     8.21
          -------------------------------------------------------------

Das sieht doch schonmal Scheisse aus. 32% Waits auf log_file_sync – normalerweise sollte das auf einen zu großen log_buffer hindeuten, wäre er zu klein würden wir log_buffer_space-Waits bekommen. Mal schauen

 SQL> show parameter log_buffer

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
log_buffer                           integer                           2097152
SQL>

2 MB kann man nicht als Welt bezeichnen, allerdings hatten wir den erst am 31.01.2008 von 500K hochgedreht. Das war möglicherweise ein Stück zu viel.

Ich behalte das mal im Kopf und schaue weiter.

Die Wait-Events sehen entsprechend auch richtig schlecht aus. Die Waits für log_file_sync waren vor einer Woche bei 17, für db_file_parallel_write immerhin bei 97 und die buffer_busy_waits bei 19.

                                                                    Avg
                                                     Total Wait   wait    Waits
Event                               Waits   Timeouts   Time (s)   (ms)     /txn
---------------------------- ------------ ---------- ---------- ------ --------
log file sync                     524,599     40,688     77,394    148      0.8
enqueue                            89,730      7,729     39,021    435      0.1
log file parallel write         1,168,951          0     20,537     18      1.7
latch free                      1,826,071     59,743     19,317     11      2.7
buffer busy waits                  40,075     11,103     16,423    410      0.1
db file sequential read           334,602          0      9,963     30      0.5
db file parallel write             26,831          0      7,271    271      0.0

Na schön. Mal noch gucken, was die Platten generell so machen

------------------------------
                 Av      Av     Av                    Av        Buffer Av Buf
         Reads Reads/s Rd(ms) Blks/Rd       Writes Writes/s      Waits Wt(ms)
-------------- ------- ------ ------- ------------ -------- ---------- ------
LAM_INDEX
       306,564       4   30.6     1.4      533,907        6     19,935  180.5
UNDOTBS1
            89       0   23.7     1.0      217,187        3     18,923  674.7
QIP_INDEX
        14,995       0   30.1     1.5       46,062        1         49  920.2
LAM_DATA
        28,523       0   14.0    20.6       22,017        0      1,097  339.0
QIP_DATA
         2,632       0   26.3     8.3       23,207        0         60  601.7
PERFSTAT
         8,514       0   43.3    16.4        3,287        0          0    0.0
SYSTEM
         2,666       0   29.9     2.2          633        0         12  848.3

UGH?

Mal ganz davon abgesehen, dass die Zugriffsgeschwindigkeit beim lesen vor einer Woche nahezu doppelt so hoch war, sind die Avg Bufferwaits ja wohl die Hölle. 920 ms?

Vor einer Woche waren wir bei 39, was auch nicht toll, aber noch im Rahmen ist.

Was mach ich damit nun?

Spontan würde ich mit einem kleineren log_buffer und mehr buffercache ansetzen, auch wenn die HitRatio von 99,91 mehr als optimal ist.

Morgen muss ich das noch ein wenig genauer anschauen.

Veröffentlicht in Arbeit | Verschlagwortet mit : , , , , | Kommentar schreiben »

Sprachlos

Verfasst von Tenebrias am 14.02.2008 - 16:55

„Du bist ja heute ganz in Schwarz.“

Ich arbeite hier nun seit 5 Jahren. Und ich kann mich an keinen Tag erinnern, an dem ich etwas Andersfarbiges angehabt hätte.

Veröffentlicht in Arbeit | Kommentar schreiben »

Früher … ja früher .. da hat es noch geschneit

Verfasst von Tenebrias am 14.02.2008 - 14:31

Ok, ok. Ich bin kein wirklicher Winterfan. Es ist kalt, man kann nicht ordentlich laufen und ich getraue mich nicht mehr mit dem Fahrrad zur Arbeit zu kutschen.

Die Gefahr sich richtig auf die Nase zu legen, bestand allerdings das letzte Mal vor knapp über einem Jahr – für genau einen Tag. Ja… an einem Tag schneite es hier fröhlich knappe 15 cm dick und ich rannte in froher Hoffnung los um einen Schlitten für das Kind zu erwerben. Der wurde den Rest des Tages noch eingeweiht und wanderte schon am nächsten Morgen mangels vorhandenem Schnee wieder in den Keller – die gesamte Pracht hatte sich nach weniger als 24 Stunden schon aufgelöst.

Aber immerhin.. ein Tag lang Schnee. Ein Tag lang Winter. Sicher, es war irgendwann im letzten Dezember auch mal einige Tage kalt. Aber es gab einfach keinen Schnee – und irgendwie kann ich nur kalt ohne Weiss weniger leiden als kalt mit Schnee.

Langer Rede, kurzer Sinn: Früher … ja, da gab es noch Schnee. Damals.. im letzten Jahrtausend. Langsam habe ich den Verdacht, dass wir hier die wahre Ausprägung des verlachten Millenium-Bugs erleben.

Veröffentlicht in Leben | Verschlagwortet mit : , | Kommentar schreiben »

Dokumentation ist das halbe Leben. Ich lebe in der anderen Hälfte.

Verfasst von Tenebrias am 14.02.2008 - 12:24

Nicht dass ich behaupten würde meine Dokumentation ist absolut vollständig und würde alle Aspekte abdecken, auf die man als Uneingeweihter so stoßen kann, wenn man sich plötzlich mit einer marodierenden Datenbank konfrontiert sieht – aber wenn die Kollegen aus dem Bereich MSSQL-Server schon alle auf einer Tagung außer Haus sind, der garstige Cluster mitten in der Nacht verreckt und ich nicht einmal finde, wie man da irgendetwas starten und stoppen kann, läuft doch etwas falsch. :/

Die Kunden freuen sich ..

Veröffentlicht in Arbeit | Verschlagwortet mit : | Kommentar schreiben »

Wichtige Statistiken

Verfasst von Tenebrias am 14.02.2008 - 10:29

Dinge, die man einfach wissen muss: Rambos Kill Count

Veröffentlicht in Dies & Das | Verschlagwortet mit : | Kommentar schreiben »

Valentinstag

Verfasst von Tenebrias am 14.02.2008 - 10:25

Ich bin kein Fan verordneter Feiertage und terminangesetzter Festivitäten, gleichgültig ob nun Geburtstag, Silvester oder aktuell eben der Valentinstag. Gerade im Falle des Valentinstages hält sich der Nerv-Faktor auch erfreulich in Grenzen – oder ich schaue einfach zu wenig fern, um viel an Hinweisen, Aufforderungen, Geschenktipps und ähnlichem mitzubekommen. Damit bleibt ein gewisser Gleichmut, direkt gebunden an den festen Vorsatz schon aus Prinzip nicht die geringste Verbeugung vor dem jährlichen Nahen des 14. Februar zu machen.

Glücklicherweise weiss ich meine Frau an diesem Punkt auf meiner Seite, aber trotzdem bleibt ein gewisses Gefühl des Unbehagens: Ich will mich nicht darauf festlegen lassen an einem bestimmten Tag zum Sklaven einer konsuminduzierten Erwartungshaltung zu werden. Wenn ich etwas verschenken möchte, dann weil ich etwas verschenken möchte und nicht weil das Datum auf einen bestimmten Tag umspringt. Und dennoch die Frage: Wann habe ich das das letzte Mal gewollt?

Meine Frau hat mich erst vor zwei Tagen als „unaufmerksam“ beschrieben, wobei sich unaufmerksam nun entweder als „unkonzentriert“ oder „unsensibel“ interpretieren läßt. Ersteres würde nicht zutreffen, das Zweite dagegen schon.

Insofern kann ein Ereignis wie der Valentinstag eine Gelegenheit sein, ein Hinweis, wie ein leichter Schlag auf den Hinterkopf. Es ist natürlich trotzdem völlig unmöglich an diesem Tag etwas anzuschleppen. Aber vielleicht morgen. Wenn ich es bis dahin nicht vergessen habe.

Blog = Notizzettel..

Nachtrag zum Thema: Dinge, die ich nie wissen wollte

Veröffentlicht in Leben | Verschlagwortet mit : , | Kommentar schreiben »