13.112013

Memcache analysieren mit MCTop

Hallo liebe Entwickler und / oder Sysadmins. Ich werde euch heute mal etwas zeigen und präsentieren, was ihr schon immer gesucht habt, wenn ihr euren Memcache analysieren wollt. Ihr wollt euch mal anschauen, wie gut euer Memcache funktioniert? Was wird überhaupt gecached, bzw was speichert ihr ab und welche Keys verbauchen extrem viel Bandbreite oder gar Speicher? Dann habe ich nun genau das richtige Tool gefunden, mit dem ich diese Woche nun meine Zeit rumgeschlagen habe.

Das Tool, mit dem ich die Woche nun gearbeitet habe und welches ich euch vorstellen möchte, nennt sich MCTOP was sehr an top/htop angelehnt ist und euch Aufschluß darüber gibt, welche Keys wie oft angefragt werden, welche größe die Keys haben, wie oft pro Sekunde diese angefragt werden und welche Bandbreite sie verbrauchen.

Ihr bekommt es mit einer schönen Ausführlichen Beschreibung und Anleitung wie es zu installieren geht unter https://github.com/etsy/mctop/ was auch gleichzeitig das GIT Repo für das Tool ist.

Ich werde es dennoch kurz erklären, wie ich es installieren könnt und werde in kleinen Beispielen zeigen, was man dort erkennen kann.

Zuerst sei gesagt, dass es sich bei dem Programm um ein Ruby Tool handelt. Also benötigt ihr (Beispiel Ubuntu) den ruby-bundler und zusätzlich noch libpcap-dev um das Programm zu bauen. Wenn ihr das habt, cloned ihr euch das GIT Repo und führt in dem Hauptverzeichnis vom Repo bundle install aus. Wenn das Abgeschlossen ist noch rake install und danach könnt ihr mittels mctop das Tool starten.

Das Programm ist im Grunde nur ein Sniffer, der den gesamten Traffic auf einem Server analysiert und ausgewertet ausgibt. Also empfiehlt es sich das Tool auf euren Webservern oder Memcache Servern zu installieren (anders wäre es ziemlich sinnfrei*g*).

Eine Ansicht kann z.B. wie folgt aussehen:

memcache key                                                                                  calls   objsize   req/sec  bw(kbps)
Cachekey::651321564984321                                                                     25627        58     24.09     11.18
Cachekey::897954614345345                                                                      4681        10      4.40      0.35
Cachekey::123456789123456                                                                      4326        56      4.07      1.82
Cachekey::456789123456789                                                                      4188      2278      3.94     71.75
sort mode: calls (desc)      keys: 105126   packets (recv/dropped): 1155 / 0 ( 0.00%)                     rt:  163.168 (ms)
Q:quit | C:sort by calls | S:sort by size | R:sort by req/sec | B:sort by bandwidth | T:toggle sort order (asc|desc)

Hier sieht man schon, dass man über die verschiedenen Tasten, unterschiedlich Sortieren kann.

Mir hat das Tool sehr geholfen und ich konnte damit mich mittlerweile gut stellen. Außerdem habe ich rausgefunden, wo welche Keys gut gesetzt sind und wo man noch was genau optimieren sollte/könnte. Ich hoffe es bringt euch auch weiter und ihr habt ebenfalls einen Erfolg damit.

Bis zum nächsten mal, euer Mark.