Seite 1 von 4

Hilfe: .htaccess und Serverauslastung

Verfasst: 13.07.2006 20:39
von dennist
Hallo,

ich habe einen Server im Einsatz, der normalerweise eine Auslastung von 0,5-1 hat. Nun kommt es aber manchmal vor, dass diese Auslastung auf einen Wert von über 15 steigt. Alle Apacheverbindungen sind belegt und das Forum ist nicht mehr zuerreichen.

Dieser enorme Anstieg ist aber nicht mit einem plötzlichen Besucheransturm zu erklären.
Könnte das Problem am RewriteEngine und der .htaccess liegen?

Ich hatte früher die Short-URLs genutzt und habe jetzt die Seo-Urls (mgutt) im Einsatz.


.htaccess
<Files config.php>
Deny from all
</Files>

DirectoryIndex index.php index.html index.html

RewriteEngine On


<files archive>
ForceType application/x-httpd-php
# AcceptPathInfo On # uncomment this if you have apache2
</files>

RewriteCond %{REQUEST_FILENAME} forums.html
RewriteRule (.*) index.php [L]

RewriteCond %{REQUEST_FILENAME} forward([0-9]*)-([0-9]*)-([0-9]*).html
RewriteRule (.*) forward.php?f=%1&topicdays=%2&start=%3 [L]



RewriteCond %{REQUEST_FILENAME} ptopic([0-9]*).html
RewriteRule (.*) forward.php?t=%1&view=previous [L]

RewriteCond %{REQUEST_FILENAME} ntopic([0-9]*).html
RewriteRule (.*) forward.php?t=%1&view=next [L]

RewriteCond %{REQUEST_FILENAME} ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).html
RewriteRule (.*) forward.php?t=%1&postdays=%2&postorder=%3&start=%4 [L]

RewriteCond %{REQUEST_FILENAME} ftopic([0-9]*)-([0-9]*).html
RewriteRule (.*) forward.php?t=%1&start=%2 [L]

RewriteCond %{REQUEST_FILENAME} ftopic([0-9]*).html
RewriteRule (.*) forward.php?t=%1 [L]

RewriteCond %{REQUEST_FILENAME} ftopic([0-9]*).html
RewriteRule (.*) forward.php?t=%1&start=%2&postdays=%3&postorder=%4&highlight=%5 [L]

RewriteCond %{REQUEST_FILENAME} linkpartner.htm
RewriteRule (.*) linkpartner.php [L]

RewriteCond %{REQUEST_FILENAME} sitemap.html
RewriteRule (.*) sitemap.php [L]

RewriteCond %{REQUEST_FILENAME} sitemap-([0-9]*).html
RewriteRule (.*) sitemap.php\?offset=%1 [L]


# SEO URL [mgutt]
RewriteRule !\.html$ - [L]
RewriteRule ^[a-z0-9-]+-([pt])([0-9]+)\.html$ /viewtopic.php?$1=$2 [L]
RewriteRule ^[a-z0-9-]+-f([0-9]+)\.html$ /viewforum.php?f=$1 [L]
RewriteRule ^[a-z0-9-]+-u([0-9]+)\.html$ /profile.php?mode=viewprofile&u=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+),([^/,]+),([^/,]*)([^/]*\.html)$ $1$4?$2=$3 [QSA,N]
RewriteRule ^[a-z0-9-]+-([pt])([0-9]+),([^/,]+),([^/,]*)([^/]*\.html)$ viewtopic$5?$1=$2&$3=$4 [QSA,N]
RewriteRule ^[a-z0-9-]+-f([0-9]+),([^/,]+),([^/,]*)([^/]*\.html)$ viewforum$4?f=$1&$2=$3 [QSA,N]
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /$1.php [L]
Ich hoffe ihr könnt mir helfen.

Viele Grüße Dennis

Verfasst: 13.07.2006 22:39
von Nico Haase
hmm, das würde mich wundern, so eine umwandlung geht normalerweise recht zügig. frag doch mal deinen hoster, der kann rausfinden, was auf dem server so viele ressourcen verbrät.

Verfasst: 14.07.2006 08:16
von larsneo
hast du dir schon einmal die anzahl der sql-queries pro seite anzeigen lassen?

die .htaccess verbraucht sicherlich ein wenig ressourcen, man sollte von daher beim aufbau der liste darauf achten, dass oftmals gebrauchte regeln am anfang stehen und mit einem [L] abgeschlossen sind.
in den meisten apache konfigurationen kannst du darüberhinaus auch

Code: Alles auswählen

RewriteRule ^forums\.html$ /index.php [L]
statt

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME} forums.html
RewriteRule (.*) index.php [L] 
verwenden, um ein wenig ressourcen zu sparen, beim apache2 darüberhinaus auch PERL-style regexps nutzen.

Verfasst: 14.07.2006 13:10
von dennist
danke, werde ich gleich mal ausprobieren. :grin:
larsneo hat geschrieben:hast du dir schon einmal die anzahl der sql-queries pro seite anzeigen lassen?.
Nein; ich weiß gar nicht wo man das machen kann. Da brauch man sicher einen extra Mod für, oder?

Ich habe meinen Hoster (all-inkl) angeschrieben und der meinte, dass es sinnvoll wäre den ApacheServer (1.3.27) upzudaten.
"Eventuell enthält eine .htaccess eine Feherlhafte Regel die nach und nach mehr CPU verlangt da der Aufruf in einer Schleife gefangen ist."

Was meint ihr dazu, könnte dort das Problem liegen und ein Update Abhilfe schaffen?

Viele Grüße Dennis

Verfasst: 14.07.2006 20:09
von larsneo
naja - eine aktualisierung auf den apache 2.2 bringt vielleicht ein wenig mehr an performance (und die oben bereits beschriebenen PERL-style regexps) - aber ich denke einmal, dass dein problem woanders liegt.

nachdem die last nach deiner aussage ja nur ab und an auf extremwerte ansteigt, solltest du die logfiles für den entsprechenden zeitraum analysieren - treten übermässig häufig 404-fehler auf, fallen suchmaschinenspider über das board etc.

was die page generation time angeht: http://smartor.is-root.com/viewtopic.php?t=2968

Verfasst: 14.07.2006 20:22
von Jensemann
Erfahrungsgemäß liegen hohe Auslastungen der Maschine zuerst an MySQL. => MySQL optimieren: Query Cache, Thread Cache als Stichwörter.

Weiterhin sorge dafür das Apache nur soviele Verbindungen bearbeitet wie er auch verarbeiten kann ohne in Überlast zu rutschen.

Verfasst: 16.07.2006 19:42
von dennist
Hallo,

ich habe den "page generation time Mod" mal installiert.
Meine Index-Seite erzeugt 19 queries (php 25% // SQL 75%).
Wenn ein einzelner Thread geladen wird ergibt dies 26-35 queries.

Sind diese Daten ok? (Mods wie der Attachment-Mod erzeugen ja auch ihre Last)

Dann habe ich noch eine Frage zu den logfiles.
Wie kann ich die am besten auslesen bzw auswerten?
Ich habe es mit Excel versucht, doch erscheint dort eine Fehlermeldung und nur die Daten eines halben tages werden angezeigt.
Gibt es da bessere Programme (offline bevorzugt)?

Gruß Dennis

Verfasst: 16.07.2006 20:07
von darklordi
in welcher form liegen dir die logfiles denn vor ?

also ich hab im index neuerdings 27Queries -.- wegen color groups usw ... braucht alles querys ^^
in nem beitrag mit 2dateianhängen habsch z.b. "Page generation time: 0.1631s (PHP: 91% - SQL: 9%) - SQL queries: 28"

Also passen deine Werte .. (es sei denn du hast keine Addons , dann würd ich mir sorgen machen ;) )

Verfasst: 16.07.2006 21:24
von S2B
Ähm, also 75% SQL ist schon relativ viel, da würde ich mir an deiner Stelle Gedanken machen (Query-Cache, Queries optimieren etc.). :wink:

Verfasst: 17.07.2006 09:31
von thompson
S2B hat geschrieben:Ähm, also 75% SQL ist schon relativ viel, da würde ich mir an deiner Stelle Gedanken machen (Query-Cache, Queries optimieren etc.). :wink:
gibts da was nachzulesen ? würde mich auch näher interessieren, da ich auch immer mal wieder große spitzen in der auslastung habe.