Server tunen

freq

New Member
Hallo,

ich würde gerne wissen, wie ich meinen Server tunen kann. Habe folgende Hardware:

AMD 3000+
1Gb Ram
2 * 80GB per Sata


Hier meine Apache2 Config /etc/apache2/apache2.conf:

Code:
# Based upon the NCSA server configuration files originally by Rob McCool.
# Changed extensively for the Debian package by Daniel Stone <daniel@sfarc.net>
# and also by Thom May <thom@debian.org>.

# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation
# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
# you will save yourself a lot of trouble.

ServerRoot "/etc/apache2"

# The LockFile directive sets the path to the lockfile used when Apache
# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
# its default value. The main reason for changing it is if the logs
# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
# DISK. The PID of the main server process is automatically appended to
# the filename.

LockFile /var/lock/apache2/accept.lock

# PidFile: The file in which the server should record its process
# identification number when it starts.

PidFile /var/run/apache2.pid

# Timeout: The number of seconds before receives and sends time out.

Timeout 300

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.

MaxKeepAliveRequests 100

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.

KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
##
# StartServers ......... number of server processes to start
# MinSpareServers ...... minimum number of server processes which are kept spare
# MaxSpareServers ...... maximum number of server processes which are kept spare
# MaxClients ........... maximum number of server processes allowed to start
# MaxRequestsPerChild .. maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       10
MinSpareServers    50
MaxSpareServers     100
MaxClients          300
MaxRequestsPerChild 10000
ServerLimit 300
</IfModule>

# pthread MPM
# StartServers ......... initial  number of server processes to start
# MaxClients ........... maximum  number of server processes allowed to start
# MinSpareThreads ...... minimum  number of worker threads which are kept spare
# MaxSpareThreads ...... maximum  number of worker threads which are kept spare
# ThreadsPerChild ...... constant number of worker threads in each server process
# MaxRequestsPerChild .. maximum  number of requests a server process serves
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

# perchild MPM
# NumServers ........... constant number of server processes
# StartThreads ......... initial  number of worker threads in each server process
# MinSpareThreads ...... minimum  number of worker threads which are kept spare
# MaxSpareThreads ...... maximum  number of worker threads which are kept spare
# MaxThreadsPerChild ... maximum  number of worker threads in each server process
# MaxRequestsPerChild .. maximum  number of connections per server process (then it dies)
<IfModule perchild.c>
NumServers           5
StartThreads         5
MinSpareThreads      5
MaxSpareThreads     10
MaxThreadsPerChild  20
MaxRequestsPerChild  0
AcceptMutex fcntl
</IfModule>

User www-data
Group www-data

# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
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


# Global error log.
ErrorLog /var/log/apache2/error.log

# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:
Include /etc/apache2/httpd.conf

# Include ports listing
Include /etc/apache2/ports.conf
# Include generic snippets of statements
Include /etc/apache2/conf.d/[^.#]*

#Let's have some Icons, shall we?
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# Set up the default error docs.
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# Putting this all together, we can Internationalize error responses.
#
# We use Alias to redirect any /error/HTTP_<error>.html.var response to
# our collection of by-error message multi-language collections.  We use
# includes to substitute the appropriate text.
#
# You can modify the messages' appearance without changing any of the
# default HTTP_<error>.html.var files by adding the line;
#
#   Alias /error/include/ "/your/include/path/"
#
# which allows you to create your own set of files by starting with the
# /usr/local/apache2/error/include/ files and
# copying them to /your/include/path/, even on a per-VirtualHost basis.
#

<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 at_domains_index.html index.html index.cgi index.pl index.php index.xhtml index.shtml index.cfm index.htm

# UserDir is now a module
#UserDir public_html
#UserDir disabled root

#<Directory /home/*/public_html>
#       AllowOverride FileInfo AuthConfig Limit
#       Options Indexes SymLinksIfOwnerMatch IncludesNoExec
#</Directory>

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/*

# This really should be .jpg.

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^^


# This is from Matty J's patch. Anyone want to make the icons?
#AddIcon /icons/dirsymlink.jpg ^^SYMDIR^^
#AddIcon /icons/symlink.jpg ^^SYMLINK^^

DefaultIcon /icons/unknown.gif

ReadmeName README.html
HeaderName HEADER.html

Habe nun nicht meine ganze Datei geposteet, da es zu viel Arbeit ist, immer alles zu markieren, dann runterzuscrollen, wieder alles markieren und so weiter ... kann ich nicht einfahc die ganze Datei markieren und kopieren?

Was braucht Ihr noch für Angaben und Dateien?

Danke und Gruß
 
Die Datei /etc/my.cnf zur Einstellung meiner MySQL Sachen existiert nicht :( [Edsit: Habe die Datei unter /etc/mysql/my.cnf gefunden]

Bei den Einstellungen zu MySQL fehlt meiner Meinung nach auch noch die Angabe zu Servern mit 1Gb. Es sind nur Beispiele für Server >5GB oder <= 512MB angegeben. Edit: habe nun folgende Einstellungen genutzt:
Code:
[mysqld]
set-variable = max_connections=1000

key_buffer=64M
table_cache=256
sort_buffer=4M

Kannst Du mir bitte genau sagen, was ich wo eintragen soll? Brauchst Du noch andere Configs von mir?

Und kannst Du mir sagen bitte, wie ich eine ganze Config Datei auf einmal posten kann? Danke vielmals!
 
Last edited by a moderator:
Such nach key_buffer, und änder den Wert und trage die anderen darunter ein.
Ist es wichtig, dass ich die anderen Einstellungen genau darunter eintrage?
Gibt es sonst etwas zum Tunen außer diese MySQL Einstellungen und diese Einstellungen, die ich noch für APache gemacht habe:

Code:
<IfModule prefork.c>
StartServers       10
MinSpareServers    50
MaxSpareServers     100
MaxClients          300
MaxRequestsPerChild 10000
</IfModule>

Was mich wundert: Diese Einstellungen gibt es nochmals in einem anderen Abschnitt (also mit einem anderen <IfModule bla> davor), z.B. hier:

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

Soll ich sie dort ebenfalls abändern? Nochwas: Wenn ich den Apache danach neu starte, bekomme ich eine Meldung, dass MaxClients zu hoch eingestellt wäre, weil irgendwo ServerLimit eingestellt sei:

Code:
Forcing reload of web server: Apache2WARNING: MaxClients of 300 exceeds ServerLimit value of 256 servers,
 lowering MaxClients to 256.  To increase, please see the ServerLimit
 directive.

Die Einstellung ServerLimit habe ich jedoch nicht in der apache2.conf gefunden. Was mache ich nun?

Was mich bei den Einstellungen für MySQL wundert:
das key_buffer habe ich 2 mal gefunden. Einmal unter

Code:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address          = 127.0.0.1
#
# * Fine Tuning
#
key_buffer              = 64M
table_cache             =256
sort_buffer             =4M

und dann nochmals hier:

Code:
[isamchk]
key_buffer              = 16M
 
Last edited by a moderator:
Ist es wichtig, dass ich die anderen Einstellungen genau darunter eintrage?

Nein. Aber mach es sonst machst du bestimmt einen Fehler.

Gibt es sonst etwas zum Tunen außer diese MySQL Einstellungen und diese Einstellungen, die ich noch für APache gemacht habe:

Klar. Aber fang erstmal mit dem wichtigsten an und lerne es!

Was mich wundert: Diese Einstellungen gibt es nochmals in einem anderen Abschnitt (also mit einem anderen <IfModule bla> davor), [...]
Soll ich sie dort ebenfalls abändern?

Nein. Apache nutzt entweder oder. Prefork in den meisten Fällen, wenn PHP installiert ist wegen der Kompatibilität. (So wie bei dir)

Nochwas: Wenn ich den Apache danach neu starte, bekomme ich eine Meldung, dass MaxClients zu hoch eingestellt wäre, weil irgendwo ServerLimit eingestellt sei:
Die Einstellung ServerLimit habe ich jedoch nicht in der apache2.conf gefunden. Was mache ich nun?

Adden. Einfach
Code:
ServerLimit 300
über MaxClients hinzufügen.

Was mich bei den Einstellungen für MySQL wundert:
das key_buffer habe ich 2 mal gefunden. Einmal unter

Nicht umsonst steht in der Anleitung "in der Sektion mysqld eintragen", also [mysqld].
Beschäftige dich bitte mit dem was du tust (ließ alles genau, guck dir die Dateien vorher komplett an mit denen du arbeitest), sonst helfe ich dir nicht mehr.

[...]ändere in deiner apache2.conf[...]

Das ist eine falsche Antwort nicht machen!

Ok danke, das geht. Aber was ist nun mit Plesk? Ich kann die Seite nicht mehr aufrufen :(

Ließ die Fehlermeldungen deines Apache. Läuft er überhaupt nach der Fehlermeldung?
Wenn nicht fix das mit ServerLimit wie ich beschrieben habe,
dann ein

Code:
apache2ctl start
 
-Ok habe die Einstellungen darunter eingefügt
-Ok habe nur die Einstellungen pre Prefork genommen
-ServerLimit eingefügt
-""in der Sektion mysqld eintragen", also [mysqld]." hab ich mir so gedacht und habe ich auch so gemacht ;) Wollte mich nur versichern!
-"Ließ die Fehlermeldungen deines Apache. Läuft er überhaupt nach der Fehlermeldung?" habe ich gemacht. Er läuft super gut, siehe:

Code:
MNH001:/etc/apache2/conf.d# /etc/init.d/apache2 stop
Stopping web server: Apache2.
MNH001:/etc/apache2/conf.d# apache2ctl start
MNH001:/etc/apache2/conf.d#

trotzdem funktioniert Plesk nicht :( Irgendwie sind anscheinend Dateien verloren gegangen.

Danke schonmal für Deine Hilfe. Kannst Du mir bei dem Plesk Problem eventuell ein wenig Unterstützung per ICQ geben oder so!?

Edit: Das mit Plesk liegt wahrscheinlich an meinem PHP Update (siehe anderer Thread). Habe mal einen extra Thread im Plesk Unterforum aufgemacht, um die Übersicht zu wahren!
 
Danke schonmal für Deine Hilfe. Kannst Du mir bei dem Plesk Problem eventuell ein wenig Unterstützung per ICQ geben oder so!?

Mit Plesk habe ich leider keinerlei Erfahrung. Wenn die anderen Seiten gehen kann ich dir ab hier nicht weiter helfen.
 
Back
Top