Seite 1 von 3

"max_connections" überschritten

Verfasst: 24.01.2007 22:32
von Seether
Ab und zu bemerke ich diesen Fehler auf meinem Board. Das Forum ist dann für wenige Minuten zu zu benutzen.
Meine User berichten mir, dass diese Fehlermeldung wohl "recht häufig" vorkäme.

Gibt es da etwas was ich machen kann. Benutze einen managed Server.

Der Gaia-Admin hat ja mal ein paar kleine Modifikationen gezeigt, die er an seinem Board vorgenommen hat. Würde das evtl was helfen? Oder hat das keinen Einfluss auf die Anzahl der Connections sondern nur auf die Abfragen?


S.

Verfasst: 25.01.2007 01:37
von Jensemann
Die Grundlegende Frage dabei ist immer ob die Verbindungsanzahl wirklich durch die Aktivität des Forums kommt, oder dadurch das Abfragen zu lange dauern. Wenn eine Abfrage schneller beendet werden kann, ist auch die Verbindung eher geschlossen und ein aufstauen von Verbindungen wird vermieden.

Wenn ich höre Managed-Server, ist mir allerdings schon beinah klar, wodurch man am meisten rausholen kann: Durch gescheite MySQL Einstellungen. Die meisten Managed-Server sind leider derart 0815-Konfiguriert das man sich fragt ob da das Upgrade fest in der Kostenkalkukation eingeplant ist. Inbesondere All-Inkl. ist mir da in der Vergangenheit übel aufgefallen.

Grundsätzlich ist immer zu sagen, bei MySQL Performanceproblemen erstmal ein optimize table durchführen. Das wird das Problem meist nicht lösen, aber man weiss damit zumindest, das ein ernsteres Problem vorliegt. Danach würde ich mal einige Einstellungen des MySQL-Servers hier posten (kannst du normalerweise mittels phpMyAdmin herausfinden). Insbesondere von Interesse ist wait_timeout und thread_cache. Ich vermute das der wait_timeout mal wieder unnötig hoch eingestellt, und der thread_cache, as usual, abgeschaltet ist. Wäre ja schlimm wenn ein vermieteter Server mal so schnell laufen würde wie er könnte ;-)

Verfasst: 25.01.2007 01:58
von Seether
Danke für die Eklärung!

Jensemann hat geschrieben:Inbesondere All-Inkl. ist mir da in der Vergangenheit übel aufgefallen.
Na Super :o

wait timeout Diese Sitzung: 30 Global: 30
table cache Diese Sitzung:256 Global:256
thread cache size Diese Sitzung:0 Global: 0


Soll ich noch andere Werte posten?

S.

Edit:
max connections 500 500
max user connections 25 25

Verfasst: 25.01.2007 02:04
von Jensemann
wait_timeout sieht gut aus, hat man dort offenbar dazu gelernt.

Aber thread_cache 0 ist mist. Sprech mal mit denen das die den thread_cache aktivieren. Der kann einiges bewirken.

Hast du einen PHP-Cache installiert? eAccelerator oder so? Falls möglich sollte der auch installiert sein. Erklärung folgt:

Warum haben langsame PHP Scripte was mit MySQL-Verbindungen zu tuen? Ganz einfach: Die meisten Scripte erstellen die Verbindung zu Beginn und schliessen sie am Ende. Läuft das Script nun langsamer als es könnte, zum Beispiel weil kein PHP Cache im Spiel ist, weil der Programmierer zu gerne schleifen programmiert, oder oder oder, ist die Verbindung zu lange offen, da sie ja erst geschlossen wird, wenn das Script so gut wie fertig ist.

Edit: Und lass die max_user_connections hochsetzen. Zu dem niedrigen Wert fällt mir echt gar nichts mehr ein. 80 oder so wäre gut, kommt immer ein wenig auf die Hardware an, aber bei 25 sind Probleme vorprogrammiert. Erst recht ohne die obigen Hinweise.

Verfasst: 25.01.2007 11:21
von larsneo
Inbesondere All-Inkl. ist mir da in der Vergangenheit übel aufgefallen.
jein. out-of-the-box sind die server sicherlich nicht das gelbe vom ei, sondern eher 'stangenware' - aber wenn man mit den jungs spricht, verträgt selbst ein xl aus der früheren angebotsstruktur durchaus einen heise-ddos.
Hast du einen PHP-Cache installiert? eAccelerator oder so? Falls möglich sollte der auch installiert sein.
nach meiner erfahrung ist gerade in bezug auf das phpbb der pecl:apc wesentlich besser und stabiler als der eaccelerator und wäre von daher mein tipp zur beschleunigung. darüberhinaus helfen bekanntermassen modsecurity und eine spidertrap um unerwünschten traffic komplett zu blocken.

Verfasst: 28.01.2007 14:43
von Seether
Danke für eure Antworten.

Auf welchen Wert sollte ich den thread_cache_size einstellen lassen?


S.

Verfasst: 28.01.2007 17:24
von Jensemann
Seether hat geschrieben:Danke für eure Antworten.

Auf welchen Wert sollte ich den thread_cache_size einstellen lassen?
40 ist meist ein guter Wert.

Verfasst: 02.03.2007 10:53
von offroad4fun
hi!
ich darf mich da mal anhängen:

hab ebenfalls das problem, dass meine anzhal der verbindungen zu hoch ist ...
Warning: mysql_connect(): Too many connections in /****db/mysql4.php on line 48
jedoch weigert sich mein provider die max-connections einstellung raufzusetzten (derzeit = 100)

kann ich da jetzt durch andere einstellungen noch was rausholen - oder soll ich mich gleich nach einem neuen provider umschauen ..

ich setz euch hier gleich mal alle einstellungen rein, da ich nicht wirklich weiss - welche jetzt alle in frage kommen:

Code: Alles auswählen

Variable  	Wert für diese Sitzung / Globaler Wert
back log 	50
basedir 	/usr/
binlog cache size 	32.768
bulk insert buffer size 	8.388.608
character set client 	utf8
(Globaler Wert) 	latin1
character set connection 	utf8
(Globaler Wert) 	latin1
character set database 	latin1
character set results 	utf8
(Globaler Wert) 	latin1
character set server 	latin1
character set system 	utf8
character sets dir 	/usr/share/mysql/charsets/
collation connection 	utf8_general_ci
(Globaler Wert) 	latin1_swedish_ci
collation database 	latin1_swedish_ci
collation server 	latin1_swedish_ci
concurrent insert 	ON
connect timeout 	5
datadir 	/var/lib/mysql/
date format 	%Y-%m-%d
datetime format 	%Y-%m-%d %H:%i:%s
default week format 	0
delay key write 	ON
delayed insert limit 	100
delayed insert timeout 	300
delayed queue size 	1.000
expire logs days 	0
flush 	OFF
flush time 	0
ft boolean syntax 	+ -><()~*:""&|
ft max word len 	84
ft min word len 	4
ft query expansion limit 	20
ft stopword file 	(built-in)
group concat max len 	1.024
have archive 	NO
have bdb 	NO
have compress 	YES
have crypt 	YES
have csv 	NO
have example engine 	NO
have geometry 	YES
have innodb 	YES
have isam 	YES
have ndbcluster 	NO
have openssl 	NO
have query cache 	YES
have raid 	NO
have rtree keys 	YES
have symlink 	YES
init connect 	
init file 	
init slave 	
innodb additional mem pool size 	1.048.576
innodb autoextend increment 	8
innodb buffer pool awe mem mb 	0
innodb buffer pool size 	8.388.608
innodb data file path 	ibdata1:10M:autoextend
innodb data home dir 	
innodb fast shutdown 	ON
innodb file io threads 	4
innodb file per table 	OFF
innodb flush log at trx commit 	1
innodb flush method 	
innodb force recovery 	0
innodb lock wait timeout 	50
innodb locks unsafe for binlog 	OFF
innodb log arch dir 	
innodb log archive 	OFF
innodb log buffer size 	1.048.576
innodb log file size 	5.242.880
innodb log files in group 	2
innodb log group home dir 	./
innodb max dirty pages pct 	90
innodb max purge lag 	0
innodb mirrored log groups 	1
innodb open files 	300
innodb table locks 	ON
innodb thread concurrency 	8
interactive timeout 	28.800
join buffer size 	131.072
key buffer size 	16.777.216
key cache age threshold 	300
key cache block size 	1.024
key cache division limit 	100
language 	/usr/share/mysql/english/
large files support 	ON
license 	GPL
local infile 	OFF
locked in memory 	OFF
log 	OFF
log bin 	OFF
log error 	
log slave updates 	OFF
log slow queries 	OFF
log update 	OFF
log warnings 	1
long query time 	10
low priority updates 	OFF
lower case file system 	OFF
lower case table names 	0
max allowed packet 	1.047.552
max binlog cache size 	18.446.744.073.709.552.000
max binlog size 	1.073.741.824
max connect errors 	10
max connections 	100
max delayed threads 	20
max error count 	64
max heap table size 	16.777.216
max insert delayed threads 	20
max join size 	18.446.744.073.709.552.000
max length for sort data 	1.024
max relay log size 	0
max seeks for key 	18.446.744.073.709.552.000
max sort length 	1.024
max tmp tables 	32
max user connections 	0
max write lock count 	18.446.744.073.709.552.000
myisam data pointer size 	4
myisam max extra sort file size 	2.147.483.648
myisam max sort file size 	9.223.372.036.854.776.000
myisam recover options 	OFF
myisam repair threads 	1
myisam sort buffer size 	8.388.608
net buffer length 	8.192
net read timeout 	30
net retry count 	10
net write timeout 	60
new 	OFF
old passwords 	OFF
open files limit 	1.024
pid file 	/var/lib/mysql/mysqld.pid
port 	3.306
preload buffer size 	32.768
protocol version 	10
query alloc block size 	8.192
query cache limit 	1.048.576
query cache min res unit 	4.096
query cache size 	0
query cache type 	ON
query cache wlock invalidate 	OFF
query prealloc size 	8.192
range alloc block size 	2.048
read buffer size 	258.048
read only 	OFF
read rnd buffer size 	520.192
relay log purge 	ON
rpl recovery rank 	0
secure auth 	OFF
server id 	1
skip external locking 	ON
skip networking 	OFF
skip show database 	OFF
slave net timeout 	3.600
slow launch time 	2
socket 	/var/lib/mysql/mysql.sock
sort buffer size 	524.280
sql mode 	
storage engine 	MyISAM
sync binlog 	0
sync replication 	0
sync replication slave id 	0
sync replication timeout 	0
sync frm 	ON
system time zone 	CET
table cache 	64
table type 	MyISAM
thread cache size 	0
thread stack 	196.608
time format 	%H:%i:%s
time zone 	SYSTEM
tmp table size 	33.554.432
tmpdir 	
transaction alloc block size 	8.192
transaction prealloc size 	4.096
tx isolation 	REPEATABLE-READ
version 	4.1.10a
version comment 	SUSE MySQL RPM
version compile machine 	x86_64
version compile os 	suse-linux
wait timeout 	28.800
DANKE
lg thomas

Verfasst: 02.03.2007 12:45
von Jensemann
offroad4fun hat geschrieben:hi!
ich darf mich da mal anhängen:
Du darfst nicht nur anhängen, du darfst auch die anderen Posts in diesem Thread lesen. Dann wäre dir aufgefallen, das dein wait_timeout viel zu hoch ist.

Eine max_connections von 100 ist übrigens vollkommen ok, da würde ich mich bei normaler Hardware auch weigern diese hochzusetzen.

Verfasst: 02.03.2007 12:50
von offroad4fun
hi!
danke ...

das mit der wait timeout hab ich gelesen ...

-> 28.800
ich bin von 28-komma-800 ausgegangen ... und oben war 30 ok

-> soll das 28-tausend heissen ???
?????

das wär ja der tausendfache wert??