Apache 2.0. und MySQL 5.0 tunen / optimieren

Apache, Lighttpd, nginx, Cherokee
Anonymous

Apache 2.0. und MySQL 5.0 tunen / optimieren

Post by Anonymous » 2007-02-02 15:59

Hallo zusammen,
ich habe seit einigen Tagen einen neuen Root-Server von greatnet.de

Informationen dazu:
- Intel Celeron D 2533-3066 MHz
- 1024 MB DDR RAM
- Debian Sarge mit Confixx

Webserver und Datenbankserver:
- Apache 2.0.54
- PHP 4.4.4 (mit eAccelator)
- MySQL 5.0.32

Auf dem Server liegen zwei Wordpress Blogs.
Täglich sind ca. 10'000 Unique Besucher darauf. (Beide zusammengezählt)
In Spitzen Zeiten 200 User online (10min Timeoutzeit)

Bei den Blogs handelt es sich um Fun-Blogs. Sie schiessen die ganze Zeit Filme heraus. Ca. 5-10MB gross sind die Filme im Durchschnitt.

Die Prozessorlast und der Load sind jedoch recht hoch. (Siehe Grafiken) Würde diese gerne durch optimieren der Apache und MySQL Config verringern.

Hier mal ein paar Statistiken aus dem Cacti.

http://img72.imageshack.us/img72/8119/53663420mj9.png
http://img184.imageshack.us/img184/7025/45783194nr2.png
http://img110.imageshack.us/img110/7133/53909732rv3.png
http://img184.imageshack.us/img184/4369/44852496ug6.png
http://img184.imageshack.us/img184/5312/73422994od2.png

Habe auch schon die Suchfunktion genutzt aber bin irgendwie nicht weitergekommen mit den Links die ich da gefunden habe.

Wäre euch sehr dankbar, wenn mir jemand Tipps geben kann, wo ich optimieren / tunen kann. :)

MySQL-Config

Code: Select all

[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
old_passwords = false # inserted by debconf
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir	= /usr
datadir	= /var/lib/mysql
tmpdir		= /tmp
language	= /usr/share/mysql/english
skip-external-locking
skip-networking

key_buffer		= 16M
max_allowed_packet	= 16M
thread_stack		= 128K
thread_cache_size	= 8

query_cache_limit	= 1048576
query_cache_size	= 16777216
query_cache_type	= 1

#log_slow_queries	= /var/log/mysql/mysql-slow.log


log_bin		= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size	= 100M
skip-bdb

[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

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

[isamchk]
key_buffer		= 16M
Apache Config:

Code: Select all

ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 10

<IfModule prefork.c>
StartServers         5
MinSpareServers      5
MaxSpareServers     10
ServerLimit        150
MaxClients          150
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 /error/ "/usr/share/apache2/error/"

    <Directory "/usr/share/apache2/error">
        AllowOverride None
        Options IncludesNoExec
        AddOutputFilter Includes html
        AddHandler type-map var
        Order allow,deny
        Allow from all
        LanguagePriority en es de fr
        ForceLanguagePriority Prefer Fallback
    </Directory>

    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
    ErrorDocument 410 /error/HTTP_GONE.html.var
    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
    ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

</IfModule>
</IfModule>

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml

AccessFileName .htaccess

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

UseCanonicalName Off

TypesConfig /etc/mime.types
DefaultType text/plain

HostnameLookups Off

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

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

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
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/[^.#]*


## CONFIXX

Include /etc/apache2/confixx_mhost.conf

# It is imperative that this entry remain at the end of the file

## /CONFIXX
Top Shell Ausgabe:

Code: Select all

top - 15:51:01 up 13:55,  2 users,  load average: 0.81, 1.08, 1.30
Tasks: 162 total,   2 running, 160 sleeping,   0 stopped,   0 zombie
Cpu(s): 36.1% us,  5.0% sy,  0.0% ni, 57.3% id,  0.0% wa,  0.7% hi,  1.0% si
Mem:   1027260k total,   946652k used,    80608k free,    19428k buffers
Swap:  1004052k total,     3640k used,  1000412k free,   651680k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28524 www-data  15   0 38948  13m 7276 S  5.0  1.3   0:00.15 apache2
28481 www-data  15   0 38916  13m 7320 S  4.6  1.3   0:00.15 apache2
28514 www-data  15   0 39668  14m 8032 S  4.6  1.4   0:00.73 apache2
28526 www-data  15   0 38948  13m 7284 S  4.6  1.3   0:00.14 apache2
28497 www-data  15   0 38948  13m 7272 S  4.3  1.3   0:00.13 apache2
28517 www-data  15   0 39540  14m 8120 S  4.3  1.4   0:00.41 apache2
28525 www-data  16   0 39536  14m 8080 S  4.3  1.4   0:00.41 apache2
28484 www-data  15   0 39572  14m 8128 S  4.0  1.4   0:00.73 apache2
28523 www-data  15   0 38948  13m 7284 S  1.3  1.3   0:00.15 apache2
 1582 root      18   0  3120 1380 1172 S  0.7  0.1   1:17.90 pipelog.pl
28494 www-data  15   0 39556  14m 8088 S  0.7  1.4   0:00.44 apache2
 1580 root      18   0 36652 8056 4352 S  0.3  0.8   0:02.72 apache2
 1838 mysql     15   0  126m  34m 5232 S  0.3  3.5  10:04.82 mysqld
28511 root      15   0  2144 1108  836 R  0.3  0.1   0:00.02 top
28512 www-data  15   0 36788 5160 1392 S  0.3  0.5   0:00.01 apache2
    1 root      15   0  1592  524  456 S  0.0  0.1   0:00.24 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 events/0
    4 root      12  -5     0    0    0 S  0.0  0.0   0:00.01 khelper
    5 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
    8 root      10  -5     0    0    0 S  0.0  0.0   0:00.18 kblockd/0
    9 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kseriod
   98 root      25   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
   99 root      15   0     0    0    0 S  0.0  0.0   0:00.12 pdflush
  100 root      10  -5     0    0    0 S  0.0  0.0   0:00.22 kswapd0
  101 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
  102 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 jfsIO
  103 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 jfsCommit
  104 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 jfsSync
  105 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 xfslogd/0
  106 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 xfsdatad/0
  790 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 ata/0
  791 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 ata_aux
  794 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_0
  795 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_1
  823 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 kpsmoused
  826 root      10  -5     0    0    0 S  0.0  0.0   0:04.24 kjournald
  991 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kjournald
 1281 root      16   0  2336  736  620 S  0.0  0.1   0:01.30 syslogd
Lieber Gruss
dsone

r. u. serious
Posts: 88
Joined: 2006-06-10 14:17

Re: Apache 2.0. und MySQL 5.0 tunen / optimieren

Post by r. u. serious » 2007-02-03 12:02

Benutzt du wp-cache? Wordpress ist sagen wir mal suboptimal was CPU und Laufzeit angeht, etwas wie wp-cache reduziert die daraus resultierenden Probleme, da es da wo möglich cached und gecachede Seiten ausliefert.

Ansonsten könntest du versuchen alle Requests zu reduzieren welche durch PHP/Wordpress geschleift werden, bspw.: werden downloads vielleicht anstatt als statische Dateien auch durch wordpress/php geschleift? Vielleicht CSS-Dateien oder Bilder?

Auf jedenfall auch mal WP-Plugins abschalten und schauen ob sich das auf den CPU Verbrauch auswirkt - viele Plugins werden von unerfahrenen Einsteigern geschrieben sodaß wärend der Laufzeit oft unnötigerweise Ressourcen verbraten werden.

Was den Server selbst angeht - mysql scheint nicht viel zu tun, der Speicherverbrauch scheint kein Engpaß zu sein, die mysql- und apache-werte sehen ok aus, und einen PHP -Accelerator hat du auch schon im Einsatz. Man könnte ggf. noch einen Umstieg an Lighttpd o.ä. denken, aber das fällt fast schon ins "Geschmacksdepartment", und am CPU-Verbrauch wird es AFAIK nicht viel tun.

Auf wieviele Pageviews/PHP-Requests kommst du denn in Spitzenzeit pro Sekunde? Pro Minute? ANhand der Eckdaten sollte das eigentlich nicht soviele sein, weswegen mir die 40% CPU immer noch irgendwie etwas hoch vorkommen...