apache2.conf bei 8 Gigabyte RAM
-
- Posts: 22
- Joined: 2008-01-07 22:09
apache2.conf bei 8 Gigabyte RAM
Ich habe den 1und1 Root Server mit 8 Gigabyte Ram und lasse dort PHP5 und MySQL 4.1 laufen.
Bis 420 eingeloggte User ist die Seite schnell, und dann geht garnichts mehr.
Mein Konfiguration ist dabei:
<IfModule mpm_prefork_module>
StartServers 400
MinSpareServers 100
MaxSpareServers 150
ServerLimit 550
MaxClients 550
MaxRequestsPerChild 0
</IfModule>
Wenn ich StartServers auf 500 erhöhe läuft garnichts.
Hier ist die top Ausgabe:
top - 21:18:50 up 2:03, 2 users, load average: 11.32, 9.96, 9.78
Tasks: 316 total, 5 running, 310 sleeping, 0 stopped, 1 zombie
Cpu(s): 64.3% us, 12.5% sy, 0.0% ni, 21.7% id, 0.2% wa, 0.1% hi, 1.1% si
Mem: 8240616k total, 7184628k used, 1055988k free, 4932k buffers
Swap: 1959920k total, 0k used, 1959920k free, 4656196k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4252 mysql4 15 0 769m 358m 4088 S 94.0 4.5 120:23.05 mysqld
19762 www-data 15 0 184m 18m 3684 S 4.0 0.2 0:01.15 apache2
19857 www-data 15 0 185m 18m 3596 S 4.0 0.2 0:01.03 apache2
19604 www-data 16 0 186m 18m 4516 S 3.7 0.2 0:01.22 apache2
19931 www-data 15 0 183m 16m 3604 S 3.7 0.2 0:00.99 apache2
19583 www-data 24 0 185m 18m 3768 R 3.3 0.2 0:01.12 apache2
19666 www-data 16 0 184m 17m 3596 S 3.3 0.2 0:01.24 apache2
19691 www-data 15 0 185m 18m 3692 S 3.3 0.2 0:01.26 apache2
19692 www-data 15 0 185m 18m 3692 S 3.3 0.2 0:01.19 apache2
19921 www-data 15 0 184m 18m 3628 S 3.3 0.2 0:01.28 apache2
19612 www-data 15 0 185m 18m 3832 S 3.0 0.2 0:01.44 apache2
19836 www-data 16 0 184m 18m 3692 S 3.0 0.2 0:01.17 apache2
19890 www-data 15 0 184m 18m 3872 S 3.0 0.2 0:01.12 apache2
19918 www-data 15 0 185m 18m 3684 S 3.0 0.2 0:01.17 apache2
19861 www-data 15 0 185m 18m 3704 S 2.7 0.2 0:01.07 apache2
Apache2 spuckt folgendes aus:
Server uptime: 4 minutes 29 seconds
Total accesses: 31499 - Total Traffic: 44.6 MB
CPU Usage: u412.34 s33.75 cu.11 cs0 - 166% CPU load
117 requests/sec - 169.6 kB/second - 1483 B/request
47 requests currently being processed, 133 idle workers
_..__..W._._...__._.__.._._.___.___....W...C..._..W__.C__.__R.W.
.._....C..._.._..CC..__._.W_.__._.CC.__._...._._.__C..._....._._
....C.....C......C.__.._...._W...C..._.C....._.C..._...W.._...__
_C__...._..._..CC_...._._..W.___C..__._.._.__...__..__.CC____._.
___._._._W.._C...C_._.__..._____..._.._...C...__..___C..._C._._.
.C.......C_.___..C_...C_C..._...._._.._..C_C....C.._.._W._____._
W._.C___.__.._.C................................................
................................................................
......................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Keep Alive ist off.
Wie ist denn die Vorgehensweise bei sowas ausser Blind mit den Parametern herumzuspielen?
Bis 420 eingeloggte User ist die Seite schnell, und dann geht garnichts mehr.
Mein Konfiguration ist dabei:
<IfModule mpm_prefork_module>
StartServers 400
MinSpareServers 100
MaxSpareServers 150
ServerLimit 550
MaxClients 550
MaxRequestsPerChild 0
</IfModule>
Wenn ich StartServers auf 500 erhöhe läuft garnichts.
Hier ist die top Ausgabe:
top - 21:18:50 up 2:03, 2 users, load average: 11.32, 9.96, 9.78
Tasks: 316 total, 5 running, 310 sleeping, 0 stopped, 1 zombie
Cpu(s): 64.3% us, 12.5% sy, 0.0% ni, 21.7% id, 0.2% wa, 0.1% hi, 1.1% si
Mem: 8240616k total, 7184628k used, 1055988k free, 4932k buffers
Swap: 1959920k total, 0k used, 1959920k free, 4656196k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4252 mysql4 15 0 769m 358m 4088 S 94.0 4.5 120:23.05 mysqld
19762 www-data 15 0 184m 18m 3684 S 4.0 0.2 0:01.15 apache2
19857 www-data 15 0 185m 18m 3596 S 4.0 0.2 0:01.03 apache2
19604 www-data 16 0 186m 18m 4516 S 3.7 0.2 0:01.22 apache2
19931 www-data 15 0 183m 16m 3604 S 3.7 0.2 0:00.99 apache2
19583 www-data 24 0 185m 18m 3768 R 3.3 0.2 0:01.12 apache2
19666 www-data 16 0 184m 17m 3596 S 3.3 0.2 0:01.24 apache2
19691 www-data 15 0 185m 18m 3692 S 3.3 0.2 0:01.26 apache2
19692 www-data 15 0 185m 18m 3692 S 3.3 0.2 0:01.19 apache2
19921 www-data 15 0 184m 18m 3628 S 3.3 0.2 0:01.28 apache2
19612 www-data 15 0 185m 18m 3832 S 3.0 0.2 0:01.44 apache2
19836 www-data 16 0 184m 18m 3692 S 3.0 0.2 0:01.17 apache2
19890 www-data 15 0 184m 18m 3872 S 3.0 0.2 0:01.12 apache2
19918 www-data 15 0 185m 18m 3684 S 3.0 0.2 0:01.17 apache2
19861 www-data 15 0 185m 18m 3704 S 2.7 0.2 0:01.07 apache2
Apache2 spuckt folgendes aus:
Server uptime: 4 minutes 29 seconds
Total accesses: 31499 - Total Traffic: 44.6 MB
CPU Usage: u412.34 s33.75 cu.11 cs0 - 166% CPU load
117 requests/sec - 169.6 kB/second - 1483 B/request
47 requests currently being processed, 133 idle workers
_..__..W._._...__._.__.._._.___.___....W...C..._..W__.C__.__R.W.
.._....C..._.._..CC..__._.W_.__._.CC.__._...._._.__C..._....._._
....C.....C......C.__.._...._W...C..._.C....._.C..._...W.._...__
_C__...._..._..CC_...._._..W.___C..__._.._.__...__..__.CC____._.
___._._._W.._C...C_._.__..._____..._.._...C...__..___C..._C._._.
.C.......C_.___..C_...C_C..._...._._.._..C_C....C.._.._W._____._
W._.C___.__.._.C................................................
................................................................
......................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Keep Alive ist off.
Wie ist denn die Vorgehensweise bei sowas ausser Blind mit den Parametern herumzuspielen?
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
[snip]
Last edited by Joe User on 2008-01-07 22:54, edited 1 time in total.
Reason: Solche Angebote sind hier unerwünscht!
Reason: Solche Angebote sind hier unerwünscht!
Re: apache2.conf bei 8 Gigabyte RAM
http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
BTW: Gemäss top wären 4GB RAM völlig ausreichend...
BTW: Gemäss top wären 4GB RAM völlig ausreichend...
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: apache2.conf bei 8 Gigabyte RAM
Wenn ich raten müsste, würde ich sagen, dass der MySQL-Server der Flaschenhals ist und nicht der Webserver...
Re: apache2.conf bei 8 Gigabyte RAM
Versuche es mal mit:
Gegebenenfalls auf mpm-worker oder gleich lighttpd umsteigen. Ansonsten siehe Roger Wilco...
Code: Select all
KeepAlive Off
KeepAliveTimeout 2
MaxKeepAliveRequests 50
<IfModule mpm_prefork_module>
StartServers 50
MinSpareServers 50
MaxSpareServers 250
MaxClients 750
MaxRequestsPerChild 5000
</IfModule>
UseCanonicalName On
HostnameLookups Off
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Danke!
Wenn KeepAlive = off ist, ist doch
KeepAliveTimeout und
KeepAliveRequests egal, oder nicht ?
StartServers muss relativ hoch sein, da sonst bei voller Last der Server garnicht
mehr läuft wenn ich Apache stoppe und starte.
Da der Server zu Peak Zeiten gut laufen soll, kann ich ja die maximale Anzahl der Server dauernd haben,
auch wenn nichts los ist.
Was hat es genau mit dem MaxRequestsPerChild auf sich? 0=unbegrenzt?
Was ist ein Child? Die Anzahl der Threads pro Server ?
HostnameLookups brauche ich glaube ich für mod_rewrite abhängig von Domainnamen
oder von IP Adressen Lookups oder so ?
Ich habe nun folgende Einstellung und es läuft gerade ganz gut:
<IfModule mpm_prefork_module>
StartServers 500
MinSpareServers 500
MaxSpareServers 500
ServerLimit 500
MaxClients 500
MaxRequestsPerChild 0
</IfModule>
top - 23:14:06 up 3:59, 2 users, load average: 8.71, 9.86, 10.63
Tasks: 588 total, 1 running, 587 sleeping, 0 stopped, 0 zombie
Cpu(s): 50.3% us, 21.4% sy, 0.0% ni, 27.3% id, 0.0% wa, 0.1% hi, 1.0% si
Mem: 8240616k total, 8108072k used, 132544k free, 4584k buffers
Swap: 1959920k total, 864k used, 1959056k free, 3038432k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4252 mysql4 15 0 784m 370m 4128 S 99.9 4.6 239:57.55 mysqld
7552 www-data 16 0 187m 19m 4512 S 3.0 0.2 0:02.24 apache2
7660 www-data 16 0 186m 19m 3736 S 2.6 0.2 0:02.50 apache2
7663 www-data 17 0 187m 19m 4588 S 2.6 0.2 0:02.05 apache2
7866 www-data 16 0 185m 18m 3928 S 2.6 0.2 0:02.52 apache2
7703 www-data 15 0 192m 24m 4516 S 2.3 0.3 0:02.41 apache2
7859 www-data 15 0 187m 18m 4552 S 2.3 0.2 0:02.12 apache2
7916 www-data 15 0 187m 19m 4500 S 2.3 0.2 0:02.13 apache2
7548 www-data 16 0 184m 17m 3740 S 2.0 0.2 0:01.87 apache2
7830 www-data 15 0 185m 18m 3808 S 2.0 0.2 0:02.22 apache2
7833 www-data 16 0 184m 17m 3660 S 2.0 0.2 0:02.15 apache2
7843 www-data 16 0 185m 18m 3800 S 2.0 0.2 0:02.39 apache2
7460 www-data 16 0 185m 18m 3748 S 1.6 0.2 0:02.15 apache2
7748 www-data 16 0 186m 18m 4520 S 1.6 0.2 0:02.02 apache
7769 www-data 15 0 185m 19m 4208 S 1.6 0.2 0:02.64 apache2
7912 www-data 16 0 187m 19m 4744 S 1.6 0.2 0:02.23 apache2
7501 www-data 16 0 188m 19m 4520 S 1.3 0.2 0:02.32 apache2
Wie kann ich berechnen wieviele Server ich mir "leisten" kann ohne dem MySQL CPU
oder Memory wegzunehmen?
Ich bin nicht sicher ob MySQL wirklich ein Bottleneck ist.
Habe gehört MySQL schnappt sich eh immer soviel CPU wie es bekommen kann, daher
fast immer 100% Auslastung.
Current Time: Monday, 07-Jan-2008 23:19:10 UTC
Restart Time: Monday, 07-Jan-2008 23:03:54 UTC
Parent Server Generation: 0
Server uptime: 15 minutes 16 seconds
Total accesses: 123143 - Total Traffic: 180.0 MB
CPU Usage: u1653.86 s141.45 cu6.43 cs0 - 197% CPU load
134 requests/sec - 201.2 kB/second - 1532 B/request
50 requests currently being processed, 450 idle workers
__________W_W_____________R________________W__________________W_
__C______W__________________________W__________________________C
__W_W_____________W___________________________C_W_________W__W_C
___________R_____________W___________W_W_________________W______
_______W_____W__________W_C__W________________C_________________
___________C_____________WW__________C______W__W______W_______W_
_____W__CW______________W___W_____W____C____W___________________
_______________________R__W______W__WW_W____________
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Wenn KeepAlive = off ist, ist doch
KeepAliveTimeout und
KeepAliveRequests egal, oder nicht ?
StartServers muss relativ hoch sein, da sonst bei voller Last der Server garnicht
mehr läuft wenn ich Apache stoppe und starte.
Da der Server zu Peak Zeiten gut laufen soll, kann ich ja die maximale Anzahl der Server dauernd haben,
auch wenn nichts los ist.
Was hat es genau mit dem MaxRequestsPerChild auf sich? 0=unbegrenzt?
Was ist ein Child? Die Anzahl der Threads pro Server ?
HostnameLookups brauche ich glaube ich für mod_rewrite abhängig von Domainnamen
oder von IP Adressen Lookups oder so ?
Ich habe nun folgende Einstellung und es läuft gerade ganz gut:
<IfModule mpm_prefork_module>
StartServers 500
MinSpareServers 500
MaxSpareServers 500
ServerLimit 500
MaxClients 500
MaxRequestsPerChild 0
</IfModule>
top - 23:14:06 up 3:59, 2 users, load average: 8.71, 9.86, 10.63
Tasks: 588 total, 1 running, 587 sleeping, 0 stopped, 0 zombie
Cpu(s): 50.3% us, 21.4% sy, 0.0% ni, 27.3% id, 0.0% wa, 0.1% hi, 1.0% si
Mem: 8240616k total, 8108072k used, 132544k free, 4584k buffers
Swap: 1959920k total, 864k used, 1959056k free, 3038432k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4252 mysql4 15 0 784m 370m 4128 S 99.9 4.6 239:57.55 mysqld
7552 www-data 16 0 187m 19m 4512 S 3.0 0.2 0:02.24 apache2
7660 www-data 16 0 186m 19m 3736 S 2.6 0.2 0:02.50 apache2
7663 www-data 17 0 187m 19m 4588 S 2.6 0.2 0:02.05 apache2
7866 www-data 16 0 185m 18m 3928 S 2.6 0.2 0:02.52 apache2
7703 www-data 15 0 192m 24m 4516 S 2.3 0.3 0:02.41 apache2
7859 www-data 15 0 187m 18m 4552 S 2.3 0.2 0:02.12 apache2
7916 www-data 15 0 187m 19m 4500 S 2.3 0.2 0:02.13 apache2
7548 www-data 16 0 184m 17m 3740 S 2.0 0.2 0:01.87 apache2
7830 www-data 15 0 185m 18m 3808 S 2.0 0.2 0:02.22 apache2
7833 www-data 16 0 184m 17m 3660 S 2.0 0.2 0:02.15 apache2
7843 www-data 16 0 185m 18m 3800 S 2.0 0.2 0:02.39 apache2
7460 www-data 16 0 185m 18m 3748 S 1.6 0.2 0:02.15 apache2
7748 www-data 16 0 186m 18m 4520 S 1.6 0.2 0:02.02 apache
7769 www-data 15 0 185m 19m 4208 S 1.6 0.2 0:02.64 apache2
7912 www-data 16 0 187m 19m 4744 S 1.6 0.2 0:02.23 apache2
7501 www-data 16 0 188m 19m 4520 S 1.3 0.2 0:02.32 apache2
Wie kann ich berechnen wieviele Server ich mir "leisten" kann ohne dem MySQL CPU
oder Memory wegzunehmen?
Ich bin nicht sicher ob MySQL wirklich ein Bottleneck ist.
Habe gehört MySQL schnappt sich eh immer soviel CPU wie es bekommen kann, daher
fast immer 100% Auslastung.
Current Time: Monday, 07-Jan-2008 23:19:10 UTC
Restart Time: Monday, 07-Jan-2008 23:03:54 UTC
Parent Server Generation: 0
Server uptime: 15 minutes 16 seconds
Total accesses: 123143 - Total Traffic: 180.0 MB
CPU Usage: u1653.86 s141.45 cu6.43 cs0 - 197% CPU load
134 requests/sec - 201.2 kB/second - 1532 B/request
50 requests currently being processed, 450 idle workers
__________W_W_____________R________________W__________________W_
__C______W__________________________W__________________________C
__W_W_____________W___________________________C_W_________W__W_C
___________R_____________W___________W_W_________________W______
_______W_____W__________W_C__W________________C_________________
___________C_____________WW__________C______W__W______W_______W_
_____W__CW______________W___W_____W____C____W___________________
_______________________R__W______W__WW_W____________
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Habe ich denn nun 180 MByte oder 18 MByte pro Thread/Server?
Re: apache2.conf bei 8 Gigabyte RAM
Ja, aber man macht auch gerne den Fehler und aktiviert KeepAlive versehentlich wieder und dann möchte man trotzdem erreichbar bleiben ;)wiedervergessen2 wrote:Wenn KeepAlive = off ist, ist doch
KeepAliveTimeout und
KeepAliveRequests egal, oder nicht ?
Das solltest Du Dir schnell abgewöhnen, dafür hat man Low-Traffik-Zeiten.wiedervergessen2 wrote:StartServers muss relativ hoch sein, da sonst bei voller Last der Server garnicht
mehr läuft wenn ich Apache stoppe und starte.
Überflüssige Ressourcenverschwendung und Umweltverschmutzung müssen doch nicht sein, oder?wiedervergessen2 wrote:Da der Server zu Peak Zeiten gut laufen soll, kann ich ja die maximale Anzahl der Server dauernd haben,
auch wenn nichts los ist.
Lies und verstehe obigen Link. Zusätzlich begrentzt man durch geringere Werte die Auswirkungen von Memory-Leaks in den Apache-Modulen.wiedervergessen2 wrote:Was hat es genau mit dem MaxRequestsPerChild auf sich? 0=unbegrenzt?
0-unbegrenzt=böse
Nein.wiedervergessen2 wrote:HostnameLookups brauche ich glaube ich für mod_rewrite abhängig von Domainnamen
oder von IP Adressen Lookups oder so ?
Nimm bitte meine und verstehe obigen Link.wiedervergessen2 wrote:Ich habe nun folgende Einstellung und es läuft gerade ganz gut:
Auch hier kann ich nur auf obigen Link verweisen, dort steht alles nötige geschrieben.wiedervergessen2 wrote:Wie kann ich berechnen wieviele Server ich mir "leisten" kann ohne dem MySQL CPU
oder Memory wegzunehmen?
Relativ oft.wiedervergessen2 wrote:Ich bin nicht sicher ob MySQL wirklich ein Bottleneck ist.
Kurz und grob: MySQL schnappt sich immer soviel Speicher/CPU, wie es auch benötigt.wiedervergessen2 wrote:Habe gehört MySQL schnappt sich eh immer soviel CPU wie es bekommen kann, daher
fast immer 100% Auslastung.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Re: apache2.conf bei 8 Gigabyte RAM
Hast Du zumindest einen groben Überblick, wie viele Queries der Mysqld pro Sekunde verarbeiten muß? 450 Besucher verursachen ja auch dementsprechende Anfragen und in dem Rechner wird "nur" ein Software-Raid sein!?
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Code: Select all
Total ø per hour ø per minute ø per second
1 M 2.69 M 44.80 k 746.73
max. concurrent connections 255 --- ---
Failed attempts 0 0.00 0.00%
Threads_connected 153 The number of currently open connections.
Threads_created 8 k The number of threads created to handle connections. If Threads_created is big, you may want to increase the thread_cache_size value. (Normally this doesn't give a notable performance improvement if you have a good thread implementation.)
Threads_running 25 The number of threads that are not sleeping.
Threads_cache_hitrate_% 94.44 %
Open_files 127 The number of files that are open.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Ich habe nun:
Ist MaxRequestsPerChild nicht zu hoch? Wie bestimmt man dafür den besten Wert?
Ich habe gemerkt, dass so ab 500 Usern die Seite wieder langsam wird und es kommt zu viele Waiting Prozessen bei Apache....normalerweise sind
diese in der Minderheit, erreichen dann aber eine Balance mit den Connected und irgendwann sind die Mehrzeit der Prozesse im Waiting Zustand.
Ich hab nun mal MaxRequestsPerChild gesetzt und schaue mal, ob es was ändert.
Code: Select all
<IfModule mpm_prefork_module>
StartServers 600
MinSpareServers 600
MaxSpareServers 600
ServerLimit 600
MaxClients 600
MaxRequestsPerChild 10000
</IfModule>
Ich habe gemerkt, dass so ab 500 Usern die Seite wieder langsam wird und es kommt zu viele Waiting Prozessen bei Apache....normalerweise sind
diese in der Minderheit, erreichen dann aber eine Balance mit den Connected und irgendwann sind die Mehrzeit der Prozesse im Waiting Zustand.
Ich hab nun mal MaxRequestsPerChild gesetzt und schaue mal, ob es was ändert.
-
- Posts: 207
- Joined: 2005-06-02 11:58
- Contact:
Re: apache2.conf bei 8 Gigabyte RAM
Code: Select all
__________W_W_____________R________________W__________________W_
__C______W__________________________W__________________________C
__W_W_____________W___________________________C_W_________W__W_C
___________R_____________W___________W_W_________________W______
_______W_____W__________W_C__W________________C_________________
___________C_____________WW__________C______W__W______W_______W_
_____W__CW______________W___W_____W____C____W___________________
_______________________R__W______W__WW_W____________
Re: apache2.conf bei 8 Gigabyte RAM
Code: Select all
Total ø per hour ø per minute ø per second
1 M 2.69 M 44.80 k 746.73
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Warum gibt es nirgends im Internet etwas genaueres zu MaxRequestsPerChild?
Das einzige was ich finden kann ist, dass es besser ist statt 0, 10000 zu nehmen. Aber warum genau 10000 und nicht 100, 500 oder 1000 ist nirgends erklärt.
Mir erscheint 10000 hoch...vor allem wenn man 700 Server hat - dann sind es ja 7 Mio Requests ?
Das einzige was ich finden kann ist, dass es besser ist statt 0, 10000 zu nehmen. Aber warum genau 10000 und nicht 100, 500 oder 1000 ist nirgends erklärt.
Mir erscheint 10000 hoch...vor allem wenn man 700 Server hat - dann sind es ja 7 Mio Requests ?
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Also ich habe MaxRequestsPerChild mal auf 2500 gesetzt und beobachte mal den Langzeit Effekt.
Ich habe das Gefühl, dass sich was akkumuliert und so immer ca. alle 12 Stunden der Server abkackt bzw. ewig langsam wird:
Mal schauen wie es in einer halben Stunde und in einer Stunde aussieht.
Folgendes ist in meminfo drin:
Ich habe das Gefühl, dass sich was akkumuliert und so immer ca. alle 12 Stunden der Server abkackt bzw. ewig langsam wird:
Code: Select all
top - 09:06:03 up 25 min, 2 users, load average: 2.67, 2.91, 2.66
Tasks: 690 total, 3 running, 687 sleeping, 0 stopped, 0 zombie
Cpu(s): 32.0% us, 9.5% sy, 0.0% ni, 56.6% id, 0.8% wa, 0.1% hi, 0.9% si
Mem: 8240616k total, 4010136k used, 4230480k free, 2044k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1328036k cached
Code: Select all
top - 09:07:36 up 26 min, 2 users, load average: 1.85, 2.58, 2.57
Tasks: 691 total, 1 running, 690 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.2% us, 2.7% sy, 0.0% ni, 73.7% id, 7.0% wa, 0.1% hi, 0.3% si
Mem: 8240616k total, 4715796k used, 3524820k free, 2124k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1358012k cached
Code: Select all
top - 09:11:05 up 30 min, 2 users, load average: 2.39, 2.48, 2.52
Tasks: 692 total, 4 running, 688 sleeping, 0 stopped, 0 zombie
Cpu(s): 27.9% us, 5.5% sy, 0.0% ni, 61.5% id, 4.1% wa, 0.2% hi, 0.7% si
Mem: 8240616k total, 6112556k used, 2128060k free, 2356k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1441896k cached
Code: Select all
top - 09:19:17 up 38 min, 2 users, load average: 2.11, 2.32, 2.40
Tasks: 690 total, 1 running, 689 sleeping, 0 stopped, 0 zombie
Cpu(s): 23.3% us, 5.0% sy, 0.0% ni, 67.5% id, 3.5% wa, 0.0% hi, 0.7% si
Mem: 8240616k total, 7028984k used, 1211632k free, 2844k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1543476k cached
Code: Select all
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3382 mysql4 15 0 544m 216m 3992 S 31.7 2.7 15:40.22 mysqld
5609 www-data 15 0 185m 18m 3664 S 3.0 0.2 0:01.38 apache2
6178 www-data 15 0 187m 21m 4204 S 3.0 0.3 0:01.41 apache2
5680 www-data 16 0 183m 16m 3616 S 2.6 0.2 0:01.20 apache2
Folgendes ist in meminfo drin:
Code: Select all
/etc/apache2# cat /proc/meminfo
MemTotal: 8240616 kB
MemFree: 1059164 kB
Buffers: 3068 kB
Cached: 1576844 kB
SwapCached: 0 kB
Active: 6153900 kB
Inactive: 416364 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 8240616 kB
LowFree: 1059164 kB
SwapTotal: 1959920 kB
SwapFree: 1959920 kB
Dirty: 3216 kB
Writeback: 0 kB
Mapped: 5028344 kB
Slab: 346552 kB
CommitLimit: 6080228 kB
Committed_AS: 11430860 kB
PageTables: 225568 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 2648 kB
VmallocChunk: 34359735135 kB
Code: Select all
top - 09:27:18 up 46 min, 2 users, load average: 3.23, 2.72, 2.53
Tasks: 690 total, 2 running, 688 sleeping, 0 stopped, 0 zombie
Cpu(s): 29.8% us, 8.3% sy, 0.0% ni, 60.2% id, 1.3% wa, 0.0% hi, 0.4% si
Mem: 8240616k total, 7402360k used, 838256k free, 3284k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1703108k cached
PID USER RES PR NI VIRT SHR S %CPU %MEM TIME+ COMMAND
3382 mysql4 237m 15 0 543m 3992 S 60.1 2.9 20:06.15 mysqld
5952 www-data 25m 15 0 193m 4704 S 3.0 0.3 0:02.56 apache2
6155 www-data 17m 15 0 184m 3852 S 3.0 0.2 0:02.30 apache2
6191 www-data 18m 15 0 184m 3756 S 3.0 0.2 0:02.28 apache2
Code: Select all
top - 09:42:05 up 1:01, 2 users, load average: 2.98, 2.82, 2.66
Tasks: 693 total, 2 running, 691 sleeping, 0 stopped, 0 zombie
Cpu(s): 27.8% us, 7.5% sy, 0.0% ni, 59.9% id, 4.1% wa, 0.1% hi, 0.7% si
Mem: 8240616k total, 7794140k used, 446476k free, 3980k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1810260k cached
Code: Select all
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3382 mysql4 15 0 546m 262m 3992 S 92.8 3.3 28:15.25 mysqld
5701 www-data 16 0 188m 19m 4480 S 9.5 0.2 0:03.78 apache2
5595 www-data 17 0 187m 18m 4408 S 5.7 0.2 0:04.87 apache2
5945 www-data 15 0 185m 17m 4376 S 5.7 0.2 0:04.33 apache2
6157 www-data 16 0 188m 19m 4556 S 5.7 0.2 0:04.03 apache2
Last edited by wiedervergessen2 on 2008-01-11 10:42, edited 1 time in total.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Das hier scheint ganz interessant zu sein:
http://virtualthreads.blogspot.com/2006 ... art-1.html
http://virtualthreads.blogspot.com/2006 ... art-1.html
Now imagine what happens when 1,000 web clients try to access your web site at the same moment (e.g. when it first shows up on Slashdot). The first 150 clients will successfully connect to your web server, because Apache will create workers to service their requests. However, those web clients do not immediately leave; after they've downloaded your page, they will hold open their connections for 15 seconds until your server forces their connection to close. The next 850 clients will be unable to access the web server, as all of the available Apache worker processes will be used up, waiting for 15 seconds on the unused connections to the first 150 clients. Some of those 850 clients will queue up and wait for an available Apache process to service their request, but most will give up.
Perhaps some readers are wondering why you wouldn't just increase the MaxClients setting to something high enough to handle your peak load, like 2000 or something. This is a very bad idea; you can increase Apache's MaxClients, but only at your own peril. Because each Apache process consumes a bit of memory, you can only fit a certain number in memory before the web server begins to violently thrash, swapping things between RAM and the hard drive in a futile attempt to make it work. The result is a totally unresponsive server; by increasing MaxClients too high, you will have caused your own demise. I will talk about how to figure out a good value for MaxClients in a future post, but a good rule of thumb might be to divide your total RAM by 5 megabytes. Thus, a server with 512 megabytes of RAM could probably handle a MaxClients setting of 100. This is probably a somewhat conservative estimate, but it should give you a starting point.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
So, hab jetzt mal KeepAlive auf 2 Sekunden gesetzt und KeepAlive auf on:
top - 09:45:38 up 1:04, 2 users, load average: 5.02, 4.34, 3.29
Tasks: 695 total, 2 running, 693 sleeping, 0 stopped, 0 zombie
Cpu(s): 38.9% us, 8.6% sy, 0.0% ni, 51.8% id, 0.4% wa, 0.1% hi, 0.2% si
Mem: 8240616k total, 5168856k used, 3071760k free, 4148k buffers
Swap: 1959920k total, 0k used, 1959920k free, 1832464k cached
Mal schauen was passiert....PID USER RES PR NI VIRT SHR S %CPU %MEM TIME+ COMMAND
3382 mysql4 262m 16 0 547m 3992 S 59.1 3.3 30:15.49 mysqld
14626 www-data 13m 15 0 180m 3116 S 10.9 0.2 0:00.42 apache2
15226 www-data 16m 16 0 183m 3536 S 10.9 0.2 0:00.53 apache2
14571 www-data 13m 16 0 180m 3116 S 8.9 0.2 0:00.47 apache2
Re: apache2.conf bei 8 Gigabyte RAM
Du hast wenn ich das sehe noch ein bischen Speicher über..
was sagt denn dasmysql Tuning script ? Ich denke mit mehr Verbindungen/cache Indexes im mysql wirst Du eher was erreichen, als die Apache Clients hochzusetzen (grade weil dein Apache-status ja zeigt das Du nur ein Bruchteil der Apache Kapazitäten belegst..)
Nutzt Du xcache, apc eAccelarator? Das bringt auch nochmal was.
was sagt denn dasmysql Tuning script ? Ich denke mit mehr Verbindungen/cache Indexes im mysql wirst Du eher was erreichen, als die Apache Clients hochzusetzen (grade weil dein Apache-status ja zeigt das Du nur ein Bruchteil der Apache Kapazitäten belegst..)
Nutzt Du xcache, apc eAccelarator? Das bringt auch nochmal was.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
OK..sieht jetzt eher nach einem MySQL Problem aus...(-> MySQL Forum)
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Ist doch eine Apache2 Problem...ich muss Apache jetzt alle 2 Minuten neu laden...damit der Speicher wieder freigegeben ist :-(
Re: apache2.conf bei 8 Gigabyte RAM
Wie hoch sind deine MaxRequestsPerChild? Die sollten ja das Problem mit dem Memory Leak beheben.
Hast du mal überlegt auf FCGI und vielleicht Lighttpd umzusteigen?
Ich glaube übrigens immer noch das dein MySQL das Problem ist.
Hast du mal überlegt auf FCGI und vielleicht Lighttpd umzusteigen?
Ich glaube übrigens immer noch das dein MySQL das Problem ist.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
MaxRequestsPerChild hatte werder für den Wert 100 noch für den Wert 10,000 eine Auswirkung gehabt.
Das Problem ist jetzt gerade gelöst worden.
Mein Bruder hat mir gerade den Prefork durch den Worker ersetzt und jetzt funktioniert alles wunderbar.
Die genaue Ursache ist immer noch schleierhaft.
Aber die Kurzzusammenfassung ist:
Prefork = scheisse
Worker = gut
Prefork = buggy
Worker = stabil
Prefork = Memory Leak
Worker = nix Memory Leak
Das Problem ist jetzt gerade gelöst worden.
Mein Bruder hat mir gerade den Prefork durch den Worker ersetzt und jetzt funktioniert alles wunderbar.
Die genaue Ursache ist immer noch schleierhaft.
Aber die Kurzzusammenfassung ist:
Prefork = scheisse
Worker = gut
Prefork = buggy
Worker = stabil
Prefork = Memory Leak
Worker = nix Memory Leak
-
- Posts: 207
- Joined: 2005-06-02 11:58
- Contact:
Re: apache2.conf bei 8 Gigabyte RAM
Das Problem ist bekannt und im Layer 8 zu suchen ... zur Information: das ist die Schicht zwischen Bildschirm und Sessellehne. Warum glaubst du eigentlich nicht, was dir andere Administratoren sagen? Selbst ein Prefork kann soviele Zugriffe wegstecken, da könntest du ohne Probleme etliche richtig große Seiten hosten.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Wahrscheinlich macht Prefork nur Probleme, wenn man 2 Dual Cores verwendet und die falsche MySQL Version /mod_php oder einer bestimmen PHp Library..wie immer ist es wohl eine unglückliche Kombinationen einzelner (aktueller) Module...aber aus Zeitgründen möchte ich nur dass es so bald wie möglich wieder richtig läuft und ich habe nicht den Ehrgeiz im Moment alles bis ins kleinste Detail für einen Bug Report zu analysieren - aber wenn mal Zeit ist werde ich das eventuell machen.
Bei mehreren Prozessoren/Cores wird ja angeblich eh zum Worker geraten.
Bei mehreren Prozessoren/Cores wird ja angeblich eh zum Worker geraten.
Last edited by wiedervergessen2 on 2008-01-14 18:09, edited 1 time in total.
-
- Posts: 22
- Joined: 2008-01-07 22:09
Re: apache2.conf bei 8 Gigabyte RAM
Es kann nicht an der Datenbank liegen...denn wenn ich in das Haupt PHP Skript "die()" einfüge steigt der RAM Verbrauch auch ---- nur sehr viel langsamer.