PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP oder JServlets bei tausenden von User?


collapse
2008-07-13, 15:41:48
hallo,

welche Plattform ist performanter bei zigtausenden Zugriffen, PHP oder Java Servlets?

beide sind optimal geschrieben.

rotalever
2008-07-13, 16:05:30
Die Sprache Java ist mit Sicherheit schneller als PHP. Aber das ist nicht alles. Der Webserver selbst verbraucht auch noch Zeit für die Anfragen, die DB verbraucht auch noch mal Zeit.
Java kenne ich nicht aber folgendes zu PHP:

Bei PHP würde ich auf jeden Fall einen Cache und Beschleuniger verwenden, zum Beispiel eAccelerator, das macht alles sehr viel schneller. Auf keinen Fall CGI verwenden. Entweder mod_php bei Apache oder fastCGI z.B. bei lighttpd.

Je nachdem was du für eine Datenbank verwendest (z.B. bei PostgreSQL), musst du auch einen Connection Pooler verwenden, das beschleunigt ungemein.

Soweit möglich immer wiederkehrende DB-Anfragen cachen, zum Beispiel mit memcached.

Interessantes zu PHP:

From talking with Owen I learned digg.com gets on the order of 200 million page views per month, and they’re able to handle it with only 3 web servers and 8 small database servers (I’ll discuss the reason for so many database servers in the next section). Even better news was that they were able to handle their first year’s worth of growth on a single hosted server like the one I was using. My hardware worries were relieved. The hardware requirements to run high-traffic PHP applications didn’t seem to be more costly than for Java.

Quelle: http://www.oreillynet.com/onlamp/blog/2006/04/digg_phps_scalability_and_perf.html

collapse
2008-07-13, 16:57:26
nunja ich hab mir nun deinen Link angesehen und hatte am Anfang eher auf Postgres als Datenbank geziehlt. Nun jedoch nach weterem Suchen scheint mir die Umsetung mit Postgress un einiges Komplizierter Kostenaufwandiger/Hardwarehungriger als wie mit MySql.

bilde ich mir da jetzt etwas falsches ein oder ist die Umsetung mit Postgres eindeutig Kostenaufwandiger und Komplizierter zu realisieren.

danke

rotalever
2008-07-13, 17:24:17
Wüsste ich jetzt nicht wieso Postgres schlechter sein sollte. Ich habe mich bei meinem Projekt letztendlich auch für Postgres und gegen MySQL entschieden. Als Sprache nutze ich PHP.
Gründe warum ich Postgres nutze:
1. "Man" sagt, dass Postgres professioneller sei, besser skaliert.
2. Bei MySQL gibt es im Wesentlichen zwei Storage Engine: MyISAM und innodb. MyISAM macht Table-Locks bei Schreibzugriffen, unterstützt kein vernünftiges Recovering großer Datenbanken und keine Transaktionen. innodb ist da wesentlich besser, ist aber "kommerziell" und wurde von oracle aufgekauft. Ein wichtiges Feature, nämlich Hot-Backup kostet meines Wissens Geld, außerdem hat innodb keine Volltext-indexe.
Postgres hat gar nicht erst verschiedene Storage-Engines, mit denen man sich rumschlagen muss, sondern eine einzige, die alle Features verbindet.
3. Ich hatte zunächst mit MySQL angefangen, dann bin ich aber zu Postgres gewechselt. Die Einarbeitung und Installation hat mich als kompletten Neuling ca. einen Tag gekostet, also sehr wenig. Ich war erst überrascht, dass PHP mit Postgres viel langsamer verbindet als mit MySQL, aber durch die Installation eines Connection Poolers (pgbouncer) ist es genauso schnell.

Achja was man bei Postgres noch beachten sollte, ist das auto-vacuuming richtig einzurichten. Das hab ich mir noch nicht angeschaut. Mittlerweile soll das aber auch gut gelöst sein.

Gast
2008-07-13, 17:34:35
Für den Apache gibt es auch ein mod_fcgid was Fast CGI implementiert
Wobei ich jetzt nicht wüsst was schneller ist, Apache mit mod_php oder mit mod_fcgid oder der Lighttpd mit FastCGI

http://dev.mysql.com/doc/refman/5.1/en/innodb-backup.html
Hot Backup kostet jährlich 390€ pro installierten MySQL Server

Mit Maria wird es eine transaktionsfähige MyISAM Storage Engine geben
Und Falcon als "Ersatz" für InnoDB ist ja auch schon in Entwicklung
Bloß bis die beiden soweit sind wirds wohl noch ne Weile dauern.

Ich persöhnlich find es ja gut das man bei MySQL sich mit verschiedenen SE "rumschlagen muss"
Man kann einfach wählen was einem für die Tabelle am sinnvollsten erscheint ;)

rotalever
2008-07-13, 17:41:39
Für den Apache gibt es auch ein mod_fcgid was Fast CGI implementiert
Wobei ich jetzt nicht wüsst was schneller ist, Apache mit mod_php oder mit mod_fcgid oder der Lighttpd mit FastCGI

Es gab mal ein Benchmark, da waren alle ungefähr gleich schnell. Lighttpd ist aber bei statischen Files, z.B. Bildern schneller und verbraucht wohl auch weniger Ressourcen.

Ich persöhnlich find es ja gut das man bei MySQL sich mit verschiedenen SE "rumschlagen muss"
Man kann einfach wählen was einem für die Tabelle am sinnvollsten erscheint ;)
Und was ist, wenn innodb am besten erscheint, aber man keine Lust hat Geld zu bezahlen?

Gast
2008-07-13, 17:48:27
Und was ist, wenn innodb am besten erscheint, aber man keine Lust hat Geld zu bezahlen?

Dann verzichtet man auf das Hot Backup oder man nimmt für die eine Tabelle eben zB. PosgresSQL :D
Es gibt halt nicht für jeden den idealen SQL Server, man muss wohl immer Kompromisse eingehen, der eine mehr, der andere weniger
Hab bisher noch nie was anderes als MyISAM verwendet (außer mal Falcon so zum Spaß), schon garnicht einen anderen SQL Server, deswegen kenn ich mich ned so aus.
Gibts denn überhaupt was, was InnoDB kann, was PosgresSQL ned kann?
Wozu soll man dann MySQL nutzen wenn man dort eh nur InnoDB verwenden würde und den Rest den MySQL kann aber nicht PosgresSQL garnicht braucht.

Gast
2008-07-13, 17:53:32
SQL ist ja zum Glück auch ANSI Standard, so groß dürften die Unterschiede in der Syntax ja nicht sein. Mehr halt die kleinen, aber feinen Details :)
Man muss sich halt ne Weile damit beschäftigen, aber du hast ja selbst gesagt hat bei dir grad mal nen Tag gedauert.
Fertige kostenlose Sachen gibts sicherlich mehr für MySQL, aber wie das im profesionellen Umfeld aussieht, hab ich keine Ahnung

mbee
2008-07-13, 18:38:58
hallo,

welche Plattform ist performanter bei zigtausenden Zugriffen, PHP oder Java Servlets?

beide sind optimal geschrieben.

Das kann man so pauschal nicht sagen: Java skaliert meiner Erfahrung nach allerdings etwas besser je nach eingesetzter Hardware. Bei PHP sollte wie erwähnt auf jeden Fall ein Cache eingesetzt werden und bei Tomcat als Servlet-Container sollte man darauf achten, dass weiterhin der Apache die statischen Elemente ausliefert. Für die Auswahl einer Plattform sollte das allerdings nicht der ausschlaggebende Grund sein: Wenn das System hier nicht mehr hinterher kommt, würde auch eine andere Plattform (oder DB) keine großartige Erleichterung bringen, sondern man sollte vielmehr über den Einsatz eines Loadbalancers und mehrerer Server nachdenken.
Wie Wahl der Plattform trifft man ja zumeist auch eher anhand des Einsatzzwecks des Projekts (verfügbare Frameworks, Schnittstellen zu anderen System, Know-How der Entwickler, etc.).

Wir haben hier z.B. ein Projekt, das mehrere Millionen PIs im Monat locker mit PHP/MySQL bewältig (Loadbalancer, 2 Webserver, 1 Datenbankserver).