Skip to content

Kleine Basisarbeiten am Server

Die letzten Tage waren die Newsticker voll von einer Schlagzeile: Die Schaltsekunde!

In der Nacht zum 01.07. ist mal wieder eine Schaltsekunde eingefügt worden, um die Verluste auszugleichen. Der Linux-Kernel stolpert dabei leider in einigen Versionen und erzeugt eine Endlosschleife, die die CPU mal kurz auf 100% laufen lässt. Die Mail von Hetzner in meinem Postfach hat dabei den ersten Platz gewonnen. Die haben in den Statistiken einen schönen Stromanstieg im 1 Megawatt zum Zeitpunkt der Einführung der Schaltsekunde gemessen. und da dieser "Peak" auch Tage später noch anhält, wurden alle Kunden aufgefordert ihren Server zu checken und ggf. zu rebooten.

Beim Check haben sich auch gleich ein paar Sachen ergeben, die ich im Themenkreis "Stromsparen" gleich mit gecheckt habe.

Neue CPUs können die Taktfrequenz reduzieren, um Strom zu sparen. Unter Linux kann dieses Verhalten mit der Software "cpufrequtils" erledigt werden. Mit dem gleichnamigen Debian-Packet installiert sich die Konfig-Dateiei /etc/default/cpufrequtils. Der GOVERNOR stellt dabei ein, wie sich die CPU verhalten soll. Bei mir war das per Default "performance", was so viel wie "immer auf max speed" bedeutet. Ein Einfaches Umstellen auf ondemand sorgt dafür, dass die CPU sich in ruhigen Zeiten runtertaktet. Kontrollieren lässt sich das mit dem Befehl cpufreq-info:


# cpufreq-info
cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@lists.linux.org.uk, please.
analyzing CPU 0:
driver: powernow-k8
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 2.80 GHz
available frequency steps: 2.80 GHz, 2.60 GHz, 2.40 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
available cpufreq governors: conservative, powersave, userspace, ondemand, performance
current policy: frequency should be within 1000 MHz and 2.80 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1000 MHz (asserted by call to hardware).
cpufreq stats: 2.80 GHz:99.35%, 2.60 GHz:0.00%, 2.40 GHz:0.00%, 2.20 GHz:0.00%, 2.00 GHz:0.00%, 1.80 GHz:0.02%, 1000 MHz:0.63% (10253)
analyzing CPU 1:
driver: powernow-k8
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 2.80 GHz
available frequency steps: 2.80 GHz, 2.60 GHz, 2.40 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
available cpufreq governors: conservative, powersave, userspace, ondemand, performance
current policy: frequency should be within 1000 MHz and 2.80 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1000 MHz (asserted by call to hardware).
cpufreq stats: 2.80 GHz:99.35%, 2.60 GHz:0.00%, 2.40 GHz:0.00%, 2.20 GHz:0.00%, 2.00 GHz:0.00%, 1.80 GHz:0.02%, 1000 MHz:0.63% (10253)


Wichtig sind dabei die Zeilen "current policy" und "current CPU frequency". Dort ist zu sehen, dass meine CPU aktuell auf 1GHz gelaufen ist. Der Rest verrät mir dann auch gleich noch ein bischen über die Fähigkeiten der CPU.

Eine weitere kleine Vorkehrung, die ich inzwischen immer aktiviere, ist der Parameter "noatime" beim mounten von Dateisystemen. Einmal die /etc/fstab gecheckt und schon war zu sehen, dass dies auf dem Server noch nicht aktiv ist. noatime verhindert, dass die Access-Time einer Datei, also der letzte Zugriff auf diese Datei, in der Inode gespeichert wird. Dieser unscheinbare kleine Schalter macht also aus jeder Lese-Operation auch gleich ein Schreibzugriff auf das rotierende Rost. Das kostet Zeit, drückt auf die Geschwindigkeit und verbraucht (wenn auch nur in geringen Mengen) mehr Strom. Also abschalten...

In der fstab wird dazu die Spalte der Mountoptionen angepasst.

/dev/md2 / ext3 defaults,noatime 0 0

Da die fstab nur beim mounten eingelesen wird, müsste ich den Server rebooten. Will ich aber nicht. Also fix ein remount abgeschickt:


# mount -o remount /


Danach ist die noatime-Einstellung für die Platte gesetzt und ein Lesezugriff bleibt ein Lesezugriff. Checken kann man das ebenfalls mit mount:

# mount
/dev/md2 on / type ext3 (rw,noatime)


Es gibt bestimmt noch mehr kleine Tips zum Energiesparen oder Performance erhöhen. Wenn Ihr welche habt, hinterlasst sie einfach als Kommentar unter diesem Beitrag.

Ich brauch mehr Käffchen...

Dieser Titel entwickelt sich wahrscheinlich zu einem Dauerbrenner, aber diese sprachliche Unqualität wollte ich Euch nicht vorenthalten.
Wer bei dieser Rechtschreibung noch auf den Link klickt, hat selber schuld...


From: WEBMAIL ADMIN
Sent: Tuesday, June 05, 2012 12:01 PM
To: undisclosed-recipients:
Subject: ACHTUNG ACHTUNG (QUOTE ALERT)

Sehr geehrte Benutzer E-Mail,

Ihr Postfach hat es die Quote überschritten. Sie können nicht senden oder empfangen neue E-Mails, bis Sie Ihre account.if revalidate Sie nicht aktualisieren Sie Ihre E-Mail-Konto im Jahr 2012, müssen Sie es jetzt tun. Sie können erweitern 1GB E-Mail-Kontingent, verwenden Sie folgenden Link an:

[URL-AUS-SICHERHEITSGRÜNDEN-GELÖSCHT]

Warnung!
Wenn Sie dies nicht tun, werden in begrenztem Zugang zu Ihrem Postfach zur Folge haben. Scheitern auf Ihr Konto innerhalb von drei Tagen von diesem Update-Benachrichtigung aktualisieren, wird Ihr Konto dauerhaft geschlossen werden.

Danke fuer die Benutzung unserer Web-Mail.

unterzeichnet
Es ist Service!
Copyright © 2012 System Administrator ®

PHP-Syntaxcheck mit vim

Mit PHP ist das so eine Sache. Bei den meisten Einbrüchen auf Webservern, die ich bearbeitet, kreist die Ursache immer wieder um ein und die selbe Programmiersprache. Der Grund dafür liegt zum einen in der großen Beliebtheit von PHP und zum anderen wohl in der noch größeren Anzahl an C&P-Programmierern in diesem Umfeld. Als Webserver-Admin ist das also eine Programmiersprache, um die man häufig nicht herum kommt.

Immer wieder schaue ich dort über den Tellerrand und versuche den "Programmierern" beizubringen, wie man den Code wenigstens einigermaßen sicher bekommt. Dafür will ich mich natürlich nicht mit irgend welchen großen Entwicklungsumgebungen auseinander setzen. Sowas macht man mit vim. Damit ich bei meinen Demos wenigstens ein Grundmaß an Funktionalität habe und vor allem weil das Programmiersprachenhoping bei mir immer mal wieder zu Syntaxfehlern führt, prüfe ich meinen Code vor dem Upload auf Syntaxfehler. Mit einer einzigen Zeile in der ~/.vimrc bringe ich dem vim bei, dies auf den Druck von F9 zu tun:

map <f9> :w<CR>:!php -l %<CR>

... und vorbei ist die Zeit in der man die Syntaxfehler erst nach dem Upload zu sehen bekommt. Lokal muss auf der Workstation dafür allerdings ein php installiert sein...

Teile eines git Repositorys per FTP veröffentlichen

Auf der Suche nach einer Pflegemöglichkeit für "alten" Webspace bin ich heute auf git-ftp gestoßen. Seit dem ich mit git infiziert wurde, wandern Webseiten oder Projekte, die ich übernehme, als erstes in ein git-Repository. Nur hab ich dann noch den manuellen Aufwand, die geänderten Dateien auf den Webserver hochzuladen.

Dank git-ftp konfiguriere ich die Upload-Parameter (Server, Benutzername, Passwort) jetzt einmal mit git-config und gebe dazu noch das Unterverzeichnis des Repositorys an, welches hochgeladen werden soll. Seit dem heisst es nurnoch "git ftp push" und die Dateien auf dem Server sind aktualisiert.

Dabei wird in einer kleinen Textdatei auf dem FTP-Server der zuletzt veröffentlichte Commit-Hash gespeichert. Bei einem erneuten Push wird diese Datei geladen und nur die veränderten Files hochgeladen. Das .git-Verzeichnis mit den eigentlichen Repository-Informationen wird dabei nicht übertragen. Es ist also nur ein Upload der Nutzdaten.

Auf weitere Details der Konfig geh ich hier mal nicht ein. Ein "git ftp help" fördert nach der Installation alles zu Tage, was man benötigt.

Linux Notausgang

Normalerweise ist sowas ja nicht notwendig. Aber ab und an hängt sich doch mal eine GUI auf. Bei mir beliebt bei bestimmten Grafiktreibern, die nur Binär vorliegen und ohne die die Grafikkarten des nicht näher benannten Herstellers nur das Mindestmaß an Funktionalität zur Verfügung stellen.

Im Admin-Magazin ist ein kleiner Admin-Tip veröffentlicht worden, wie man in solchen Fällen den Totalreset evtl. vermeiden kann...

Admin-Tip: Notausgang

cronjob