awm tom
04.06.2004, 22:46
... und deswegen wird mein problem auch an der konfiguration liegen.
es wäre prima, wenn sich hier jemand findet, der mir bei meinem problem behilflich sein könnte. immer wieder stockt der server mit grauenvollen loads und man erhält als user im browser die meldung "too many connections".
in diesem moment gibt es dann meisst rd. 400 - 500 prozesse auf dem server, davon 3/4 mysql prozesse die nciht abgearbeitet werden, bzw. nur sehr langsam. die load liegt dann meist nahe der 100er grenze oder drüber.
kennern dürfte das verhalten des servers aber ja bekannt sein :-)
ich habe nun verschiedene einstellungen der my.cnf getestet und auch im apache einiges probiert, aber geholfen hat alles nichts auf dauer. dann habe ich aufgerüstet auf 2 gig ram (vorher waren es 1 gig), das ging ne weile gut, hilft aber nun auch nicht mehr.
ich bin aber überzeugt, dass es an der konfig liegt, denn wenn alles im grünen bereich ist, habe ich loads zwischen 03. - 3,5, die htm basierenden webseiten sind sehr schnell, die foren sind in akzeptabler geschwindigkeit.
es gibt auf dem server rd. 8 foren, die allesamt eine mittlere auslastung haben. sind halt kleinere dabei, aber auch 2 -3 foren die etwas mehr traffic haben. im peak haben die grösseren foren ca. 60 -120 user online (bei einer online einstellung in der cp von 1600 :-) also, ich denke mal, gleichzeitig müssten im schnitt 50 - 150 user online sein. halt auf verschiedene foren verteilt.
der server ist ein Dual PIII 1 Gig, mit 2 gig ram, suse 7.3, confixx 1.6, mysql 3.23.xx
wenn es grad kracht, ich den sql und den apache server neu starte, und danach einen mysql ver mache, gibt es kurzzeitig rd. 100 - 120 anfragen pro sekunde. heute mittag waren es sensationelle 160 anfragen pro sekunde. pendelte sich nach 30 minuten bei 85 anfragen pro sekunde ein.
hier mal ein ver nach 4 stunden laufzeit:
Server version 3.23.44-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 4 hours 34 min 17 sec
Threads: 3 Questions: 968401 Slow queries: 9 Opens: 113947 Flush tables: 1 Open tables: 128 Queries per second avg: 58.844
www:~ #
mir ist übrigens eingefallen, dass super oft die threads nicht beendet werden und dann immer wieder schlafende sql threads die prozesse hochtreiben, starte daher den apache nun 2x die stunde neu, aber eine goldene lösung ist das nun nicht wirklich.
so schaut meine my.cnf aus :
### The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
set-variable = key_buffer=128M #erhöht von 64M
set-variable = max_allowed_packet=1M
set-variable = table_cache=128
set-variable = sort_buffer=2M
set-variable = net_buffer_length=16K
set-variable = myisam_sort_buffer_size=64M
set-variable = max_connections=350
### log einstellungen
# log-bin
#loggt langsame queries
log-slow-queries
#legt die long querie log zeit fest
set-variable = long_query_time=15
# Ist OFF, wenn mysqld externes Sperren benutzt:
skip-locking
# Der Wert der --server-id-Option
server-id = 1
[mysqldump]
quick
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash
[isamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[myisamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[mysqlhotcopy]
interactive-timeout
[safe_mysqld]
open-files-limit=8192
und so die wichtigsten parameter vom Indianer:
Timeout 60
KeepAlive on
MaxKeepAliveRequests 50
KeepAliveTimeout 25
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 384
MaxRequestsPerChild 0
und hier mal die letzten 9 slow queries :
/usr/sbin/mysqld, Version: 3.23.44-log, started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
# Time: 040604 17:52:42
# User@Host: web5[web5] @ localhost []
# Query_time: 24 Lock_time: 0 Rows_sent: 1 Rows_examined: 87704
use usr_web5_1;
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:49:51
# User@Host: web5[web5] @ localhost []
# Query_time: 32 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:50:07
# User@Host: web5[web5] @ localhost []
# Query_time: 36 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:52:34
# User@Host: web5[web5] @ localhost []
# Query_time: 19 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:54:12
# User@Host: web5[web5] @ localhost []
# Query_time: 23 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:54:49
# User@Host: web5[web5] @ localhost []
# Query_time: 29 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:56:05
# User@Host: web5[web5] @ localhost []
# Query_time: 20 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:57:22
# User@Host: web5[web5] @ localhost []
# Query_time: 42 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:58:57
# User@Host: web5[web5] @ localhost []
# Query_time: 32 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
ich wollte gerade schreiben, dass es zufall ist, dass immer das web5 hier drin steht, aber ... heute gab es mehrmals am tag probleme (3 oder 4 mal) und wenn ich das gesamte log ansehe, ist immer der gleiche eintrag, wie die obigen 9 einträge, zu finden. kann mir einer btw. sagen, was genau dahinter steckt? hier wird doch ein counter geuppt, oder? ich habe (als einziger admin des web 5) aber heute nichts geuppt...
wie gesagt, es wäre super, wenn einer von euch mir bei den richtigen einstellungen des apache und mysql servers helfen könnte.
ach ja, die foren sind allesamt 2.2.x - 2.3.0.
vielen dank!
tom
es wäre prima, wenn sich hier jemand findet, der mir bei meinem problem behilflich sein könnte. immer wieder stockt der server mit grauenvollen loads und man erhält als user im browser die meldung "too many connections".
in diesem moment gibt es dann meisst rd. 400 - 500 prozesse auf dem server, davon 3/4 mysql prozesse die nciht abgearbeitet werden, bzw. nur sehr langsam. die load liegt dann meist nahe der 100er grenze oder drüber.
kennern dürfte das verhalten des servers aber ja bekannt sein :-)
ich habe nun verschiedene einstellungen der my.cnf getestet und auch im apache einiges probiert, aber geholfen hat alles nichts auf dauer. dann habe ich aufgerüstet auf 2 gig ram (vorher waren es 1 gig), das ging ne weile gut, hilft aber nun auch nicht mehr.
ich bin aber überzeugt, dass es an der konfig liegt, denn wenn alles im grünen bereich ist, habe ich loads zwischen 03. - 3,5, die htm basierenden webseiten sind sehr schnell, die foren sind in akzeptabler geschwindigkeit.
es gibt auf dem server rd. 8 foren, die allesamt eine mittlere auslastung haben. sind halt kleinere dabei, aber auch 2 -3 foren die etwas mehr traffic haben. im peak haben die grösseren foren ca. 60 -120 user online (bei einer online einstellung in der cp von 1600 :-) also, ich denke mal, gleichzeitig müssten im schnitt 50 - 150 user online sein. halt auf verschiedene foren verteilt.
der server ist ein Dual PIII 1 Gig, mit 2 gig ram, suse 7.3, confixx 1.6, mysql 3.23.xx
wenn es grad kracht, ich den sql und den apache server neu starte, und danach einen mysql ver mache, gibt es kurzzeitig rd. 100 - 120 anfragen pro sekunde. heute mittag waren es sensationelle 160 anfragen pro sekunde. pendelte sich nach 30 minuten bei 85 anfragen pro sekunde ein.
hier mal ein ver nach 4 stunden laufzeit:
Server version 3.23.44-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 4 hours 34 min 17 sec
Threads: 3 Questions: 968401 Slow queries: 9 Opens: 113947 Flush tables: 1 Open tables: 128 Queries per second avg: 58.844
www:~ #
mir ist übrigens eingefallen, dass super oft die threads nicht beendet werden und dann immer wieder schlafende sql threads die prozesse hochtreiben, starte daher den apache nun 2x die stunde neu, aber eine goldene lösung ist das nun nicht wirklich.
so schaut meine my.cnf aus :
### The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
set-variable = key_buffer=128M #erhöht von 64M
set-variable = max_allowed_packet=1M
set-variable = table_cache=128
set-variable = sort_buffer=2M
set-variable = net_buffer_length=16K
set-variable = myisam_sort_buffer_size=64M
set-variable = max_connections=350
### log einstellungen
# log-bin
#loggt langsame queries
log-slow-queries
#legt die long querie log zeit fest
set-variable = long_query_time=15
# Ist OFF, wenn mysqld externes Sperren benutzt:
skip-locking
# Der Wert der --server-id-Option
server-id = 1
[mysqldump]
quick
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash
[isamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[myisamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[mysqlhotcopy]
interactive-timeout
[safe_mysqld]
open-files-limit=8192
und so die wichtigsten parameter vom Indianer:
Timeout 60
KeepAlive on
MaxKeepAliveRequests 50
KeepAliveTimeout 25
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 384
MaxRequestsPerChild 0
und hier mal die letzten 9 slow queries :
/usr/sbin/mysqld, Version: 3.23.44-log, started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
# Time: 040604 17:52:42
# User@Host: web5[web5] @ localhost []
# Query_time: 24 Lock_time: 0 Rows_sent: 1 Rows_examined: 87704
use usr_web5_1;
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:49:51
# User@Host: web5[web5] @ localhost []
# Query_time: 32 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:50:07
# User@Host: web5[web5] @ localhost []
# Query_time: 36 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:52:34
# User@Host: web5[web5] @ localhost []
# Query_time: 19 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:54:12
# User@Host: web5[web5] @ localhost []
# Query_time: 23 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:54:49
# User@Host: web5[web5] @ localhost []
# Query_time: 29 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:56:05
# User@Host: web5[web5] @ localhost []
# Query_time: 20 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:57:22
# User@Host: web5[web5] @ localhost []
# Query_time: 42 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
# Time: 040604 18:58:57
# User@Host: web5[web5] @ localhost []
# Query_time: 32 Lock_time: 0 Rows_sent: 1 Rows_examined: 87707
SELECT count(postid) AS count FROM post WHERE dateline>='1086300000';
ich wollte gerade schreiben, dass es zufall ist, dass immer das web5 hier drin steht, aber ... heute gab es mehrmals am tag probleme (3 oder 4 mal) und wenn ich das gesamte log ansehe, ist immer der gleiche eintrag, wie die obigen 9 einträge, zu finden. kann mir einer btw. sagen, was genau dahinter steckt? hier wird doch ein counter geuppt, oder? ich habe (als einziger admin des web 5) aber heute nichts geuppt...
wie gesagt, es wäre super, wenn einer von euch mir bei den richtigen einstellungen des apache und mysql servers helfen könnte.
ach ja, die foren sind allesamt 2.2.x - 2.3.0.
vielen dank!
tom