Tag Archives: linux

Hoe kun je de oorzaak van een trage server achterhalen?

Iedere systeembeheerder heeft er wel eens mee te maken gehad, je server reageert niet lekker snel meer. De klant belt je op met de melding dat de laadtijden van zijn website langer dan 5 seconden bedragen, terwijl er slecht 10 gebruikers actief zijn.

Lees hieronder hoe je snel de oorzaak van deze traagheid kunt achterhalen.

Nadat je via SSH op je server inlogt, zal je eerst het commando ‘top’ willen uitvoeren. Op een server die weinig te doen heeft, is dit uiteraard geen probleem. Echter wil het in de praktijk nog wel een voorkomen dat het starten van ´top´ zo traag gaat, dat dit alleen maar ongemak geeft.
Om snel de ‘load‘ van de processor te zien, kun je ook het commando ‘uptime’ uitvoeren. Deze laat niet alleen het aantal dagen zien dat je server draait, maar ook de load!

marsmanic@server02:~$ uptime 
 21:31:19 up 569 days,  4:59,  3 users,  load average: 1.27, 0.32, 0.32

Zoals hier te zien, is de load niet erg hoog, de oorzaak van de traagheid ligt dus niet bij het CPU-gebruik.

Als volgende mogelijkheid controleren we het geheugenverbruik. Het is namelijk goed mogelijk dat één proces te veel geheugen gebruikt of werkt in het swap-geheugen.

marsmanic@server02:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          7946       3990       3955          0        328       1583
-/+ buffers/cache:       2078       5867
Swap:        16339          0      16339

Je ziet in bovenstaande dat er nog genoeg geheugen vrij is en dat er geen swap-geheugen wordt gebruikt. Dat is goed.

Het zou kunnen dat er veel activiteit op je schijven plaatsvindt, op oudere distributies kun je controleren met iostat (bijvoorbeeld: iostat -xtk 1) of dit het geval is. Bij nieuwere distributies gebruik je iotop:

Total DISK READ:       0.00 B/s | Total DISK WRITE:      11.71 K/s

 PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND 
15474 be/4 www-data    0.00 B/s    3.90 K/s  0.00 %  0.00 % apache2 -k start
15518 be/4 www-data    0.00 B/s    3.90 K/s  0.00 %  0.00 % [apache2]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]

Tot slot bekijk je het netwerkverkeer van en naar je server. Hier zijn verschillende tools voor, bijvoorbeeld:

Als je zeker wilt weten of je server wel de netwerksnelheden haalt die je verwacht, is het handig om een keer speedtest op de command line te gebruiken.

Dit zijn enkele tools en tips die ik gebruik om snel een probleem te achterhalen. Het dekt niet alles, maar hiermee zul je vaak al snel de vertragende boosdoener vinden.

Mocht je er niet uitkomen of wil je mij (Marsman ICT Consultancy) je server laten onderzoeken, kun je altijd contact opnemen.

–Martijn

Makkelijk alle domeinnamen laten verwijzen naar je website met Apache

Het is niet ongebruikelijk dat je meerdere domeinnamen registreert voor je website. Soms omdat je ook namen vastlegt die op je hoofd-domeinnaam lijken, maar ook omdat je veel voorkomende extensies van je domeinnaam in je bezit hebt.

Het is niet goed voor je zoekmachine-ranking om voor iedere domeinnaam een ServerAlias aan te maken. Je bezoeker komt zo wel op dezelfde website, maar voor een zoekmachine-spider lijkt het alsof er meerdere websites bestaan met dezelfde content.

Dit gaan we dus redirecten met de status-code 301 vanuit een aparte Virtualhost op de volgende manier:

<VirtualHost *:80>
        ServerName mijnwebsite.nl
        ServerAlias mijnwebsite.de
        ServerAlias www.mijnwebsite.de
        ServerAlias mijnwhebsait.nl
        ServerAlias www.mijnwhebsait.nl

        Redirect permanent / http://www.mijnwebsite.nl/
</VirtualHost>

Alle domeinnamen worden nu afgevangen door deze Virtualhost en netjes met de instructie: “Redirect permanent” (status-code 301) doorgestuurd naar de website http://www.mijnwebsite.nl

Deze kun je gewoon aanmaken als een Virtualhost, bijvoorbeeld:

<Virtualhost *:80>
        ServerAdmin webmaster@mijnwebsite.nl
        ServerName  www.mijnwebsite.nl
        DocumentRoot /home/mijnwebsite.nl/public_html/

        <Directory /home/mijnwebsite.nl/public_html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /home/mijnwebsite/logs/error.log
        LogLevel warn
        CustomLog /home/mijnwebsite.nl/logs/access.log combined
</VirtualHost>

 

Mocht je er niet uitkomen of wil je dit laten uitvoeren, kun je altijd contact opnemen.

–Martijn

Beveilig /tmp op je Linux systeem

Om je systeem veilig te houden is het belangrijk om de /tmp map als een aparte partitie te mounten en ervoor te zorgen dat bestanden in deze map nooit uitvoerbaar kunnen zijn.

Een belangrijke reden hiervoor is dat veel applicaties en websites de map /tmp gebruiken om tijdelijke bestanden op te slaan, hier is /tmp ook voor bedoeld (Zie ook FHS op Wikipedia voor meer informatie over de mappen-structuur onder Linux). Veel exploits proberen om bestanden op te slaan en uit te voeren in /tmp omdat dit vaak de enige schrijfbare map is voor een applicatie of website. Om dit te voorkomen gaan we van /tmp een aparte partitie maken op en deze mounten met de opties: noexec (sta niet toe dat binaire bestanden uitvoerbaar zijn) en nosuid (sta niet toe dat de eigenaar van een bestand wordt aangepast) Zie ook de Linux Man Page over Mount.

De praktijk:

  • Maak een 2GB bestand voor je nieuwe /tmp partitie:
    root@srvprd05:~# dd if=/dev/zero  of=/dev/tmpfs  bs=1024   count=2000000
  • Voorzie /dev/tmpfs van de Ext3 indeling:
    root@srvprd05:~# /sbin/mkfs.ext3 /dev/tmpfs
  • Maak een backup van de bestaande map:
    root@srvprd05:~# cp -Rfp /tmp /tmpback
  • Mount de nieuwe /tmp partitie en zet de rechten goed:
    root@srvprd05:~# mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp
    root@srvprd05:~# chmod 1777 /tmp
  • Kopieer de data naar de nieuwe partitie:
    root@srvprd05:~# cp -Rfp /tmpback/.* /tmp/
  • Bewerk /etc/fstab en voeg het volgende toe:
    /dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0
  • Test de regel die je aan hebt gemaakt:
    root@srvprd05:~# mount -o remount /tmp
  • Om bovenstaande te controleren kun je simpelweg een shell-script proberen uit te voeren in /tmp. Als je de melding krijgt: “permission denied” is het gelukt.

Mocht je er niet uitkomen of wil je dit laten uitvoeren, kun je altijd contact opnemen.

–Martijn