hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
hoi,
ich betreibe ein wbb das zu stoßzeiten um die 300 user online hat,
bis 300 user läuft alles gut load zwischen 1,5 und 2,5 (auch nicht so toll wie ich gehört hab)
ich denke es liegt an einer fehlconfiguration nur weis ich nicht was genau, oder könnte es auch was anderes sein ?
daten:
-----------
p4 2,8ghz ht
1gb ram
160gb sata
-----------
debian sarge
apache 1.3.33
php 4.3.10-15
MySQL 4.0.24_Debian-10-log
------------
das komische ist ja sobald es über 300 werden geht die load auf 3 4 5 bis 15 und dann geht sogut wie garnix mehr :-(
hoffe mir kann jemand helfen ich bin schon am verzweifeln wie es weitergehn soll...
ich betreibe ein wbb das zu stoßzeiten um die 300 user online hat,
bis 300 user läuft alles gut load zwischen 1,5 und 2,5 (auch nicht so toll wie ich gehört hab)
ich denke es liegt an einer fehlconfiguration nur weis ich nicht was genau, oder könnte es auch was anderes sein ?
daten:
-----------
p4 2,8ghz ht
1gb ram
160gb sata
-----------
debian sarge
apache 1.3.33
php 4.3.10-15
MySQL 4.0.24_Debian-10-log
------------
das komische ist ja sobald es über 300 werden geht die load auf 3 4 5 bis 15 und dann geht sogut wie garnix mehr :-(
hoffe mir kann jemand helfen ich bin schon am verzweifeln wie es weitergehn soll...
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
hast du mal die db vom wbb optimiert? ich glaubenämlich das beim wbb viel kram der nicht undbedingt notwändig wäre in die db gespeichert wird.
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
also wenn du die funktion optimiern meinst ja hab gestern optimiern und repariern durchlaufen lassen...
ansonsten wüst ich jetz net was ich da machen sollte ? ich nehm an das wbb was gescheites programmiert ^^ oder auch nicht :lol:
es sind 200 leute online und die load ist schon bei 1 also irgend wie kann das ja nicht optimal sein ?
und mir fällt auf das ich haufenweise verbindungen offen hab wenn ich netstat -an mache, kann ich da irgend wie das timeout runterstellen oder ist das notwendig das da 400 verbindungen oder mehr offen sind ?
sql und apache timout hab ich eigentlich auf 100 bzw 30 gestellt das ist schon recht niedrig...
ansonsten wüst ich jetz net was ich da machen sollte ? ich nehm an das wbb was gescheites programmiert ^^ oder auch nicht :lol:
es sind 200 leute online und die load ist schon bei 1 also irgend wie kann das ja nicht optimal sein ?
und mir fällt auf das ich haufenweise verbindungen offen hab wenn ich netstat -an mache, kann ich da irgend wie das timeout runterstellen oder ist das notwendig das da 400 verbindungen oder mehr offen sind ?
sql und apache timout hab ich eigentlich auf 100 bzw 30 gestellt das ist schon recht niedrig...
-
outofbound
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
Wahrscheinlich läuft dir einfach der Speicher voll und die Kiste swapt sich tot.
Schalte mal den Swap aus, und schau obs besser wird.
Gruss,
Out
Schalte mal den Swap aus, und schau obs besser wird.
Gruss,
Out
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
mach mal ein
pstree
free
ps xafuwr
in CODE Tags (zum besseren Lesen), wenn das System langsam ist.
Bei einem HT Proz ist ein Load von 1 eigendlich noch nicht schlimm
pstree
free
ps xafuwr
in CODE Tags (zum besseren Lesen), wenn das System langsam ist.
Bei einem HT Proz ist ein Load von 1 eigendlich noch nicht schlimm
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
pstree:
free:
ps xafuwr:
wobei ich gestern noch weng rumgestellt hab an configs, und hab keepalive off und die wait_timeout von my.cnf auf 100
jetz läuft der server auf 3er load bei 350 user online, da ist er früher schon teilweise abgekackt und über 10load geschossen, also von daher hats schon weng was gebracht... leider ist eine 3er load nicht ganz optimal da es doch etwas langsam läuft :/
hoffe ihr könnt mit den daten was anfangen, kann ja auch die configs posten falls das was bringt ?[/quote]
Code: Select all
init─┬─apache───37*[apache]
├─cron
├─events/0─┬─aio/0
│ ├─ata/0
│ ├─kacpid
│ ├─kblockd/0
│ ├─khelper
│ └─2*[pdflush]
├─exim4
├─6*[getty]
├─inetd
├─khubd
├─kjournald
├─klogd
├─kseriod
├─ksoftirqd/0
├─kswapd0
├─mailmanctl───8*[python]
├─mysqld_safe───mysqld_safe─┬─logger
│ └─mysqld
├─pciehpd_event
├─proftpd
├─scsi_eh_0
├─scsi_eh_1
├─shpchpd_event
├─sshd───sshd───bash───pstree
└─syslogd
Code: Select all
total used free shared buffers cached
Mem: 906744 845336 61408 0 21872 578236
-/+ buffers/cache: 245228 661516
Swap: 2650684 48 2650636
ps xafuwr:
Code: Select all
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 20068 0.0 0.0 2488 796 pts/0 R+ 11:04 0:00 ps xafuwr
jetz läuft der server auf 3er load bei 350 user online, da ist er früher schon teilweise abgekackt und über 10load geschossen, also von daher hats schon weng was gebracht... leider ist eine 3er load nicht ganz optimal da es doch etwas langsam läuft :/
hoffe ihr könnt mit den daten was anfangen, kann ja auch die configs posten falls das was bringt ?[/quote]
-
outofbound
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
Probier wirklich mal aus, den Swap ausyuschalten.
Das die Load eskaliert bedeutet meistens, dass sich das System kaputtswapt. (Mysql macht sowas gerne). Wenn das der Fall ist, heisst es: Querys optimieren.
Gruss,
Out
Das die Load eskaliert bedeutet meistens, dass sich das System kaputtswapt. (Mysql macht sowas gerne). Wenn das der Fall ist, heisst es: Querys optimieren.
Gruss,
Out
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
das kann sein weil der swapt ab und zu mal paar kb rüber, jetz sinds zb 300kb die da rumliegen... der löscht die auch nicht mehr, erst nach reboot :-(
wie schalte ich eigentlich swapen aus ?
bzw bringt es was wenn ich in der httpd.conf
die maxrequestsperchild auf 0(unendlich) setze ? momentan ists auf 100 und das heißt da er killt den prozess nach 100 arbeiten ab und startet nen neuen somit wird wieder ram frei aber prozess starten kostet dafür cpu. hab ich zumindest so "zusammen-gelesen" aus google ^^
und der server hat unter netstat -an haufenweise verbindungen offen, ist das normal oder kann man da irgend nen timeou einstellen das die gekillt werden ?
wie schalte ich eigentlich swapen aus ?
bzw bringt es was wenn ich in der httpd.conf
die maxrequestsperchild auf 0(unendlich) setze ? momentan ists auf 100 und das heißt da er killt den prozess nach 100 arbeiten ab und startet nen neuen somit wird wieder ram frei aber prozess starten kostet dafür cpu. hab ich zumindest so "zusammen-gelesen" aus google ^^
und der server hat unter netstat -an haufenweise verbindungen offen, ist das normal oder kann man da irgend nen timeou einstellen das die gekillt werden ?
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
1) swapon / swapoff
2) maxqueries per child sind eigentlich eher gut, aber experimentier mit dem Wert mal.
flo.
2) maxqueries per child sind eigentlich eher gut, aber experimentier mit dem Wert mal.
flo.
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
Stimmt die Zeile aus dem pstree?
Das hiesse ja, dass nur ein Prozess für mysql läuft...
Den Swap sollte man an lassen. Das Swap benutzt wird ist gut und bei knappen 500MB freien Speicher (bzw. vom Cache genutzt) wird der Swap auch nur zum Auslagern von Daten benutzt, die nicht gebraucht werden. Erst wenn der Swap in Richtung 1/2 cached + free geht, ist es nicht mehr gut.
mySQL kann man mit --memlock starten, dann wird mySQL nicht ausgelagert.
Ansonsten sieht das eigendlich ganz gut aus. Was ich mir noch vorstellen könnte, ist, dass die Festplatte irgendwie zu viel zu tun hat. Mal mit procinfo -f -n10 -D anzeigen lassen.
Code: Select all
├─mysqld_safe───mysqld_safe─┬─logger
│ └─mysqld Den Swap sollte man an lassen. Das Swap benutzt wird ist gut und bei knappen 500MB freien Speicher (bzw. vom Cache genutzt) wird der Swap auch nur zum Auslagern von Daten benutzt, die nicht gebraucht werden. Erst wenn der Swap in Richtung 1/2 cached + free geht, ist es nicht mehr gut.
mySQL kann man mit --memlock starten, dann wird mySQL nicht ausgelagert.
Ansonsten sieht das eigendlich ganz gut aus. Was ich mir noch vorstellen könnte, ist, dass die Festplatte irgendwie zu viel zu tun hat. Mal mit procinfo -f -n10 -D anzeigen lassen.
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
ah thx, das mit dem mysql in mem lassen werd ich dann beim nächsten start probiern.
in der top ist sql eigentlich nie weit oben, 90% sind das die ganzen apache prozesse die da laufen... (auch dynamische seiten wie php scripte werden dazugezählt glaub ich)
tut sich leider nichts :( weil ich würde auch gerne wissen wie meine festplatte belastet ist, hab gehört das beim swapen usw die platte leicht ein io stirbt :(
wobei ich sagen muss seit der config änderung und dem neustart lief der server ohne ausfällt bis 390 user online wobei er da schon über 5er load ging und es extrem knapp vorm gau stand...
in der top ist sql eigentlich nie weit oben, 90% sind das die ganzen apache prozesse die da laufen... (auch dynamische seiten wie php scripte werden dazugezählt glaub ich)
Code: Select all
ironfist:~# procinfo -f -n10 -D
-bash: procinfo: command not found
wobei ich sagen muss seit der config änderung und dem neustart lief der server ohne ausfällt bis 390 user online wobei er da schon über 5er load ging und es extrem knapp vorm gau stand...
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
procinfo nachinstallieren?
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
ah jetz ^^
Code: Select all
Memory: Total Used Free Shared Buffers
Mem: 906744 852236 54508 0 17588
Swap: 2650684 252 2650432
Bootup: Wed Aug 24 18:59:29 2005 Load average: 1.87 1.59 1.57 1/107 9301
user : 0:00:04.73 4.7% page in : 0
nice : 0:00:00.00 0.0% page out: 0
system: 0:00:00.42 0.4% swap in : 0
idle : 0:00:04.47 4.5% swap out: 0
uptime: 1d 13:10:12.39 context : 5010
irq 0: 10000 timer irq169: 0 uhci_hcd, uhci_hcd
irq 1: 0 irq177: 0 uhci_hcd
irq 6: 0 irq185: 220 libata, uhci_hcd
irq 7: 0 parport0 irq193: 0 ehci_hcd
irq 9: 0 acpi irq201: 0 Intel ICH5
irq 12: 0 irq209: 4792 eth0
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
Ein Load von 2 ist doch noch nichts schlimmes... das sieht doch auch gar nicht nach einem überlasteten System aus.
Fühlt sich denn das System zäh an?
Wie ist mysql eingestellt? Man kann in der /var/lib/mysql/my.cnf respektive /etc/my.cnf
(debian)
verschiedene Werte einstellen.
sind z.B. die Werte für ein sehr kleines System.
Das System hat 500Kbyte gecached. Swappen ist also wirklich nicht das Problem.
Ein grosses mysql mit genug Arbeitspeicher kann gut und gerne so konfiguriert werden: (Das ist ein Ausschnit aus den examples zu mysql
Fühlt sich denn das System zäh an?
Wie ist mysql eingestellt? Man kann in der /var/lib/mysql/my.cnf respektive /etc/my.cnf
(debian)
verschiedene Werte einstellen.
Code: Select all
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
net_buffer_length = 2K
thread_stack = 64K
Das System hat 500Kbyte gecached. Swappen ist also wirklich nicht das Problem.
Ein grosses mysql mit genug Arbeitspeicher kann gut und gerne so konfiguriert werden: (Das ist ein Ausschnit aus den examples zu mysql
Code: Select all
# Example MySQL config file for large systems.
#
# This is for a large system with memory = 512M where the system runs mainly
# MySQL.
#
# You can copy this file to
# /etc/my.cnf to set global options,
# The MySQL server
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
Re: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
/etc/my.cnf ist und war nie debianspezifisch, sondern MySQL-Default.whisper wrote:Man kann in der /var/lib/mysql/my.cnf respektive /etc/my.cnf (debian) verschiedene Werte einstellen.
Wer das auf einem System mit <4 realen CPUs setzt, hat selbst Schuld, wenn die Kiste hopps geht...whisper wrote:Code: Select all
thread_concurrency = 8
Hier werden sie geholfen: http://www.rootforum.org/forum/viewtopic.php?t=36343
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: hohe Load, Apache1.3, Mysql ? woran liegts (300 user online)
Ja, und?
direkt darueber ist ja auch der Kommentar dazu ;)
Ich habe keine Lösung geboten, sondern einen Denkanstoss, die Performanceprobleme mal im setup der Datenbank zu suchen
direkt darueber ist ja auch der Kommentar dazu ;)
Ich habe keine Lösung geboten, sondern einen Denkanstoss, die Performanceprobleme mal im setup der Datenbank zu suchen
