Wie viele Anfragen pro minute möglich?

AnPa

Registered User
Hallo,

hab mal wieder eine Frage.
Bei einem Celeron 2400 mit 512mb RAM, einer Domain, Apache2 + PHP5 + MySQL,
wie viele Abfragen sind dort ca. pro Minute Möglich?
Kann man sowas pauschal sagen?
Auf dem Server läuft nur eine Seite und die verursacht so viel Last, das der Server nach ein paar Minuten nicht mehr erreichbar ist.
Habe mal einen Teil der access_log durchsucht und komme auf ca. 90 Anfragen / minute. Jede Anfrage enthält eine MySQL Abfrage. Per TOP ist der MySQL Server der, der am meisten CPU Last beansprucht. Es folgt pro Abfrage eine SELECT-Anfrage und eine UPDATE-Anfrage.
Gibt es eine Möglichkeit, das ganze zu Beschleunigen?

Gruß
Angelo
 
Hallo.
Kann man sowas pauschal sagen?
Nein

Auf dem Server läuft nur eine Seite
Kommt auf die Seite an. Wenn es nur eine html Seite ist, ist das kein Problem.
Aber du meinst mit "eine Seite" sicherlich was anderes?

Es folgt pro Abfrage eine SELECT-Anfrage und eine UPDATE-Anfrage.
Gibt es eine Möglichkeit, das ganze zu Beschleunigen?
Klingt wie ein Counter.
Es Hilft sicherlich, wenn man versucht die Datenbank besser zu strukturieren.
 
Ist ein Ranking-Script!
Es sind ja nur 2 Tabellen in der Datenbank, und in einer stehen halt die ganzen Einträge drinne. Die andere Tabelle wird meist nicht genutzt.
Gibts denn irgendwelche Tricks, wie man die Datenbankabfragen beschleunigen kann?
 
Also danke erstmal für die Antworten...
Habe nun einen Index angelegt, aber viel bringen tut es leider nicht :(

Ausgabe von TOP:
Code:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

 8024 mysql     15   0  112m  24m 3776 S 50.6  5.0   0:33.03 mysqld
 8047 wwwrun    15   0 23132  10m 5272 S  5.6  2.1   0:00.42 httpd2-prefork
 8042 wwwrun    16   0 23240  10m 4948 R  3.0  2.1   0:02.59 httpd2-prefork
 8095 wwwrun    16   0 22972  10m 5368 R  3.0  2.1   0:00.35 httpd2-prefork
 8115 wwwrun    16   0 22948  10m 4868 R  3.0  2.0   0:00.44 httpd2-prefork
 6921 wwwrun    16   0 22984  10m 5364 R  2.5  2.1   0:13.50 httpd2-prefork
 7220 wwwrun    16   0 23120  10m 5008 R  2.5  2.0   0:15.56 httpd2-prefork
 8075 wwwrun    16   0 23496  10m 5104 R  2.5  2.2   0:01.38 httpd2-prefork
 7876 wwwrun    16   0 23368  11m 5464 R  2.0  2.2   0:03.12 httpd2-prefork
 7935 wwwrun    16   0 23264  11m 5432 R  2.0  2.2   0:01.76 httpd2-prefork
 8041 wwwrun    16   0 23256  10m 5200 R  2.0  2.2   0:01.05 httpd2-prefork
 8048 wwwrun    16   0 23108  10m 5212 R  2.0  2.1   0:01.98 httpd2-prefork
 8049 wwwrun    16   0 23216  10m 4876 R  2.0  2.1   0:00.97 httpd2-prefork
 8050 wwwrun    16   0 23312  10m 5372 R  2.0  2.2   0:00.93 httpd2-prefork
 8076 wwwrun    16   0 22964  10m 4912 R  2.0  2.0   0:00.55 httpd2-prefork
 8091 wwwrun    16   0 22948  10m 4864 R  2.0  2.0   0:00.46 httpd2-prefork
 7145 wwwrun    16   0 22976  10m 4972 R  1.5  2.0   0:09.56 httpd2-prefork
 7875 wwwrun    16   0 23488  10m 4956 R  1.5  2.2   0:03.91 httpd2-prefork
 8058 wwwrun    16   0 23100  10m 5188 R  1.5  2.1   0:00.38 httpd2-prefork
 8059 wwwrun    15   0 23224  10m 4876 S  1.5  2.1   0:00.96 httpd2-prefork
 8067 wwwrun    16   0 23232  10m 5180 R  1.5  2.2   0:01.04 httpd2-prefork
 8098 wwwrun    16   0 23232  10m 4876 R  1.5  2.1   0:00.89 httpd2-prefork
 8128 wwwrun    16   0 23116  10m 4960 R  1.5  2.0   0:00.20 httpd2-prefork
 8054 wwwrun    15   0 23072  10m 5396 R  0.5  2.2   0:01.09 httpd2-prefork
 8070 wwwrun    15   0 21404 9140 4944 S  0.5  1.8   0:01.77 httpd2-prefork

Ist das normal, das die einzelnen Prozesse so viel CPU Last beanspruchen?
 
Schau mal im Logfile von mysql nach, ob da was drinsteht, was dir weiterhilft. Wenn mysql 50% CPU verbraucht, dann stimmt wirklich etwas nicht. Es liest nicht von der Platte (dann hättest du mehr I/O-Wait, der nicht auf mysql gerechnet wird, sondern macht irgendwas in den Puffern).

Ein PHP-Beschleuniger bringt in diesem Fall gar nix, PHP ist nicht der Flaschenhals.
 
So...
Sobald ich den httpd2 und mysql wieder starte dauerts nur 30 sekunden und der Server ist voll. Habe jetzt bei TOP beobachtet, das nun auch mein gesamter Speicher voll ist. SWAP nur noch 8K von 512MB frei, beim RAM sind noch 6 MB von 512MB frei. Was kann ich dagegen tun?
In den slow-queries logs tauchen auch einige Einträge auf. Die werde ich noch genauer untersuchen. Aber wieso verbraucht das alles so viel RAM? Die Gesamte Datenbank hat 1.7 MB.
 
Ist der RAM tatsächlich voll verbraucht, oder wird hier nur gebuffert und geachet? Denn Ram voll, ist ja nicht gleich voll ;)
 
Also auch kein Swap verwendet?

Was mir dazu einfällt (sehr sehr strange bei 2,irgendwas MB Datenbank)

*) Slow Query Log
*) In PHPMyAdmin einmal die Ressourcenwerte ansehen und anschauen, was rot ist, evtl. ist ja der Server total mies configuriert
*) Indizes gesetzt? Vor allem richtig gesetzt? (Das kann man mit den Ressourcenwerten von PMA ganz nett ansehen)
 
Das problem ist, wenn ich nun die server wieder starte, dauerts nicht lang und der ist wieder dicht. Also nicht viel Zeit zum schauen :)
Ich versuchs mal mit PHPMyAdmin...
Wenn ich in der Console die Abfragen durchführe, dauern sie nur 0.05 Sec. :(
Hat nicht einer von euch Lust, sich das mal direkt anzuschauen *hoff* Normalerweise frag ich ja sowas nicht, aber ich bin verzweifelt :(

EDIT: Keiner Zeit und Lust?
Ich hab in PhpMyAdmin geschaut, doch da wird kein Eintrag Rot markiert.. Wo genau soll das denn sein?
 
Last edited by a moderator:
So... Ich habs jetzt hinbekommen, das der MySQL etwas(!) besser läuft. Soll heißen: Der Server stürzt nicht mehr ab... Aber eine ständige CPU Last von ca. 90 %.

Hab hier mal meine Einstellungen:

Code:
Servervariablen und -einstellungen
 Variable  	 Wert für diese Sitzung  	 Globaler Wert 
back log 	50 	50
basedir 	/usr/ 	/usr/
binlog cache size 	32768 	32768
bulk insert buffer size 	8388608 	8388608
character set client 	utf8 	latin1
character set connection 	utf8 	latin1
character set database 	latin1 	latin1
character set results 	utf8 	latin1
character set server 	latin1 	latin1
character set system 	utf8 	utf8
character sets dir 	/usr/share/mysql/charsets/ 	/usr/share/mysql/charsets/
collation connection 	utf8_general_ci 	latin1_swedish_ci
collation database 	latin1_swedish_ci 	latin1_swedish_ci
collation server 	latin1_swedish_ci 	latin1_swedish_ci
concurrent insert 	ON 	ON
connect timeout 	5 	5
datadir 	/var/lib/mysql/ 	/var/lib/mysql/
date format 	%Y-%m-%d 	%Y-%m-%d
datetime format 	%Y-%m-%d %H:%i:%s 	%Y-%m-%d %H:%i:%s
default week format 	0 	0
delay key write 	ON 	ON
delayed insert limit 	100 	100
delayed insert timeout 	300 	300
delayed queue size 	1000 	1000
expire logs days 	0 	0
flush 	OFF 	OFF
flush time 	0 	0
ft boolean syntax 	+ -><()~*:""&| 	+ -><()~*:""&|
ft max word len 	84 	84
ft min word len 	4 	4
ft query expansion limit 	20 	20
ft stopword file 	(built-in) 	(built-in)
group concat max len 	1024 	1024
have archive 	NO 	NO
have bdb 	NO 	NO
have blackhole engine 	NO 	NO
have compress 	YES 	YES
have crypt 	YES 	YES
have csv 	NO 	NO
have example engine 	NO 	NO
have geometry 	YES 	YES
have innodb 	YES 	YES
have isam 	YES 	YES
have ndbcluster 	NO 	NO
have merge engine 	YES 	YES
have openssl 	NO 	NO
have query cache 	YES 	YES
have raid 	NO 	NO
have rtree keys 	YES 	YES
have symlink 	YES 	YES
init connect 		
init file 		
init slave 		
innodb additional mem pool size 	1048576 	1048576
innodb autoextend increment 	8 	8
innodb buffer pool awe mem mb 	0 	0
innodb buffer pool size 	8388608 	8388608
innodb data file path 	ibdata1:10M:autoextend 	ibdata1:10M:autoextend
innodb data home dir 		
innodb fast shutdown 	ON 	ON
innodb file io threads 	4 	4
innodb file per table 	OFF 	OFF
innodb flush log at trx commit 	1 	1
innodb flush method 		
innodb force recovery 	0 	0
innodb lock wait timeout 	50 	50
innodb locks unsafe for binlog 	OFF 	OFF
innodb log arch dir 		
innodb log archive 	OFF 	OFF
innodb log buffer size 	1048576 	1048576
innodb log file size 	5242880 	5242880
innodb log files in group 	2 	2
innodb log group home dir 	./ 	./
innodb max dirty pages pct 	90 	90
innodb max purge lag 	0 	0
innodb mirrored log groups 	1 	1
innodb open files 	300 	300
innodb table locks 	ON 	ON
innodb thread concurrency 	8 	8
interactive timeout 	28800 	28800
join buffer size 	131072 	131072
key buffer size 	67108864 	67108864
key cache age threshold 	300 	300
key cache block size 	1024 	1024
key cache division limit 	100 	100
language 	/usr/share/mysql/english/ 	/usr/share/mysql/english/
large files support 	ON 	ON
lc time names 	en_US 	en_US
license 	GPL 	GPL
local infile 	ON 	ON
locked in memory 	OFF 	OFF
log 	OFF 	OFF
log bin 	OFF 	OFF
log error 		
log slave updates 	OFF 	OFF
log slow queries 	ON 	ON
log update 	OFF 	OFF
log warnings 	1 	1
long query time 	2 	2
low priority updates 	OFF 	OFF
lower case file system 	OFF 	OFF
lower case table names 	0 	0
max allowed packet 	1047552 	1047552
max binlog cache size 	4294967295 	4294967295
max binlog size 	1073741824 	1073741824
max connect errors 	10 	10
max connections 	200 	200
max delayed threads 	20 	20
max error count 	64 	64
max heap table size 	16777216 	16777216
max insert delayed threads 	20 	20
max join size 	4294967295 	4294967295
max length for sort data 	1024 	1024
max prepared stmt count 	16382 	16382
max relay log size 	0 	0
max seeks for key 	4294967295 	4294967295
max sort length 	1024 	1024
max tmp tables 	32 	32
max user connections 	0 	0
max write lock count 	4294967295 	4294967295
myisam data pointer size 	4 	4
myisam max extra sort file size 	2147483648 	2147483648
myisam max sort file size 	2147483647 	2147483647
myisam recover options 	OFF 	OFF
myisam repair threads 	1 	1
myisam sort buffer size 	16777216 	16777216
myisam stats method 	nulls_unequal 	nulls_unequal
net buffer length 	8192 	8192
net read timeout 	30 	30
net retry count 	10 	10
net write timeout 	60 	60
new 	OFF 	OFF
old passwords 	OFF 	OFF
open files limit 	1234 	1234
pid file 	/var/lib/mysql/mysqld.pid 	/var/lib/mysql/mysqld.pid
port 	3306 	3306
preload buffer size 	32768 	32768
prepared stmt count 	0 	0
protocol version 	10 	10
query alloc block size 	8192 	8192
query cache limit 	1048576 	1048576
query cache min res unit 	4096 	4096
query cache size 	104857600 	104857600
query cache type 	ON 	ON
query cache wlock invalidate 	OFF 	OFF
query prealloc size 	8192 	8192
range alloc block size 	2048 	2048
read buffer size 	4190208 	4190208
read only 	OFF 	OFF
read rnd buffer size 	4190208 	4190208
relay log purge 	ON 	ON
relay log space limit 	0 	0
rpl recovery rank 	0 	0
secure auth 	OFF 	OFF
server id 	1 	1
skip external locking 	ON 	ON
skip networking 	OFF 	OFF
skip show database 	OFF 	OFF
slave net timeout 	3600 	3600
slave transaction retries 	0 	0
slow launch time 	2 	2
socket 	/var/lib/mysql/mysql.sock 	/var/lib/mysql/mysql.sock
sort buffer size 	1048568 	1048568
sql mode 		
sql notes 	ON 	ON
sql warnings 	ON 	ON
storage engine 	MyISAM 	MyISAM
sync binlog 	0 	0
sync frm 	ON 	ON
sync replication 	0 	0
sync replication slave id 	0 	0
sync replication timeout 	0 	0
system time zone 	CET 	CET
table cache 	512 	512
table type 	MyISAM 	MyISAM
thread cache size 	0 	0
thread stack 	196608 	196608
time format 	%H:%i:%s 	%H:%i:%s
time zone 	SYSTEM 	SYSTEM
tmp table size 	33554432 	33554432
tmpdir 		
transaction alloc block size 	8192 	8192
transaction prealloc size 	4096 	4096
tx isolation 	REPEATABLE-READ 	REPEATABLE-READ
version 	4.1.21-log 	4.1.21-log
version comment 	SUSE MySQL RPM 	SUSE MySQL RPM
version compile machine 	i686 	i686
version compile os 	suse-linux 	suse-linux
wait timeout 	28800 	28800

my.cnf:
Code:
[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
#skip-locking
key_buffer = 64M
key_buffer_size = 64M
max_allowed_packet = 1M
table_cache = 512
#table_open_cache=256
sort_buffer_size=4M
max_connections=200
sort_buffer_size = 1024K
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 16M
log_slow_queries=/var/lib/mysql/slow-queries.log
long_query_time=2
query_cache_type=1
query_cache_size=100M
server-id       = 1

Hat jemand eine Idee, was man noch ändern könnte??
Hilft evtl. ein Update auf MySQL 5 ?
 
Last edited by a moderator:
Was für nen System hast du drauf?
wwwrun? Plesk?

Möchte dir sagen das ich auch eine sporadische Auslastung von 99% aufm Mysql habe. Nach ein Tag läuft er meist wenn ich wieder schaue auuf 99% und zieht den ganzen server runter. Plesk Update ergab das das Problem bei mir nicht mehr da ist, villeicht nen Mysql update machen.
 
Nutze Confixx und Suse 9.3...
Der MySQL lastet ja nicht nur so, sondern weil er zu lange zum Arbeiten braucht, denke ich... Also wenn er nix zu tun hat, dann ist er auch auf 0 %...
 
Lass mal einen "iostat -xt 2" ein paar Sekunden mitlaufen, wenn MySQL sso rödelt. Daran kann man sehen, ob es auf die Platte zugreift oder woanders arbeitet.
 
Back
Top