Hilfe! Server geht total in die Knie!

sky2high

New Member
Hallo.

Auf meinem vServer laufen derzeit 2 Webseiten. Eine Webseite, ist eher nebensächlich, dort läuft nur ein Wordpress mit nicht vielen Besuchern am Tag. Die andere Seite hat täglich über 2000 echte Besucher und hat zu Spitzenzeiten 100 Besucher gleichzeitig online, so wie es heute war und der Server nicht mehr klar kam. Nebenbei laufen noch etwa 3 TS-Server auf dem Server.

Die 100+ Besucher sind alle in einem phpBB3-Forum online.

Der vServer hat 256MB fest und 768MB dynamisch.

Mein alter vServer hatte nur 128mb/512MB dynamisch und da lief es besser mit. Anbieter ist gleich (Host-Europe), habe jetzt halt mehr RAM aber es läuft schlechter.

Im Moment ist die server-tuning und die my.cnf nach diesem Thread (nach den Tipps von noto) eingestellt:

Diesen Thread hatte ich für einen Freund erstellt.

Mit noto's Werten (max connections 30) läuft es nun wenigstens wieder (10 Min stabil im Moment). Könnt ihr mir noch bessere Werte für diese Situation nennen? MySQL werde ich
gemäß tuning-primer anpassen, aber Apache?

top: ( Im Moment ca. 60 Online)

Code:
top - 16:03:19 up 40 min,  1 user,  load average: 1.12, 2.31, 1.91
Tasks:  35 total,   2 running,  33 sleeping,   0 stopped,   0 zombie
Cpu(s): 14.2% us,  3.9% sy,  0.0% ni, 81.9% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   4016352k total,  3831040k used,   185312k free,   288032k buffers
Swap:  8193140k total,     4724k used,  8188416k free,  1985928k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
9332 wwwrun    15   0 63600  13m 3028 S  8.3  0.4   0:00.54 httpd2-prefork
9336 wwwrun    15   0 63744  14m 3624 S  1.3  0.4   0:00.96 httpd2-prefork
9355 wwwrun    15   0 60640  10m 2928 S  1.3  0.3   0:00.08 httpd2-prefork
5470 mysql     16   0  107m  12m 4596 S  0.7  0.3   0:09.55 mysqld
9352 root      16   0  2108 1076  832 R  0.7  0.0   0:00.04 top
9358 wwwrun    15   0 59944  10m 2840 S  0.7  0.3   0:00.02 httpd2-prefork
9318 wwwrun    15   0 64448  14m 2972 S  0.3  0.4   0:01.78 httpd2-prefork
9340 wwwrun    16   0 62976  13m 2944 S  0.3  0.3   0:00.25 httpd2-prefork
    1 root      15   0   640  284  248 S  0.0  0.0   0:00.01 init
22423 root      16   0  1512  608  504 S  0.0  0.0   0:00.04 syslogd
22435 root      25   0  2968  740  568 S  0.0  0.0   0:00.00 couriertcpd
22437 root      25   0  2744  704  552 S  0.0  0.0   0:00.00 courierlogger
22447 root      25   0  2968  740  568 S  0.0  0.0   0:00.00 couriertcpd
22452 root      25   0  2744  704  552 S  0.0  0.0   0:00.00 courierlogger
22456 root      25   0  2968  740  568 S  0.0  0.0   0:00.00 couriertcpd
22463 root      25   0  2740  700  552 S  0.0  0.0   0:00.00 courierlogger
22466 root      25   0  2968  740  568 S  0.0  0.0   0:00.00 couriertcpd
22468 root      25   0  2744  704  552 S  0.0  0.0   0:00.00 courierlogger
22492 root      16   0  4856 1292  928 S  0.0  0.0   0:00.09 sshd
22500 root      16   0  2144  884  720 S  0.0  0.0   0:00.02 xinetd
23728 qmails    15   0  1484  396  312 S  0.0  0.0   0:00.10 qmail-send
23729 qmaill    15   0  1436  460  400 S  0.0  0.0   0:00.00 splogger
23730 root      15   0  1468  368  280 S  0.0  0.0   0:00.00 qmail-lspawn
23731 qmailr    15   0  1460  380  288 S  0.0  0.0   0:00.00 qmail-rspawn
23732 qmailq    15   0  1432  332  272 S  0.0  0.0   0:00.00 qmail-clean
23927 root      16   0 39740 6400 3936 S  0.0  0.2   0:00.07 httpsd
23933 psaadm    17   0 39740 3420  960 S  0.0  0.1   0:00.00 httpsd
23937 psaadm    16   0 39740 3424  960 S  0.0  0.1   0:00.00 httpsd
23946 root      16   0  1728  696  572 S  0.0  0.0   0:00.00 cron
26537 root      16   0  9476 2708 2120 R  0.0  0.1   0:00.46 sshd
26541 root      15   0  2912 1824 1332 S  0.0  0.0   0:00.36 bash
5298 root      15   0 59732  13m 6336 S  0.0  0.3   0:00.96 httpd2-prefork
5313 wwwrun    16   0 62976  13m 2916 S  0.0  0.3   0:00.19 httpd2-prefork
5415 root      25   0  2452 1212  980 S  0.0  0.0   0:00.02 mysqld_safe
9312 wwwrun    16   0 63912  14m 2964 S  0.0  0.4   0:01.17 httpd2-prefork

server-tuning Ausschnit:

Code:
# prefork MPM
<IfModule prefork.c>
        # number of server processes to start
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#startservers
        StartServers       1
        # minimum number of server processes which are kept spare
        # http://httpd.apache.org/docs/2.2/mod/prefork.html#minspareservers
        MinSpareServers    1
        # maximum number of server processes which are kept spare
        # http://httpd.apache.org/docs/2.2/mod/prefork.html#maxspareservers
        MaxSpareServers    2
        # highest possible MaxClients setting for the lifetime of the Apache process.
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#serverlimit
        ServerLimit      30
        # maximum number of server processes allowed to start
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients
        MaxClients      30
        # maximum number of requests a server process serves
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild
        MaxRequestsPerChild 4000
</IfModule>

HostnameLookups off

# worker MPM
<IfModule worker.c>
        # initial number of server processes to start
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#startservers
        StartServers       1
        # minimum number of worker threads which are kept spare
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#minsparethreads
        MinSpareThreads    1
        # maximum number of worker threads which are kept spare
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxsparethreads
        MaxSpareThreads    4
        # upper limit on the configurable number of threads per child process
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#threadlimit
        ThreadLimit         64
        # maximum number of simultaneous client connections
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients
        MaxClients        10
        # number of worker threads created by each child process
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#threadsperchild
        ThreadsPerChild     25
        # maximum number of requests a server process serves
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild
        MaxRequestsPerChild  10000
</IfModule>
 
Hast du mal mySQL mit mtop beobachtet bzw. slow-queries aktiviert?

Wenn`s nicht an mySQL liegt, eventuell mal auf lighttpd umschwenken. Apache/mySQL braucht zum starten jeweils schon fast 128MB RAM. Wenn der dynamische RAM verbraucht (durch deine vServer-Nachbarn) ist, hast du eventuell schlechte Karten.
 
KeepAliveTimeout auf 2 Sekunden stellen. /ect/..../server-tuning.conf
Code:
Timeout 30
KeepAlive [COLOR="Blue"]On[/COLOR]
MaxKeepAliveRequests 100
[COLOR="Blue"]KeepAliveTimeout 2[/COLOR]
und Apache Module ausklammern die du nicht benötigst. Und natürlich die /etc/my.cnf richtig konfigurieren.

Beispiel
Code:
[mysqld]

key_buffer = 4M
net_buffer_length = 1K

sort_buffer_size = 32K
myisam_sort_buffer_size = 32K
read_buffer_size = 16K
read_rnd_buffer_size = 32K
join_buffer_size = 1M

query_cache_size = 2M
thread_cache = 8
table_cache = 512
max_allowed_packet = 256K

[COLOR="Blue"]max_connections = 21[/COLOR]
low_priority_updates = 1
long_query_time = 2

und
Code:
<IfModule prefork.c>
StartServers       1
MinSpareServers    1
MaxSpareServers    2
ServerLimit       23
[COLOR="Blue"]MaxClients        21[/COLOR]
MaxRequestsPerChild  8000
</IfModule>
 
Last edited by a moderator:
Hmmm, ob das funzt mit

max_connections = 21

und

MaxClients 21
MaxRequestsPerChild 8000

?

Zudem dauert es einige Zeit bis Apache neue Child-Prozesse spawnen tut:

MaxSpareServers 2
 
Bevor ein User eine MySQL Verbindung erhält, muß er erstmal eine Verbindung mit dem Webserver haben. Daher sind bei mir MaxClients und max_connections immer gleich hoch.

Beispiel:

MySQL hat max_connections = 22 und Apache hat MaxClients 21

Von den MaxClients 21 sind alle belegt. Zum MySQL Server wäre noch eine Verbindung frei. Zum MySQL Server könnte ich also eine Verbindung bekommen, wenn ich eine Verbindung zu Apache bekommen würde. Da sind aber alle 21 bereits belegt.
 
wir diskutieren gerade in einem anderen Thread wie das Verhältnis von MaxClienst und max_connections tatsächlich ist.Nach bisherigen Zahlen liegt das Verhältnis bei 1:2 oder höher.

Link zum Thread
 
Hallo. Ich schreibe hier nach einiger Zeit mal wieder rein, da das Problem weiterhin jetzt wieder besteht, weil die Besucherzahlen weiter ansteigen und zu Spitzenzeiten mal 150 im Forum unterwegs sind. Der Server geht aber schon ab etwa 80 Usern Online sehr in die Knie.

max_connections steht jetzt auf 30, und ist schon bei 93% (tuning_primer). Historic max used connections war halt 28.

Was ich jetzt eben gemacht habe:

key_buffer_size 16MB -> 32MB (tuning_primer empfehlung)
table_cache 512 -> 1024 "


Hier dann mal einige Auschnitte:

top: (Kurz nach Apache und Mysql Restart, 26 Besucher online)
Code:
top - 16:33:21 up 26 days, 18:41,  2 users,  load average: 1.68, 1.98, 2.01
Tasks:  33 total,   2 running,  31 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.5% us,  3.1% sy,  0.0% ni, 86.8% id,  1.6% wa,  0.0% hi,  0.0% si
Mem:   4016352k total,  3933616k used,    82736k free,   165120k buffers
Swap:  8193140k total,     3616k used,  8189524k free,  1544604k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
20340 wwwrun    16   0 63788  14m 3588 S  6.3  0.4   0:00.62 httpd2-prefork
19798 mysql     16   0  128m  14m 4352 S  1.7  0.4   0:02.84 mysqld
20342 root      16   0  2108 1072  832 R  0.7  0.0   0:00.05 top
20343 wwwrun    16   0 59988  10m 2824 S  0.7  0.3   0:00.02 httpd2-prefork
19501 root      15   0 59708  13m 6336 S  0.3  0.3   0:00.72 httpd2-prefork
20335 wwwrun    15   0 64092  14m 2936 S  0.3  0.4   0:00.55 httpd2-prefork
    1 root      16   0   640  284  248 S  0.0  0.0   0:08.54 init
 3809 messageb  16   0  3356  928  732 S  0.0  0.0   0:00.00 dbus-daemon
 5152 root      16   0  1512  608  504 S  0.0  0.0   0:49.65 syslogd
 5165 root      15   0  2972  748  572 S  0.0  0.0   0:00.01 couriertcpd
 5167 root      16   0  2876  852  688 S  0.0  0.0   0:00.00 courierlogger
 5176 root      25   0  2968  740  568 S  0.0  0.0   0:00.00 couriertcpd
 5178 root      25   0  2744  704  552 S  0.0  0.0   0:00.00 courierlogger
 5185 root      15   0  2968  744  572 S  0.0  0.0   0:00.09 couriertcpd
 5189 root      15   0  2872  848  688 S  0.0  0.0   0:00.03 courierlogger
 5197 root      25   0  2968  740  568 S  0.0  0.0   0:00.00 couriertcpd
 5200 root      25   0  2744  704  552 S  0.0  0.0   0:00.00 courierlogger
 5208 root      34  19 68476  13m 6744 S  0.0  0.3   3:52.42 zmd
 5216 root      16   0  4856 1292  928 S  0.0  0.0   0:46.78 sshd
 5222 root      16   0  2144  900  724 S  0.0  0.0   0:02.49 xinetd
 5380 qmails    16   0  1484  476  392 S  0.0  0.0   1:14.75 qmail-send
 5383 qmaill    16   0  1436  460  400 S  0.0  0.0   0:02.76 splogger
 5384 root      16   0  1468  372  280 S  0.0  0.0   0:00.59 qmail-lspawn
 5385 qmailr    17   0  1592  624  288 S  0.0  0.0   0:01.21 qmail-rspawn
 5386 qmailq    16   0  1432  332  272 S  0.0  0.0   0:01.25 qmail-clean
 5535 root      16   0  1728  696  572 S  0.0  0.0   0:00.77 cron
 7613 ts        34  19  212m 9672 1612 S  0.0  0.2 182:51.96 server_linux
 3649 named     20   0 36668 2892 1884 S  0.0  0.1   0:00.05 named
 3693 root      16   0 27076  24m 2288 S  0.0  0.6   0:03.13 spamd
 3696 popuser   16   0 27076  23m 1036 S  0.0  0.6   0:00.06 spamd
13964 root      16   0  9472 2704 2120 R  0.0  0.1   0:00.50 sshd
14115 root      15   0  2912 1816 1324 S  0.0  0.0   0:00.28 bash
19753 root      23   0  2452 1212  980 S  0.0  0.0   0:00.02 mysqld_safe

Auschnitt server-tuning
Code:
# prefork MPM
<IfModule prefork.c>
        # number of server processes to start
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#startservers
        StartServers       1
        # minimum number of server processes which are kept spare
        # http://httpd.apache.org/docs/2.2/mod/prefork.html#minspareservers
        MinSpareServers    1
        # maximum number of server processes which are kept spare
        # http://httpd.apache.org/docs/2.2/mod/prefork.html#maxspareservers
        MaxSpareServers    2
        # highest possible MaxClients setting for the lifetime of the Apache process.
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#serverlimit
        ServerLimit      30
        # maximum number of server processes allowed to start
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients
        MaxClients      30
        # maximum number of requests a server process serves
        # http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild
        MaxRequestsPerChild 8000
</IfModule>

HostnameLookups off

# worker MPM

Auschnitt my.cnf
Code:
# The MySQL server
[mysqld]
set-variable=local-infile=0
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 32M
max_allowed_packet = 256K
table_cache = 1024
sort_buffer_size = 512K
net_buffer_length = 1K
read_buffer_size = 256K
read_rnd_buffer_size = 32K
myisam_sort_buffer_size = 32K
thread_cache = 16
join_buffer_size = 1M
max_connections = 30
long_query_time = 2
low_priority_updates = 1


Bin um Hilfe dankbar.

Die Ursache warum er in die Knie geht sollte daran liegen das nicht mehr genug RAM frei ist, also ich hab zu Spitzenzeiten dann immer QoS Alerts. Plesk ist normalerweise aus und nur an wenn ich da was gucke. User berichten mir dann von sehr langen Ladezeiten bis zu weißen Seiten oder Server komplett nicht erreichbar.
 
Last edited by a moderator:
Back
Top