PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Optimierung am Webserver



chrigu
03.03.06, 10:54
Hallo zusammen,
Folgende Ausgangslage:
Webserver (Debian 3.1 mit Kernel 2.6.15.4) mit Apache2 (prefork), PHP4 und MySQL.
Als Hauptseite läuft ein Typo3.

Hardware:


1x Xeon 2.40GHz (512kb Cache)
1GB RAM
SCSI-Raid 1 mit 2x 36GB (hdparm sagt: +/- 65MB/s)

apache2.conf

<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 256
MaxRequestsPerChild 0
</IfModule>


my.cnf


#skip-networking
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
#
# Query Cache Configuration
#
query_cache_limit = 1048576
query_cache_size = 26214400
query_cache_type = 1


Leider läuft die Website total langsam, weiss jemand wo ich optimieren könnte?
Die Hardware sollte genügend, denke es ist ein Konfiguartionsproblem, vorallem wohl bei MySQL..

Gruss,
Chrigu

Tomek
03.03.06, 11:10
Wie sieht denn die Ausgabe vom folgenden Befehl aus:

top -b -n 1
Ich würde auf jeden Fall einen PHP-Beschleuniger, wie z.B. APC (http://pecl.php.net/package/APC), installieren. Das wird die Last um ein vielfaches senken.

chrigu
03.03.06, 12:46
Ja, habe den Zend Optimizer ins Auge gefasst!
Aber die MySQL-Einstellungen, was kann ich da machen? Was ist sinnvoll bei 1GB RAM?

Gruss,
Chrigu

Tomek
03.03.06, 12:58
Vergiss den Zend Optimizer und nimm den APC.

Ich habe bei 1 GB RAM folgende MySQL-Konfiguration im Einsatz (Auszug):


[...]

[mysqld]

[...]

max_connections = 500
max_allowed_packet = 16M
key_buffer_size = 128M
myisam_sort_buffer_size = 64M
join_buffer_size = 1M
sort_buffer_size = 2M
read_buffer_size = 1M
read_rnd_buffer_size = 512K
net_buffer_length = 8K
query_cache_limit = 1M
query_cache_size = 32M
query_cache_type = 1
thread_stack = 128K
thread_concurrency = 2
thread_cache = 8
table_cache = 256
local_infile = 0
ft_min_word_len = 3

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[isamchk]
key_buffer_size = 64M
sort_buffer_size = 2M
read_buffer_size = 1M
write_buffer_size = 1M

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 2M
read_buffer_size = 1M
write_buffer_size = 1M

[mysqlhotcopy]
interactive-timeout
EDIT: Es fehlt immernoch die Ausgabe von:

top -b -n 1

chrigu
03.03.06, 13:08
Danke, werde ich MySQL-Config mal ausprobieren!
Warum Zend vergessen?



top -b -n 1
top - 14:07:16 up 8 days, 6:35, 1 user, load average: 1.06, 1.14, 1.14
Tasks: 95 total, 1 running, 93 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.2% us, 0.3% sy, 0.0% ni, 95.2% id, 0.1% wa, 0.0% hi, 0.0% si
Mem: 1033044k total, 815596k used, 217448k free, 105384k buffers
Swap: 979956k total, 1936k used, 978020k free, 370480k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 1584 516 452 S 0.0 0.0 0:03.22 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.67 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT 0 0 0 0 S 0.0 0.0 0:01.38 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
7 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 events/0
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 events/1
10 root 10 -5 0 0 0 S 0.0 0.0 0:00.04 khelper
11 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
14 root 10 -5 0 0 0 S 0.0 0.0 0:00.42 kblockd/0
15 root 10 -5 0 0 0 S 0.0 0.0 0:00.07 kblockd/1
16 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
163 root 15 0 0 0 0 S 0.0 0.0 0:11.70 pdflush
164 root 15 0 0 0 0 S 0.0 0.0 0:07.39 pdflush
165 root 15 0 0 0 0 S 0.0 0.0 0:24.77 kswapd0
166 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
167 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 aio/1
168 root 17 0 0 0 0 S 0.0 0.0 0:00.00 jfsIO
169 root 17 0 0 0 0 S 0.0 0.0 0:00.00 jfsCommit
170 root 16 0 0 0 0 S 0.0 0.0 0:00.00 jfsCommit
171 root 16 0 0 0 0 S 0.0 0.0 0:00.00 jfsSync
172 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 xfslogd/0
173 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 xfslogd/1
174 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 xfsdatad/0
175 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 xfsdatad/1
176 root 10 -5 0 0 0 S 0.0 0.0 0:02.48 xfsbufd
761 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
807 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
808 root 15 0 0 0 0 S 0.0 0.0 0:00.00 aacraid
819 root 18 0 0 0 0 D 0.0 0.0 0:00.00 firmware/dell_r
856 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
891 root 21 0 0 0 0 S 0.0 0.0 0:00.00 shpchpd_event
966 root 15 0 0 0 0 S 0.0 0.0 0:00.23 kjournald
1277 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kjournald
1278 root 15 0 0 0 0 S 0.0 0.0 0:00.46 kjournald
1279 root 15 0 0 0 0 S 0.0 0.0 0:00.39 kjournald
1280 root 15 0 0 0 0 S 0.0 0.0 0:39.01 kjournald
1281 root 15 0 0 0 0 S 0.0 0.0 0:10.04 kjournald
1711 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
2569 root 16 0 2420 848 720 S 0.0 0.1 0:03.75 syslogd
2582 root 16 0 2596 1428 348 S 0.0 0.1 0:00.08 klogd
2587 root 16 0 19916 1116 856 S 0.0 0.1 0:00.00 apcupsd
2600 root 18 0 11340 2276 1280 S 0.0 0.2 0:00.00 slapd
2632 Debian-e 16 0 5192 924 672 S 0.0 0.1 0:00.02 exim4
2652 root 25 0 2576 1228 1016 S 0.0 0.1 0:00.00 mysqld_safe
2688 root 25 0 2576 560 344 S 0.0 0.1 0:00.00 mysqld_safe
2689 mysql 11 -5 74756 52m 3140 S 0.0 5.2 57:36.80 mysqld
2690 root 25 0 1568 504 440 S 0.0 0.0 0:00.00 logger
2785 postgres 16 0 17948 2528 2060 S 0.0 0.2 0:00.14 postmaster
2791 postgres 16 0 8748 1576 516 S 0.0 0.2 0:00.06 postmaster
2792 postgres 15 0 7756 1120 572 S 0.0 0.1 0:00.05 postmaster
2806 root 16 0 6424 3620 2052 S 0.0 0.4 0:17.23 snmpd
2812 root 16 0 3548 932 692 S 0.0 0.1 0:06.82 sshd
2823 root 21 0 2940 956 812 S 0.0 0.1 0:00.00 xinetd
2828 root 16 0 2464 1008 756 S 0.0 0.1 0:00.01 arkeiad
2831 daemon 16 0 1768 364 280 S 0.0 0.0 0:00.00 atd
2834 root 16 0 1824 748 604 S 0.0 0.1 0:00.07 cron
2931 squeak 15 0 1027m 20m 1236 S 0.0 2.0 9:14.86 squeak
2944 root 16 0 1580 484 424 S 0.0 0.0 0:00.00 getty
2945 root 16 0 1584 488 424 S 0.0 0.0 0:00.00 getty
2946 root 16 0 1584 488 424 S 0.0 0.0 0:00.00 getty
2951 root 16 0 1580 488 424 S 0.0 0.0 0:00.00 getty
2966 root 16 0 1580 488 424 S 0.0 0.0 0:00.00 getty
2979 root 16 0 1584 488 424 S 0.0 0.0 0:00.00 getty
3645 root 18 0 0 0 0 Z 0.0 0.0 0:00.00 apccontrol <defunct>
10863 postgres 16 0 18348 2204 1380 S 0.0 0.2 0:00.00 postmaster
10864 postgres 16 0 18680 4092 3016 S 0.0 0.4 0:00.02 postmaster
10865 postgres 16 0 18608 3684 2680 S 0.0 0.4 0:00.00 postmaster
10866 postgres 16 0 18608 3356 2424 S 0.0 0.3 0:00.00 postmaster
10867 postgres 16 0 18608 3712 2708 S 0.0 0.4 0:00.01 postmaster
10868 postgres 16 0 18608 3688 2688 S 0.0 0.4 0:00.01 postmaster
10869 postgres 16 0 18608 3752 2740 S 0.0 0.4 0:00.01 postmaster
10870 postgres 16 0 18608 3808 2792 S 0.0 0.4 0:00.01 postmaster
10871 postgres 16 0 18608 3768 2760 S 0.0 0.4 0:00.00 postmaster
10872 postgres 16 0 18608 3752 2748 S 0.0 0.4 0:00.00 postmaster
15782 lp 21 0 2532 472 360 S 0.0 0.0 0:00.00 lpd
3235 root 16 0 4068 760 544 S 0.0 0.1 0:00.01 pure-ftpd-mysql
7367 root 16 0 21768 8344 5492 S 0.0 0.8 0:00.50 apache2
29472 www-data 15 0 35060 19m 4112 S 0.0 1.9 0:12.67 apache2
29522 www-data 16 0 34296 18m 4144 S 0.0 1.9 0:07.81 apache2
29532 www-data 16 0 34564 18m 3936 S 0.0 1.9 0:08.93 apache2
29552 www-data 15 0 35080 19m 4156 S 0.0 1.9 0:12.16 apache2
29555 www-data 16 0 34552 18m 4060 S 0.0 1.9 0:07.72 apache2
29556 www-data 15 0 34544 18m 3908 S 0.0 1.9 0:05.34 apache2
29557 www-data 16 0 34576 18m 4060 S 0.0 1.9 0:07.37 apache2
30187 www-data 16 0 34600 19m 4108 S 0.0 1.9 0:03.01 apache2
30199 www-data 15 0 34568 18m 4028 S 0.0 1.9 0:03.06 apache2
30203 www-data 17 0 34092 18m 3580 S 0.0 1.8 0:02.33 apache2
30221 www-data 16 0 21904 3856 988 S 0.0 0.4 0:00.00 apache2
30222 root 17 0 6824 1800 1484 S 0.0 0.2 0:00.01 sshd
30224 wittwerc 15 0 6108 1148 840 S 0.0 0.1 0:00.00 sshd
30225 wittwerc 15 0 2652 1428 1124 S 0.0 0.1 0:00.00 bash
30228 wittwerc 15 0 2128 960 736 R 0.0 0.1 0:00.00 top

Tomek
03.03.06, 13:17
Weil Zend so gut wie gar nichts bringt. Schau mal hier:
http://www.clarkconnect.com/forums/showflat.php?Board=webserver&Number=67958

chrigu
03.03.06, 13:44
Weil Zend so gut wie gar nichts bringt. Schau mal hier:
http://www.clarkconnect.com/forums/showflat.php?Board=webserver&Number=67958
Krass! Wusst ich gar nicht, dann werde ich wirklich die andere Lösung mal testen, danke!

Gruss,
Chrigu

marce
03.03.06, 17:13
Welche MySQL-Version hast Du denn am laufen?

Zugriff über Socket oder über IP?

Größe der DB?

Hyperthreads sind aktiv?

Han
03.03.06, 17:44
Weil Zend so gut wie gar nichts bringt. Schau mal hier:
http://www.clarkconnect.com/forums/showflat.php?Board=webserver&Number=67958

Hi, das Ergebnis kann ich bei mir nicht nachvollziehen. Habe den kostenlosen Zend-Optimizer auf Debian Sarge auf einem älteren Server (~500 MHz) installiert und da brachte er bei Typo3 enorme Geschwindigkeitssteigerungen (>200%).

Hatte mal einen Test von PHP-Caching-Programmen im Linux-Magazin gelesen, da wurde die mangelnde Stabilität bei den freien Implementierungen bemängelt, hatte mich daher nicht näher mit ihnen auseinandergesetzt. Hat hier jemand den APC in Gebrauch und kann da was dazu sagen?

Tomek
03.03.06, 18:23
linuxforen.de und zwei Server von mir laufen seit längerem mit APC. Das Ganze läuft problemlos und äußerst zügig.

Han
03.03.06, 18:29
Danke für die Info, das hört sich ja gut an :)
Werde mal den APC antesten...

PierreS
03.03.06, 18:39
@Tomek: Wo ich das gerade lese: Läuft bei Dir APC mit PHP5.1 stabil? Wenn ich APC oder eAccelerator einsetzte verabschiedet sich der Apache mit einem segmentationfault. Lustigerweise nur mit meinem selbstgeschribenem Script.

chrigu
03.03.06, 19:04
Welche MySQL-Version hast Du denn am laufen?

Zugriff über Socket oder über IP?

Größe der DB?

Hyperthreads sind aktiv?
MySQL-Version: 4.0.24
Muss ich nachschauen, gibt es da Grosse Unterschied?
Die Typo3-Datenbank ist ca. 500MB gross..
Ja, Hyperthreading läuft, habe also 4 logische Prozessoren..

Gruss,
Chrigu

Tomek
03.03.06, 21:46
MySQL 4.0 ist in Ordnung, da es ab da den Query-Cache gibt.

Tomek
03.03.06, 21:48
@Tomek: Wo ich das gerade lese: Läuft bei Dir APC mit PHP5.1 stabil? Wenn ich APC oder eAccelerator einsetzte verabschiedet sich der Apache mit einem segmentationfault. Lustigerweise nur mit meinem selbstgeschribenem Script.
Erst eAccelerator 0.9.5 Beta 1 ist teilweise kompatibel zu PHP 5.1. Ich persönlich habe nirgends PHP 5 im Einsatz, sondern PHP 4.4.2. Aber die neueste APC-Version sollte problemlos mit PHP 5.1 funktionieren.

PierreS
04.03.06, 09:13
OK, wo gibt`s die neueste APC-Version? im CVS? Die von August 05 läuft nicht mit PHP5.1

Nachtrag: Die Beta vom eAccelerator funktioniert problemlos mit PHP5. :-)

chrigu
06.03.06, 11:18
Hi,
Ich habe APC mal getestet, sieht sehr gut aus! Die Leistung ist etwa 100% gestiegen..!
Leider zeigt mir phpinfo() immer noch an, dass die Zend Engine noch läuft. Wie kann ich diese sauber deinstallieren?

Gruss,
Chrigu

tobiast
06.03.06, 11:46
Ich hatte apc gestest. Leider haben unregelmäßig Seiten nicht angezeigt werden können weil der Prozess segfaulte

chrigu
06.03.06, 14:07
Hi,
Ich habe APC jetzt auch auf dem Typo3-Server getestet! Wenn ich es über die apc.php beobachtet habe, hatte ich extreme Memory Fragmentation!
Was bedeutet Hits und Misses in der Statistik?

Gruss,
Chrigu

Tomek
07.03.06, 08:59
Wenn ich es über die apc.php beobachtet habe, hatte ich extreme Memory Fragmentation! Das ist normal und sollte nicht stören, da der Zugriff auf den RAM ziemlich flott ist. ;)

Was bedeutet Hits und Misses in der Statistik? Das sind Cache-Hits und -Misses. Ein Hit ist, wenn das Skript bereits gecached worden ist.

Es gibt nun übrigens eine neue Version. Das Changelog zu Version 3.0.9:
http://pecl.php.net/package-changelog.php?package=APC&release=3.0.9

chrigu
07.03.06, 09:04
Das sind Cache-Hits und -Misses. Ein Hit ist, wenn das Skript bereits gecached worden ist.
Ok, beim Typo3 ist der Leistung-Gewinn spürbar, toll! Es wird auch entsprechend gecacht, 99,3% Hits :D
Die MySQL-Einstellungen haben auch etwas gebracht. Einizg die Apache-Einstellungen überzeugen mich noch nicht, wo gibt's da noch Verbesserungsmöglichkeiten?


<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 256
MaxRequestsPerChild 0
</IfModule>


Gruss,
Chrigu

fuffy
07.03.06, 09:12
Hi!


Leider zeigt mir phpinfo() immer noch an, dass die Zend Engine noch läuft. Wie kann ich diese sauber deinstallieren?
Die Zend Engine (http://de.wikipedia.org/wiki/Zend_Engine) wirst du gar nicht deinstallieren wollen. ;)

Gruß
fuffy

Tomek
07.03.06, 09:31
Einizg die Apache-Einstellungen überzeugen mich noch nicht, wo gibt's da noch Verbesserungsmöglichkeiten?
Das sollte so erstmal ausreichend sein.

marce
07.03.06, 09:35
evtl. die StartServers erhöhen - der Rest sollte problemlos sein.

PierreS
07.03.06, 13:42
Es gibt nun übrigens eine neue Version. Das Changelog zu Version 3.0.9:
http://pecl.php.net/package-changelog.php?package=APC&release=3.0.9

Wow, das funktioniert jetzt sogar tadellos mit PHP5.1.2. Jetzt kann ich mir also überlegen, ob ich besser APC oder eAccelerator benutze. Hier kennt nicht zufällig einer einen Vergleich beider PHP-Caches?

Tomek
09.03.06, 16:08
Sind mir keine bekannt, aber ich würde momentan auf APC setzen. APC soll übrigens in naher Zukunft fester Bestandteil von PHP werden.

PierreS
09.03.06, 16:13
OK, APC wirkt etwas professioneller. Allerdings kann man den Optimierer vergessen; der kommt noch nicht mit PHP5 klar und produziert wirren Fehler.

Tomek
09.03.06, 16:14
Mir genügt es, dass der PHP-Sourcecode gecached wird.

PierreS
09.03.06, 18:45
Da hast Du wohl recht. Allerdings ist (bei mir) der Effekt nicht subjektiv bemerkbar. Ich müsste das mal genauer testen; liegt wohl aber auch daran, daß eigentlich nur die DB-Abfragen ins Gewicht fallen.