Server-Performance (Apache)

Apache, Lighttpd, nginx, Cherokee
Post Reply
htmlspyguy
Posts: 7
Joined: 2005-08-22 17:50
Location: Emskirchen
 

Server-Performance (Apache)

Post by htmlspyguy »

Hallo Leute,

habe schonmal ein paar Foren von euch durchgeschaut und teils schon sehr Interessante sachen entdeckt bzgl. der Apache Optimierung und natürlich auch ausprobiert...

So richtig viel Erfolg hatte ich dabei allerdings noch nicht...

Hier schonmal meine derzeitige apache2.conf
ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid

Timeout 20

KeepAlive On

MaxKeepAliveRequests 200

KeepAliveTimeout 15

<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 0
</IfModule>

<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
AcceptMutex fcntl
</IfModule>

User www-data
Group www-data

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

ErrorLog /var/log/apache2/error.log

Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

Include /etc/apache2/httpd.conf

Include /etc/apache2/ports.conf

Include /etc/apache2/conf.d/[^.#]*

Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<IfModule mod_negotiation.c>
<IfModule mod_include.c>
Alias /greaterror/ "/usr/share/apache2/error/"

<Directory "/usr/share/apache2/error">
AllowOverride None
Options -All
ForceLanguagePriority Prefer Fallback
</Directory>

ErrorDocument 400 /greaterror/400.html
ErrorDocument 401 /greaterror/401.html
ErrorDocument 403 /greaterror/403.html
ErrorDocument 404 /greaterror/404.html
ErrorDocument 405 /greaterror/405.html
ErrorDocument 408 /greaterror/408.html
ErrorDocument 410 /greaterror/410.html
ErrorDocument 411 /greaterror/411.html
ErrorDocument 412 /greaterror/412.html
ErrorDocument 413 /greaterror/413.html
ErrorDocument 414 /greaterror/414.html
ErrorDocument 415 /greaterror/415.html
ErrorDocument 500 /greaterror/500.html
ErrorDocument 501 /greaterror/501.html


ErrorDocument 502 /greaterror/502.html
ErrorDocument 503 /greaterror/503.html
ErrorDocument 506 /greaterror/506.html

</IfModule>
</IfModule>

DirectoryIndex index.html index.htm index.shtml index.php index.php3 index.php4 index.php5 index.cgi index.pl index.py index.xml

AccessFileName .htaccess

<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>

UseCanonicalName On

TypesConfig /etc/mime.types
DefaultType text/plain

HostnameLookups Off
<Files ~ ".(.html|.htm|.php|.php3|.php4|.php5|.cgi|.pl|.py|.xml)$">
HostnameLookups On
</Files>

IndexOptions FancyIndexing VersionSort

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* RCS CVS *,t

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage ko .ko
AddLanguage pt .pt
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw

LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw

AddDefaultCharset ISO-8859-1

AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8

AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis

AddType application/x-tar .tgz

AddHandler cgi-script .cgi .pl

<FilesMatch ".shtml(..+)?$">
SetOutputFilter INCLUDES
</FilesMatch>

BrowserMatch "Mozilla/2" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [45]" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "MSIE 6.0; Windows NT 5." nokeepalive
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully

Include /etc/apache2/sites-enabled/[^.#]*

<Directory /home/www>
Allowoverride All
</Directory>
Mein Hauptprojekt auf dem Server hat pro Tag rund 30.000 Besucher laut Nedstat und derzeit z. B. gleichzeitig rund 200 Leute online...
116 Gäste und 84 User, oft allerdings noch mehr...

Load liegt hierbei durchschnittlich so um die 20 (geht aber auch schon manchmal zur 40), was mir eigentlich zu hoch ist und was man auch an der Geschwindigkeit der Seite merkt...

Hat jemand noch Verbesserungsvorschläge für die Konfiguration vom Apache? Kenne mich damit nicht so wirklich aus, drum hoffe ich das noch jemand Tipps für mich hat.
Bin mir nämlich sicher dass die Konfiguration noch lange nicht perfekt ist...

Hier auch mal die Statistik von MySQL falls benötigt:
Array
(
[0] => Uptime: 51911
[1] => Threads: 86
[2] => Questions: 40018904
[3] => Slow queries: 191
[4] => Opens: 1509
[5] => Flush tables: 1
[6] => Open tables: 256
[7] => Queries per second avg: 770.914
)
Falls ihr noch mehr braucht einfach Bescheid geben!

Danke schön schonmal! Würde mich wirklich sehr freuen wenn ihr mir helfen könnntet!

Gruß Michael

PS: allow_persistent in der php.ini habe ich schon deaktiviert...
Hat aber wie es aussieht nicht sonderlich viel gebracht...
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: Server-Performance (Apache)

Post by flo »

1) MySQL-Slow-Query-Log einschalten, dann die Queries debuggen - vorher Gedanken machen über intelligente Schlüssel der Tabellen, das bringt schon viel.

2) Query-Cache benutzen, falls verfügbar.

3) Dem Apachen sinnvolle Werte nach
http://httpd.apache.org/docs/2.0/misc/perf-tuning.html
geben

Grüße,

flo.
htmlspyguy
Posts: 7
Joined: 2005-08-22 17:50
Location: Emskirchen
 

Re: Server-Performance (Apache)

Post by htmlspyguy »

Hallo Flo,

danke schonmal für die Tipps!

Query-Cache allerdings wird denke ich schon benutzt.

siehe:
Qcache_queries_in_cache 7854
Qcache_inserts 1663521
Qcache_hits 4346889
Qcache_lowmem_prunes 109494
Qcache_not_cached 455199
Qcache_free_memory 8392576
Qcache_free_blocks 910
Qcache_total_blocks 16669

und

query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
Oder muss man hierfür an den Querys selbst auch noch etwas ändern so dass diese gecached werden?
Aber gehe mal davon aus, dass dies autom. passiert.

Hier noch meine "my.cnf", evlt. fällt jemanden ja auf was man hieran noch verbessern könnte/sollte:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
bind-address = 127.0.0.1
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-locking
log_slow_queries = /var/log/mysql/slow.query.log
log_long_format
local-infile = 0
key_buffer_size = 128M
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 4M
max_allowed_packet = 1M
thread_stack = 128K
thread_cache = 8
table_cache = 512
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
thread_concurrency = 2

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer_size = 64M
sort_buffer_size = 4M
read_buffer_size = 1M
write_buffer_size = 1M

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 4M
read_buffer_size = 1M
write_buffer_size = 1M

[mysqlhotcopy]
interactive-timeout
Folgende zwei Dinge habe ich allerdings erst gerade eingebunden wie von flo empfohlen!
log_slow_queries = /var/log/mysql/slow.query.log
log_long_format
Die "Apache Performance Tuning"-Seite werde ich mir mal durchlesen, hoffe ich komme damit zurecht!

Hardware technisch habe ich übrigens folgendes:
Intel P4; 2,8 GHz; 800 FSB; 1 MB Ca.; 4x512 MB DDR-RAM

Schätze mal das es für Tipps recht hilfreich sein kann.

Gruß Michael
Post Reply