Author Archive

MySQL: Query Cache

Wenn die wichtigsten Tuningeinstellungen für MySQL gemacht sind, lohnt es sich, auch einen Blick auf den Query Cache zu werfen. Dieser speichert das Ergebnis von SQL-Abfragen und kann es somit bei Bedarf aus dem Arbeitsspeicher wiedergeben. Gerade für abfragen, die auf Webseiten live ausgeführt und deren Ergebnis aus irgendeinem Grund nicht auf dem Webserver gecacht wird, dürfte das interessant sein. Im Wesentlichen beschränkt sich die Konfiguration auf die folgenden Angaben:


query_cache_type=1
query_cache_size=6M
query_cache_limit=1M

Zuerst wird der cache aktiviert, dann wird die Größe bestimmt und schließlich der maximale Speicherplatz pro zwischengespeicherter Abfrage angegeben.

Um zu sehen, wie sich der query cache macht, kann man diese Abfrage benutzen:

SHOW STATUS LIKE 'Qcache%';

Im Ergebnis bekommt man dann einen Eindruck, wir gut der Cache genutzt wird, indem man das Verhältnis von Hits und inserts betrachtet:

+-------------------------+---------+
| Variable_name           | Value   |
+-------------------------+---------+
| Qcache_free_blocks      |      81 |
| Qcache_free_memory      | 4412528 |
| Qcache_hits             |    3809 |
| Qcache_inserts          |    1355 |
| Qcache_lowmem_prunes    |       0 |
| Qcache_not_cached       |     309 |
| Qcache_queries_in_cache |     650 |
| Qcache_total_blocks     |    1425 |
+-------------------------+---------+

Übrigens: Einzelne Einträge im query cache werden entfernt, wenn sich in der Datenbank an entsprechende Stelle etwas ändert. Man bekommt also immer frische Ware.

GridView: Zahlen formatieren

Ich musste heute in einer GridView Zahlen formatieren, und zwar mit Tausender-Trennzeichen. Eigentlich kein Problem, wie bei der guten alten DataGrid als format string {0:###,###} eintragen. Dummerweise hat das nichts gebracht. Die Lösung war denkbar einfach: Man muss für die betreffende Zelle das HTML encoding abschalten.

Clavister: How to add an additional IP address to an interface?

What if you need an additional IP address on one of the security gateway’s interfaces?

After searching the cfw-users mailing list’s archive I found a solution:
Under Interfaces -> ARP I had to add an entry have the security gateway publish its arp address for the IP address on the desired interface:

Mode: Publish
Interface: Interface with the IP Address
IP Address: The IP Address to be published
MAC Address: 00:00:00:00:00:00

Source:
http://archive.netbsd.se/?ml=cfw-users&a=2006-12&m=2703752

Linux: Image von CD oder DVD erstellen

Unter Linux kann man mit dd komplette Datenträger auslesen und an eine beliebige Stelle schreiben. Um ein einfaches CD-Image zu erstellen, ist kein bedonderer Befehl nötig. Einfach die Quelle und das Ziel angeben:


dd if=/dev/cdrom of=image.iso

SQL Server 2005 – Wartungsplan lässt sich nicht anlegen

Ich habe SQL Server 2005 installiert und konnte keinen Wartungsplan anlegen.

Die Fehlermeldung:
(...) The specified '@subsystem' is invalid (valid values are returned by sp_enum_sqlagent_subsystems) (...)

Die Lösung:
Man muss SSIS (SQL Server Integration Services) nachinstallieren.

Wie installiert man SSIS?
Nicht so, wie man denkt. Über Software in der Systemsteuerung kommt man (entgegen Aussagen von Microsoft) nicht zu Ziel. Man muss von der Installations-CD noch einmal das Setup starten und bei der Auswahl der Komponenten nur SSIS auswählen. Dass bei allen anderen Komponenten steht, sie seien nach der Installation nicht verfügbar, muss man ignorieren. Das Setup installiert dann SSIS und man kann endlich Wartungspläne anlegen.

Typo3: leerer Bildschirm nach Installation

Für alle, die nach der Installation von Typo3 (z.B. auf Centos 5) nur einen leeren Bildschirm sehen:

Wenn das Paket php-mysql fehlt, bringt Typo3 nur einen leeren Bildschirm und keine Fehlermeldung.

Wie konnte ich das Paket auch vergessen … ?!

CentOS/RHEL 5: NFS für Firewall konfigurieren

NFS sucht sich bei jedem Start einige Netzwerk-Ports einfach so aus. Dummerweise bekommt das die Firewall, die zwischen NFS-Server und -Client sitzt, das nicht mit. Für Redhat Linux habe ich nun einen Weg gefunden, wie man erreichen kann, dass die Ports immer gleich bleiben, ohne die init-Scripts der Dienste anzufassen (diese Tipp habe ich gefunden und gleich verworfen):

/etc/sysconfig/nfs erstellen:

# NFS port numbers
STATD_PORT=10002
STATD_OUTGOING_PORT=10003
MOUNTD_PORT=10004
RQUOTAD_PORT=10005

/etc/modprobe.conf ergänzen:

options lockd nlm_tcpport=10000 nlm_udpport=10001

Mit diesen Regeln kann man iptables klar machen, was man möchte, außerdem zeigen sie, was man in der Firewall zwischen den Rechnern freigeben muss:

iptables -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 2049 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10001 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 10002:10005 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10002:10005 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
iptables -A OUTPUT -p tcp -m tcp --dport 111 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 111 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 2049 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 2049 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 10000 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 10001 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 10002:10005 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 10002:10005 -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable

Quelle: http://www.redhat.com/magazine/010aug05/departments/tips_tricks/

Konfigurationsdateien per SFTP kopieren

Dieses Script kopiert per SFTP eine feste Menge von Dateien von einem aufs andere System.
Da Kennwortauthentifizierung verwendet wird, eignet es sich nicht zur vollen Automatisierung. Ich starte es eben, wenn auf Server 1 Dateien verändert wurden, die auf Server 2 gleich sein sollen.

#!/bin/bash

configfiles="/etc/my.cnf /etc/resolv.conf /etc/hosts"
targetServer="ZIELSERVER"

for fil in $configfiles
do
 if [ -e $fil ]; then
  copylist+="PUT $fil $fil \n"
 else
  echo "File not found: $fil"
 fi
done

echo -e "$copylist" | sftp $targetServer

VMWare Server: Langsame Uhr in Linux-VMs

Auf einem VMWare-Server habe ich mehrere virtuelle Maschinen installiert. Alle Linux, bei allen geht die Uhr merklich langsamer, als sie dürfte. Diesen Umstand will ich nun so gut es geht, beheben.

Meine Gastsysteme laufen unter CentOS 5 (Kernel 2.6.18). Im Web habe ich gelesen, dass diese Zeitprobleme vorwiegend bei 2.6er-Kernels auftreten. Anscheinend hilft es, den Kernel mit einem modifizierten Wert für die Timer interrupt rate neu zu kompilieren, aber sowas mache ich nicht auf produktiven Maschinen.

Hinweise, denen ich demnächst nachgehen möchte:

  1. VMWare Tools installieren – anscheinend soll es gerade bei zu langsamen Uhren helfen und die Uhr laufend nachstellen. Nicht optimal, aber sicher schon einmal ein gute Gefühl, näher an der Realität zu sein
  2. Den Kernel mit folgenden Parametern booten: clocksource=pit nosmp noapic noalpic

Ich werde natürlich berichten, wie’s gelaufen ist.

Nachtrag:
Punkt 1 habe ich ausprobiert. Ich habe auf den VMs den ntpd gestoppt, die VMWare Tools installiert und auf dem Hostsystem die Synchronisierung aktiviert. Dann auf den VMs die Zeit gnadenlos zurückgedreht, watch -n1 date gestartet und eine Weile gewartet, und siehe da: die Zeit war identisch mit der auf dem Host. Ich habe entdeckt, dass die VMs sogar laufend vom Host nachjustiert werden. Wenn ich jetzt also den Host noch mit einer guten Uhrzeit versorge, dürfte das auf dem VMs auch ausreichend passen.

Quellen:
http://www.centos.org/modules/newbb/viewtopic.php?post_id=29548&topic_id=9272
http://www.esuna.co.uk/~jay/?p=118

Ein ISO-Image mounten

Ganz einfach:
mount -o loop -t iso9660 file.iso /mnt/test