Performance Probleme Apache MySQL?

Hallo,

ich habe ab und zu paar perfomance Probleme mit meiner Internetseite.
Es kommt sporadisch vor, dass ein Seitenaufruf recht lange dauert.
Habe schon Werte angepasst und es wurde dadurch schon teilweise besser.

Aber vielleicht könnt ihr mir noch nützliche Tipps geben oder
Anleitungen geben, in dem recht einfach erklärt ist, wie ich den Speicher
optimal ausnutze von meinen Webserver.

Vielleicht habe ich auch irgendwelche grobe Fehlkonfigurationen?

Server Informationen:
Root-Server
fester Arbeitsspeicher 2000 MB
CPU 1000 MHz
Apache und MySQL auf dem aktuellsten Stand.

ca. 1500 unterschiedliche Besucher am Tag
ca. 50000 Seitenaufrufe am Tag


my.cnf

Code:
[mysqld]

key_buffer              = 16M
max_allowed_packet      = 1M
thread_stack            = 128K
thread_cache_size       = 8
max_connections        = 100
table_cache            = 1024
tmp_table_size         = 256M

# thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

#log_slow_queries       = /var/log/mysql/mysql-slow.log
#long_query_time = 4
#log-queries-not-using-indexes

[mysqldump]

quick
quote-names
max_allowed_packet=16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer=16M
sort_buffer=8M
read_buffer=2M
write_buffer=2M

[myisamchk]
key_buffer=8M
sort_buffer=8M
read_buffer=2M
write_buffer=2M
apache.cnf
Code:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          6
    MinSpareServers       3
    MaxSpareServers      10
    MaxClients           60
    MaxRequestsPerChild   0
</IfModule>

Folgende Werte werden bei mir im phpMyAdmin "rot" angezeigt.
Handler_read_rnd          1,347 k       
Handler_read_rnd_next         55 M
Created_tmp_disk_tables      91
Opened_tables              452
Table_locks_waited          665
 
Die größten Performance-Probleme entstehen zumeist durch falsche Indizes in den MySQL-Tabellen und schlecht programmierte Seiten. Mit apachetop könntest du einfach mal schauen welche Aufrufe am längsten für die Abarbeitung brauchen. Ausserdem solltest du MaxClients etwas höher setzen um mehr gleichzeitige User auf der Seite abarbeiten zu können. Und auch endlos viele MaxRequestsPerChild auf einem Worker sind nicht unbedingt brauchbar, wenn du PHP nutzt, da dadurch im schlimmsten Fall die Worker im Laufe der Zeit immer mehr RAM fressen. 10000 empfehle ich da als Maximum-Wert für Seiten mit viel Traffic. Ob die Buffer-Größen in MySQL für deine App passen kann man anhand der Configs aber nicht beantworten. Dazu müsste man die Daten der MySQL etwas genauer kennen. Wie groß ist der größte Index? Welche Tabellentypen werden genutzt? Wie oft werden temporäre Tabellen angelegt und wieder gelöscht? Und natürlich stellen sich auch ganz allgemeine Fragen. An welcher Stelle hakt die Performance (CPU, RAM, HDD-IO)? Hast du größere IOWaits auf der Platte? etc. pp.
 
Hallo TerenceSkill,

ich vermute, dein Cache für die Mysql ist zu klein. Daher wird häufig auf die Festplatte zugegriffen, was die Performance nach unten zieht.

Lass einfach mal das analyse Script (siehe Anhang) bei Dir durchlaufen. Es zeigt Dir an, welche deiner Mysql Einstellungen i.O sind und welche Du verbesseren kannst.

Hier mal meine Mysql Config (muss für dein System nicht die Beste sein!!).

#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
max_connections = 90
table_cache = 4000
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 5M
query_cache_size = 250M

query_prealloc_size = 163840
query_alloc_block_size = 32768
query_cache_min_res_unit=9K
tmp_table_size =64M
low_priority_updates =1

Ansonsten schau Dir mal den Eaccelerator an. Damit werden kompilierte PHP Codes gecacht. Dies wirkt sich positiv auf die Performance und Serverlast von PHP Anwendungen aus. Installations-Anleitung ebenfalls anbei.

Viele Grüße
404
 
hallo 404
ich wollte fragen ob es dein analysescript auch für windows2k3 gibt

weil mein problem ist das der apacheprozess unnormal hoch ist und ich nun vermute das es was mit dem mysql zutun hat.

lg akmet
 
Zurück
Oben