Tag Archives: LAMP

Apache Speicherbedarf senken

Die Standard Apache-Konfiguration ist für ausgewachsene Maschinen ausgelegt und daher für kleine virtuelle Server-Instanzen ungeeignet. Nachfolgend beschriebe Änderung senkt den Speicherbedarf deutlich.

Konfiguration

1
sudo vi /etc/apache2/apache2.conf
1
2
3
4
5
6
7
8
9
10
# Low memory setup
# Low memory setup
<IfModule mpm_prefork_module>
    StartServers 2
    MinSpareServers 2
    MaxSpareServers 5
    ServerLimit 128
    MaxClients 128
    MaxRequestsPerChild 4000
</IfModule>

Ergebnis

Munin-memory
Im Chart sind zwei Senkung des für Anwendungen allokierte Speichers (committed) sichtbar. Die erste Senkung ist auf eine Anpassung der MySQL Konfiguration zurückzuführen. Die zweite Senkung wurde durch die oben beschriebene Anpassung der Apache-Konfiguration verursacht.

WordPress DB Backup & Restore

Das Sichern und Rücksichern einer WordPress Datenbank (MySQL) kommt bei mir nicht jeden Tag vor, daher habe ich die wichtigsten Schritte nachfolgend kurz zusammengefasst:

Datenbanken finden

Die von WordPress verwendete Datenbank kann in der wp-config.php gefunden werden. Um eine Übersicht aller Datenbanken zu erhalten:

1
mysql --user=user_name --password=your_password
1
2
3
4
5
6
7
8
9
10
11
12
SHOW DATABASES;
+--------------------+
| DATABASE           |
+--------------------+
| information_schema |
| wordpress          |
| mysql              |
+--------------------+
3 ROWS IN SET (0.00 sec)
 
quit
Bye

Datenbank sichern

Ist die richtige Datenbank gefunden, kann diese in eine Datei (etwa backup.sql) gesichert werden:

1
2
mysql --user=user_name \
--password=your_password db_name > backup.sql

Datenbank anlegen

Für die Rücksicherung wird eine Datenbank sowie ein neuer Benutzer mit Kennwort entsprechend der wp-config.php angelegt:

1
mysql --user=user_name --password=your_password
1
2
3
4
5
6
7
CREATE DATABASE db_name;
CREATE USER @localhost IDENTIFIED BY 'your_password';
GRANT ALL ON db_name.* TO user_name@localhost;
 
SHOW DATABASES LIKE 'db_name';
SELECT Host, USER FROM mysql.user WHERE USER LIKE 'user_name';
SHOW grants FOR user_name@localhost;

Datenbank zurücksichern

Jetzt kann die Datenbank zurückgesichert werden:

1
2
mysql --user=user_name \
--password=your_password db_name < backup.sql

MySQL Speicherbedarf senken

Kleinere LAMP-Instanzen laufen heute meist in virtuellen Server-Umgebungen, hier ist Speicher knapp bemessen. Mit dem Abschalten der InnoDB Database Engine lässt sich MySQL deutlich abspecken.

Schritt 1 — prüfen ob InnoDB als Engine verwendet wird:

1
2
3
4
5
6
7
8
9
10
$mysql_pass=your_password
mysql -p$mysql_pass -e "select distinct ENGINE FROM information_schema.TABLES"
+--------------------+
| ENGINE             |
+--------------------+
| MEMORY             |
| MyISAM             |
| CSV                |
| PERFORMANCE_SCHEMA |
+--------------------+

Im Beispiel taucht InnoDB nicht auf und kann daher deaktiviert werden.

Schritt 2 — InnoDB deaktivieren

Sollte eine Datenbank InnoDB-Tabellen haben, lässt sich die DB-Engine mit folgende Script auf MyISAM umstellen. (Vorher Backup anlegen!)

1
2
3
4
5
mysql_pass='your_password'
db='your_database'
for t in `mysql -p$mysql_pass --skip-column-names -B -e "select table_name FROM information_schema.TABLES where engine = 'innodb'"`; do
    mysql -p$mysql_pass $db -e "ALTER TABLE $t ENGINE=MYISAM";
done

Schritt 3 — InnoDB deaktivieren

Unter Debian/Ubuntu lässt sich die InnoDB Engine in der Konfigurationsdatei /etc/mysql/my.cnf mit folgenden Zeilen deaktivieren:

1
2
innodb=OFF
default_storage_engine=MyISAM

Schritt 4 — Test

sudo service mysql restart
mysqladmin -u root -p$mysql_pass var | grep have_innodb

#Vorher
| have_innodb        | YES

#Nachher
| have_innodb        | DISABLED

Ergebnis

Munin-memory
Im Chart sind zwei Senkung des für Anwendungen allokierte Speichers (committed) sichtbar.
Die erste Senkung ist auf die oben beschriebene Anpassung der MySQL-Konfiguration zurückzuführen. Die zweite Senkung wurde duch eine Anpassung der Apache Konfiguration verursacht.