Mittwoch, 23. Februar 2011

FreeBSD: 8.2-RELEASE jetzt upgraden

So, ich weiss ja nicht ob es schon jedem aufgefallen ist, aber das FreeBSD 8.2-RELEASE ist zum Upgrade verfügbar, ich habe es auch auf meinem ersten Server zuhause für Testzwecke versucht, während ich dem Reboot zukucke beginne ich dies hier zu schreiben... und es hat geklappt... also

Ein Upgrade ist mittlerweile auch keine Hexerei mehr wir beginnen als root mit einem
  • freebsd-update -r 8.2-RELEASE upgrade
Hiernach folegn dann viele Meldungen. Im groben beginnt er nun einzelne Pakete zu fetchen und die Installation vorzubereiten, es folgen ein paar Dialaoge im Stil von

The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs

Does this look reasonable (y/n)? y
diese können nach bestem Wissen beantwortet werden, ein y sollte immer gehen.
Danach fehlt uns nun  ein
  • freebsd-update install
nun beginnt die eigentliche Installation der neuen Pakete. Wenn dies abgeschlossen ist sollte man zu Sicherheit nochmal ein
  • nextboot -k GENERIC
ausführen und rebooten

Montag, 21. Februar 2011

Iptables (Schnelle Hilfe)

Eines in meinen Augen beste und schnellste Tool wenn es um einen Schuz des eigenen Systems geht ist Iptables, die seit Kernel 2.4.x integrierte Firewall. http://de.wikipedia.org/wiki/Iptables. Natürlich gibt es hierzu mehr Howtos als man alleine lesen kann. Trotzdem möchte ich die IPtables noch einmal kurz beleuchten, da ich sie im täglichen Geschäft immer mal wieder brauche.

So habe ich in meinem Dokumenten Ordner eine Datei die nennt sich "iptables_fastuse.txt" hier befindet sich eigentlich nur eine kleine Übersicht über verschiedene Regeln die ich schonmal gebraucht habe, mit einer kleinen erläuterung was diese einegtlich tun (ich vergesse das nämlich dauernd).

Der Erste aufruf in meiner liste

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP wie sich ebstimmt vermuten lässt, erstellt diese eine Regel welche jeden reinkommenden Traffic (INPUT) von einer gewissen Adresse (-s xxx.xxx.xxx.xxx) nicht an (DROP). Hierbei steht das -A für Append, also die Regel wird am Ende der "regelnliste" angestellt.

Wie sich also zeigt ist der Aufbau der iptables sehr einfach gehalten. Wir unterscheiden also eigentlich auf der einen Seite

INPUT
OUTPUT

hierbei gilt natürlich auch die Unterschiede zwischen -A -I -D zu beachten.
-A fügt die regel hinten an die Liste an
-I fügt die regel vorne in die Liste ein
-D löscht die passende Regel wieder aus der Liste

und auf der -j Seite (Also der "Was tun wir damit")

ACCEPT
REJECT
RETURN
DROP

Zunächst noch ein/zwei ganz wichtigen Hinweisen. Die Regeln der iptables werden von oben nach unten durchgegangen, also die erste Regel vor der Zweiten und so weiter. Somit muss man etwas aufpassen, wenn das System eine Default auf ACCEPT hat, dann muss man Verbindungen verbieten, ist die default ein DROP so kann man dies natürlich mit ACCEPT steueren.
In den folgenden Regeln gehen wir von einem default auf ACCEPT aus.

Löschen der ganzen Regeln geht einfach mit iptables -F, dan ansehen der Regeln via iptables -L.

Kommen wir nun also zu ein paar anderen Regeln, die man etwas besser benutzen kann, und ich denke das sie ein paar Feinheiten von iptables aufzeigen die man täglich benutzen kann.

iptables -A INPUT -p tcp --syn --dport <<PORT>> -m connlimit --connlimit-above <<ANZAHL>> -j REJECT --reject-with tcp-reset
Dies ist ein sehr schöner Befehl, mit Hilfe von connlimit sperren wir den gleichzeitigen Zugriff von einer IP auf unseren PORT sobald diese über ANZAHL hinaus gehen, sehr schön um zB Kundenzugriffe auf Datenbanken einzuschränken

Dann erwähnen wir im gleichen Atemzug natürlich auch noch

iptables -A INPUT -p tcp -m limit --limit 1/s --limit-burst 3 -j RETURN
Der Limit Funktion, anders als der connlimit, ist es egal von welcher IP die Zugriffe kommen sie sorgt eibfach dafür das in diesem Fall nur 1 Zugriff pro sekunde über tcp möglich ist. Diese Kommando lässt sich auch mit --dport PORT erweitern, um also einen Zugriff auf diesen Port zu beschränken

Es hat sich auch bewährt das ganze als Log zu schreiben, da man ja nachvollziehen möchte wen man so rausgeschmissen hat, folgender Eintrag vor dem eigentlichen Eintrag (z.B. einer der Erste) sorgt dafür das dies als zeile in /var/log/kern.log gespeichert wird

iptables -A INPUT -p tcp --syn --dport <<PORT>> -m connlimit --connlimit-above <<ANZAHL>> -j LOG man beachte also das für das REJECT ein LOG benutzt wird, also wird es in diesem Falle nur gelogt, die eigentliche Verbindung funktioniert aber trotzdem. Deshalb muss auch dieser Eintrag _vor_ dem Reject stehen, da ansonsten die Verbindung unterbrochen wird und kein LOG gschrieben wird.

Donnerstag, 17. Februar 2011

Neuer (Web-)VServer

FreeBSD vs2.in.********** 8.1-RELEASE FreeBSD 8.1-RELEASE

server:nginx/0.8.54
date:Thu, 17 Feb 2011 13:47:29 GMT
content-type:text/html transfer-encoding:chunked
connection:close
x-powered-by:PHP/5.2.17
expires:Thu, 19 Nov 1981 08:52:00 GMT (29 years and 3 months ago)
cache-control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 pragma:no-cache

Also relativ klassisch :-)
  • FreeBSD 8.1 amd64
  • Nginx Webserver
  • PHP 5.2.17 als fcgi
  • MariaDB

Bacula und Nagios

Wenn man eine Monitoring Lösung wie Nagios am Start hat, dann möchte man Zwangsläufig das die Backuplösung sich hier integriert. Wenn man dann sich umschaut, findet man einiges an HowTo Lösungen, die irgendwie alle nicht so recht wollten.
Ich habe mich jetzt mal einen Tag mit der Problematik befasst und fasse mal zusammen was man tun muss...

Schritt 1: PASSIV CHECK
Bacula soll nach beendetem Job uns eine Information geben was mit dem Job passiert ist, hierzu erstellen wir einen Passivcheck innerhalb von Nagios, dieser könnte so aussehen
define service {
hostgroup_name     bacula
service_description bacula-fd
use                          generic-service
check_command     check_dummy_crit
max_check_attempts 1
check_interval       1440
retry_interval        1440
check_period        workhours
notifications_enabled 0
register 1
}
check_dummy_crit ist hierbei das check_dummy script, welches immer critical ist, es sei denn es wird, in unserem Fall von Bacula, auf critical gesetzt.

Schritt 2: Bacula2Nagios
Wir brauchen für Nagios ein Script, dieses soll dafür sorgen das die Information von Bacula an nagios übermittelt wird. Hierbei müssen wir beachten, dass dieses Script nur auf dem Director liegen muss!
Denn, wir werden später die Funktion RUN AFTER JOB benutzen, ich musste auch lange recherchieren bis mir auffiel das der Director diesen Aufruf macht und nicht der Client :-)
Unser Script sieht dann so aus:
#!/bin/bash
# Bacula2Nagios V1#
/usrbacula2nagios.sh
# args:
# $1: Job name
# $2: Status (0:OK)
# $3: Plugin Output
if [ $2 -eq 0 ]
then status=0
else status=2
fi
/bin/echo "$1;bacula-fd;$status;$3" | /usr/sbin/send_nsca -d ';' -c /etc/nagios/send_nsca.cfg -H <NAGIOSHOST>
MAN BEACHTE!: Es ist hierfür wichtig das der "Job name" auich gleich dem Hostname in Nagios ist.


Schritt 3: RUN AFTER JOB
Nun fügen wir in jede JobDefs folgende beiden Zeilen ein
 Run After Job = "sh /usr/lib/nagios/plugins/bacula2nagios.sh \"%n\" 0 \"%e %l %v\""
Run After Failed Job = "sh /usr/lib/nagios/plugins/bacula2nagios.sh \"%n\" 1 \"%e %l %v\""
Hierbei ist
  • %n : der Jobname
  • 0/1: der Nagios Wert 0: OK 1: CRIT
  • %e der Job exit status
  • %l der job level
  • %v das Zielvolume
Requirements:
  • Nagios
  • Bacula
  • NSCA
  • bash und vi:-)  
Viel Spass damit

Montag, 14. Februar 2011

I love Free Software!

MySQL Replizieren

Heute beschäftigen wir uns kurz mal mit dem Thema "MySQL Replikation".
Kurz?
Ja! Lange dauert das ja nicht :-)

Nehmen wir mal die Ausgangssituation
Einen Debian Server MASTER mit MySQL
Auf die Installation von Debian bzw MySQL muss man wohl nicht mehr im Detail eingehen, diese ist bei Debian ja so schön automatisiert das nichts schief gehen sollte, und
Einen Debian Server SLAVE mit MySQL
 Wenn man die beiden Server zufällig in einem Rack haben sollte, so bevorzuge ich es an eth1 einfach ein Crosskabel anzuschliessen (Anmerkung!: Ein Crosskabel braucht man eigentlich nicht mehr, neue Neztwerkkarten sind so toll das sie dies alleine tun können).
Somit konfigurieren wir uns auf beiden Servern ein Netz, zB
auto eth1
iface eth1 inet static
        address 10.0.1.X
        netmask 255.255.255.0
        network 10.0.1.0
        broadcast 10.0.1.255
10.0.1.X sollte hierbei das X als 1 auf dem Master und 2 auf dem Slave gesetzt sein. Nach einem  /etc/init.d/networking restart sollte eine ping Probe möglich sein
root@mysql-master:~# ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_req=1 ttl=64 time=3.95 ms
Nun beginnen wir mit der Arbeit auf dem Master
Als erstes editieren wir die /etc/mysql/my.cnf, hier suchen wir die Zeile

  • #server-id            = 1
  • #log_bin              = /var/log/mysql/mysql-bin.log
und kommentieren sie ein, danach
  • mysql -p
um in das MySQL Interface zu gelangen

  •  GRANT SUPER, RELOAD, REPLICATION SLAVE ON *.* TO 'repl'@'10.0.1.2' IDENTIFIED by '<ANYPASSWORD>';
  • flush privileges;
Nun brauchen wir noch den Grunddatensatz, hierzu packen wir uns einfach das data_dir welches wir in /etc/mysql/my.cnf finden. Im Falle von Debian sollte dies /var/lib/mysql sein

  • cd /var/lib/mysql
  • tar cfz /tmp/mysnap.tar.gz .
  • scp mysnap.tar.gz 10.0.1.2:
Letzter Punkt auf dem Master, wir brauchen das aktuelle Logfile

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

ACHTUNG! Debian hat einen eigenen Systemnutzer, mit dieser Methode wird auch sein Passwort überschrieben, was dazu führt das MySQL auf dem Slave gleich nicht mehr gestartet werden kann. Workaround ist relativ simple, man kopiere sich die Passwörter aus /etc/mysql/debian.cnf und ersetze diese auch auf dem Slave.

Nun machen wir auf dem Slave weiter
Auch hier suchen wir den server-id Eintrag, setzen ihn aber auf 2

  • server-id            = 2

Nun entpacken wir unser Archiv, wenn Sie unsicher sind können Sie hier auch im my.cnf File nachsehen welches das data dir ist

  • tar xfz mysnap.tar.gz -C /var/lib/mysql/
Im letzten Schritt

  • mysql -p
  • CHANGE MASTER TO
    MASTER_HOST="10.0.1.1",
    MASTER_USER="repl",
    MASTER_PASSWORD="<ANYPASSWORD>",
    MASTER_LOG_FILE="mysql-bin.000001";
  •  START SLAVE;
Abschliessende Kontrolle:
So, eigentlich sollte unsere Arbeit hiermit erledigt sein, wir testen unser tun natürlich noch, ich kopiere mit Absicht nicht die ganze Zeile der Ausgabe, aber so ungefähr sollte sie aussehen

Auf dem Master
  • show processlist;
  • 35 | repl | 10.0.1.2:36874 | NULL | Binlog Dump |  914 | Has sent all binlog to slave; waiting for binlog to be updated | NULL

 Auf dem Slave, so etwas wie

  • show processlist;
  • Waiting for master to send event | 10.0.1.1    | repl        |        3306 |            60 | mysql-bin.000001 |                 106 | mysqld-relay-bin.000002 |           251 | mysql-bin.000001 
ACHTUNG! Fast hätte ich es vergessen. Was mir auch sehr spät bei der Kontrolle aufgefallen ist, ist das Debian standardmässig nur auf 127.0.0.1 hört daher muss die bind-adresse noch angepasst werden.

  • bind-address = 0.0.0.0


Danke das wars :-)

Donnerstag, 10. Februar 2011

Debian Backports (Squeeze)

Vielleicht mal ein guter Zeitpunkt um ein wenig über mein Lieblingsrepo zu reden.

Wer kennt das nicht, man sucht ein Softwarepaket und muss leider feststellen das die Version die wir in unsere Liste finden (okay, ich rede von 24 Monaten Lenny :-) ) eigentlich schon ziemlich alt ist. Nun haben wir hierbei ein wirkliches gutes Repository zur Hand welches genau aus diesem Grund geschaffen wurde

http://backports.debian.org/

Um es mit den Worten der Maintainer zu sagen:
 You are running Debian stable, because you prefer the Debian stable tree. It runs great, there is just one problem: the software is a little bit outdated compared to other distributions. This is where backports come in.
Backports are recompiled packages from testing (mostly) and unstable (in a few cases only, e.g. security updates) in a stable environment so that they will run without new libraries (whenever it is possible) on a Debian stable distribution. It is recommended to select single backports which fit your needs, and not to use all available backports.

 Der Weg zu diesem Repo ist auch sehr einfach gestaltet, und geht prinzipiell in 3 Schritten

 Zu allererst brauchen wir einen neuen Eintrag in /etc/apt/source.list
 deb http://backports.debian.org/debian-backports squeeze-backports main 
wenn wir diesen Eintrag angelegt haben brauchen wir nur noch die Liste zu updaten
aptitude update
 hier wird dann die Liste der Pakete auf den neusten Stand gebracht. Nun können wir einzelne Pakete aus diesem Repo installieren mit
aptitude install -t squeeze-backports <paketname>
das gleiche gilt natürlich auch für search/update

Nun sollte man noch einen Eintrag in /etc/apt/preferences machen, dieser soll dafür sorgen, das auch automatisch Upgrades aus den Backports genommen werden
Package: *
Pin: release a=squeeze-backports
Pin-Priority: 200
Und das war es auch schon...

Dienstag, 8. Februar 2011

Ioncube Loader

 Der Ioncube Loader. Wird immer beliebter. Er ermöglicht es zwar php Anwendungen an einen Kunden herauszugeben, verhindert aber das dieser Kunde den Quelltext sehen kann.
Somit ist er Ioncube Loader natürlich für Unternehmen interessant die primär mit ihren Webentwicklungen Geld verdienen wollen.

Nun haben wir auch vorgesehen dieses beim nächsten Update unserer Web_Skeletons diesen endlich mal fest einzubauen, bis dahin ist aber immernoch ein wenig Handarbeit von Adminseite nötig.
Aus diesem Grund beschreibe ich doch  nun mal kurz das allgemeine Vorgehen um einen Ioncube Loader in Betrieb zu nehmen.

Also erstmal zum Abgleich die Grundlagen
  • Debian Lenny 5.0.8
  • Apache/2.2.16 (Debian)
  • PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2
Wir laden von der oben genannten Seite das passende Linuxpaket
  • http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
oder
  • http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
nach dem entpacken haben wir folgende Verzeichnisstruktur 

home01:~/ioncube# ls
ioncube_loader_lin_4.1.so     ioncube_loader_lin_5.1_ts.so
ioncube_loader_lin_4.2.so     ioncube_loader_lin_5.2.so
ioncube_loader_lin_4.3.so     ioncube_loader_lin_5.2_ts.so
ioncube_loader_lin_4.3_ts.so  ioncube_loader_lin_5.3.so
ioncube_loader_lin_4.4.so     ioncube_loader_lin_5.3_ts.so
ioncube_loader_lin_4.4_ts.so  LICENSE.txt
ioncube_loader_lin_5.0.so     loader-wizard.php
ioncube_loader_lin_5.0_ts.so  README.txt
ioncube_loader_lin_5.1.so
natürlich kann man an dieser Stelle den loader-wizard in den Webspace verschieben, die seite aufrufen und der Anleitung folgen, da es aber nun schon ein paar mal getan wurde, geht es so weiter:
  1. Wir verschieben alle Dateien nach /usr/local/ioncube (wahlweise auch nur die die wir wirklich brauchen in unserem Falle also die ioncube_loader_lin_5.2.so)
  2. Wir erstellen folgenden Eintrag in der /etc/php5/apache2/php.ini am besten direkt ganz am Anfang der Datei, da es sonst (zumindest bei mir) öfter zu Problemen kommt
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so
Apache neustarten und Thats it!

Montag, 7. Februar 2011

Debian Lenny to Squeeze (Just another howto)

Endlich ist es soweit, am Wochenende des 05./06. Februar hat jemand beschlossen das Debian Squeeze stable ist. Was bedeutet das für uns Admins, natürlich werden Images ausgetauscht und die ersten Testsysteme auf Squeeze hochgezogen.

Als allererstes sollte man sich natürlich ein Backup der wichtigen Daten machen. In meinen Augen zählt hierzu auch eine Liste der Pakete

  • dpkg --get-selections
sowie auch das (nahezu) komplette /etc/ Verzeichnis. Dieses sichern meiner Ansicht nach die wenigstens obwohl natürlich nichts nerviger ist als die ganzen configs neu zu schreiben wenn ein Rechner den Geist aufgibt.
Mit Hilfe von /etc und den Paketen lässt sich Debian Server eigentlich sehr schnell wieder herstellen.

Nun also zum Upgrade.
Wir editieren also die /etc/apt/source.list
deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze main contrib
#deb http://backports.debian.org/debian-backports lenny-backports main
deb-src http://security.debian.org/ squeeze/updates main
deb http://security.debian.org/ squeeze/updates main
So könnte diese dann ungefähr aussehen.
Danach eigentlich nur noch

  • aptitude update
und natürlich ein

  • aptitude full-upgrade 
Hierbei passiert nun wirklich einiges, ziemlich viele Pakete müssen gezogen werden und auch ein paar Konflikte aufgelöst. Bei mir lief es soweit ohne Probleme.

Viel Spass mit Squeeze!

Sonntag, 6. Februar 2011

Pfui! Böses Böses Windows!

Manchmal ist es schon toll was man so neues in Sachen Windows lernen kann.

Vor knapp einer Woche habe ich einen Arbeitsplatzrechner mit einem Windows XP Pro ausgestattet (Ja, wir benutzen das immernoch). Die Installation lief soweit Problemlos, auch das Aktivieren klappte auf Anhieb.

Nun, habe ich mich getraut eine Woche diesen PC alleine zu lassen und etwas Urlaub zu machen, als ich dann heute aus dem Urlaub kam, war ich doch sehr überrascht. Das Windows wollte doch wirklich wieder aktivieren lassen. Dies war für mich noch nicht so schlimm, jedoch das aktivieren viel in folgenden Schritten aus:

  1. Anmelden
  2. Sie müssen Windows Aktivieren
  3. Ja klicken
  4. Sie haben Windows bereits aktiviert
  5. Abmelden
  6. .... (Endlosschleife)
Natürlich begann an dieser Stelle meine Google Suche nach diesem Problem auch wenn ich zugeben muss noch keine Lösung gefunden zu haben, will ich trotzdem mir die Zeit nehmen und einen echt tollen Ansatz weiter zugeben, den ich so noch nicht kannte.

Windows XP Deaktivieren

Wir booten das Windows in den "Abgesicherten Modus", hierzu drücken wir F8 während der Startphase des Rechner, sollte der Windows Boot Bildschirm erscheinen waren wir leider zu spät. 

(Schritt 1) Als erstes löschen wir die Datei, die für das Aktivieren zuständig ist, hierzu starten wir den Windows-Explorer und gehen zum Ordner C:\windows\system32\ hier befindet sich eine wpa.dbl Datei die wir löschen.
Nun benutzen wir die "Original Windows XP CD" und spielen diese Datei neu ein, sollte Ihr CD-Laufwerk D: sein so sieht der Befehl ungefähr so aus:
  • expand D:\i386\wpa.db_ C:\windows\system32\
Nun haben wir diese Datei in Ihrer Originalversion, weiter...

(Schritt 2) Nun müssen wir etwas an der Registry rumbasteln, hierzu nutzen wir START -> Ausführen und führen regedit aus, wir gehen zu
  1. HKEY_LOCAL_MACHINE
  2. SOFTWARE
  3. WINDOWS NT
Unter dem Punkt NOTIFY sollte es einen Eintrag RESETS geben, welchen wir mittels Rechts-Klick und Löschen entfernen.
Da wir in der Registry schonmal sind bearbeiten wir noch einen Punkt
  1. HKEY_LOCAL_MACHINE
  2. SOFTWARE
  3. WINDOWS NT
  4. CURRENT VERSION
  5. WPA EVENTS
Hier Ändern wir mittels Rechts-Klick auf OOBETimer  den Inhalt WICHTIG! ist es das der Inhalt wirklich geändert werden muss und nicht einfach gelöscht, wie diese Änderung jedoch aussieht ist relativ egal.

Nun ist Ihr Windows wieder Deaktiviert und der Aktivierungprozess kann von neuem Beginnen.

Freitag, 4. Februar 2011

Die Altlasten

Wie vorher erwähnt habe ich ja Altlasten entsorgt


Die habe ich aus dem alten Zimmer im Haus meiner Eltern erstmal ins EG getragen und gestapelt

  • Apple Monitor
  • Ein Umax Apus (Apple Clon)
  • 4 PC Gehäuse teileweise leer
  • ca. 10 CD / DVD Laufwerke
  • Sun 19" Monitor
  • Sun Sparcstation 1, 2, 3, 4, 5
  • Sun Ultra 5 und 10
  • Sun Sparcstation IPX und IPC
  • ca 3 externe Platten und CD Gehäuse
  • Allerlei Kabel
  • Dockingstation für ein Compaq Notebook
  • Dazu Allerhand uralt SCSI Festplatten
Wenn man den Anschaffungspreis nimmt (was teilweise Stand 1993 war :-) ) habe ich also ein schönes neues Auto weggeschafft. Vom Gewicht her wohl fast auch :-)

Stanford University Network aka SUN

So, das Bild fliegt nun schon ne Weile auf meinem Desktop rum und ich denke ich sollte es mal posten bevor es bei Aufräumarbeiten verloren geht.

Ja ich mochte SUN. Eine klasse Firma. Auch wenn ich mich am Montag von meiner SUN Sammlung nahezu vollständig getrennt habe, so kann ich doch immernoch zwei Maschinen mein Eigen nennen

  • SUN Ultra 10
  • SUN Ultra 60
Von diesen beiden werde ich mich so schnell nicht trennen :-)

Dienstag, 1. Februar 2011

Roundcube am limit

Letztens ist es passiert das Roundcube auf einem unserer Rechner am Limit war.
Soll heissen das die Ausgabe von top eine Wait von 85% zeigte, und damit einhergehend natürlich auch Loginzeiten (bzw auch Seitenaufbauzeiten) jenseits der 1 Minute Grenze.

Der erste Lösungsansatz schlug leider fehl. Dieser bestand darin den Apache Server und den MySQL Server neuzustarten. Doch wie gesagt, dies führte zu einer Verbesserung für gerade mal 3 Minuten. Bevor die Wait auch hier wieder über einen Wert von 60% ging.
Allgemein sollte man vielleicht wissen das Wait zumeist mit Festplatten zugriffen zusammenhängt, also ein Prozess würde zwar gerne etwas tun, muss jedoch auf die I/O warten.

Also, da Roundcube primär auf MySQL basiert, bzw diese Datenbank als Backend nutzt, fand sich hier auch ein besserer Lösungsansatz und zwar über das löschen/leeren einer Roundcube Tabelle in Mysql.
Hierzu betrachtet ich mir die Zugriffe in MySQL selbst und fand schnell heraus das Roundcube mittels einer Tabelle eine Art Cache simuliert.

Die Lösung und Vorgehensweise:
  • mysql -p
Dann natürlich das login in die Datenbank als root mit Passwort.
  • use roundcube;
  • select count(*) from cache;
Dies brachte einen Wert jenseits von 160.000 zurück.
  • truncate cache;
  • quit;
Die führte dazu das es ziemlich genau 3 Monate sehr gut lief, bis der Speicher auch hier wieder voll war.

Lets get it ON!

So, dies ist dann mal der erste kleine Platzhalter Eintrag. Ich hoffe das in den nächsten Tagen/Wochen/Monaten/Jahren noch einige Interessante Themen auf dieser Seite von mir platziert werden die vielleicht auch ein breites Publikum finden.

Wieso amelinux ?
Eigentlich setzt es sich zusammen aus ame(lin) und linux, hierbei muss ich (hoffentlich) das Linux nicht erklären :-) a melin steht nun für Abra Melin, ein Hexenmeister aus dem Mittelalter der auch in den Wilson Romanen "Iluminati", erwähnt wird.