Speedy. schrieb:
Edit: ich glaube auch nicht, dass wir diese Performance benötigen (wahrscheinlich würde es da ein Apache2 mit mod_php tun), aber ich bin immer gerne informiert über bessere Möglichkeiten.
Läuft nur eine einzige Seite, ein einziger User? Dann kannst du tatsächlich einfaches Apache2-MPM-Prefork mit Mod_PHP verwenden.
Wenn du mehrere Seiten hast, die auf separaten Usern laufen, dann kann ich dir nur zu Apache2-MPM-ITK raten. Zwar sind einige andere MPM-Implementierungen einen Hauch schneller, aber die nerven hinsichtlich Stabilität oder dem Zwang, FCGI zu verwenden. Außerdem muss man sich da teilweise noch SUEXEC antun...
Insgesamt würde ich immer wieder auf Apache2-MPM-ITK mit PHP-FPM setzen. Das ganze Konstrukt ist extrem flexibel, schnell und unschlagbar übersichtlich zu konfigurieren.
nginx ist etwas schneller, dafür ist die Konfiguration deutlich unübersichtlicher/komplexer.
Was, nach allem was ich darüber gelesen habe, wirklich einen Blick wert ist, ist der
Cherokee Server. Das Teil ist irgendwo zwischen dem puristischen Ansatz von nginx und der Flexibilität und Konfigurierbarkeit von Apache angesiedelt, und soll verdammt schnell sein.
Was du
auf keinen Fall vergessen darfst, ist ein PHP OpCode-Cache.
metalpinguin schrieb:
Aber wenn du Apache und Nginx mit PHP-FPM einrichtest ist die reine PHP Performance identisch nur kann nginx die Statischen Files etwas effizienter ausliefern.
Apache hat noch einen kleinen Nachteil in der Performance: .htaccess. Diese Files sind zwar grandios, um sehr flexibel ordnerbasiert Rechte zu vergeben, Rewrites zu konfigurieren,..., aber blöderweise muss bei jedem Aufruf der gesamte Baum rekursiv durchlaufen werden.
Man kann im Zweifel, wenn die statischen Ressourcen wirklich so lahm sind, ja auch einen nginx als Cache einrichten.
Ich würde mir aber angucken die Sessions bzw Caches des jeweiligen Frameworks in Redis z.B. abzulegen dies ist schneller als File oder MySQL.
Redis ist eine Option, aber es gibt noch ein paar andere schöne Lösungen dafür, z.B.:
- RAM-Disk... Spart viel Konfiguration/Entwicklung. Man tauscht nur den normalen PHP Session Ordner gegen einen RAM-Ordner. Dafür braucht es nur ein kleines Script, so dass der Server beim Reboot den Ordner erstellt. Ein komplexeres Script kann vor (geplantem) Herunterfahren den Inhalt der RAM-Disk auf die Festplatte schreiben und nach dem Reboot wiederherstellen.
Bei nem Crash ist natürlich alles flöten, aber das trifft auf jede nicht 100% ACID-konforme Lösung zu.
- Memcached... Sehr feines Ding. Ist natürlcih 100% flüchtig, sogar ein "service memcache restart" killt die Daten, aber dafür ist Memcache sehr flexibel und leicht zu bedienen. Ein paar Zeilen PHP-Code sorgen schon dafür, dass man Werte in den Cache ballert oder herausholt.
Wenn du das meist ausgeführte SQL Query optimierst holst du oft mehr raus als mit dem wechsel auf MariaDB oder PerconaSQL zu MySQL oder Parameteroptimierungen für MySQL.
Das mag stimmen, aber es schadet nicht, von Anfang an auf MariaDB zu setzen. Im schlimmsten Fall ist man nur genauso schnell wie mit MySQL. Im besten Fall hingegen rockt es einfach nur. Außerdem kann MariaDB ein paar Zaubertricks, die MySQL eben nciht drauf hat, z.B. einen eigenen (noch etwas rudimentären) NoSQL-Ansatz.
asdfman schrieb:
Der beste Webserver ist in C gehackt, mit dietlibc, libowfat, unter gatling laufend und mit einem tinyldap-Backend.
Das mag sein, aber wer tut sich so ein Machwerk freiwillig an? Jedes Mal, wenn du etwas Programmlogik umschreiben willst, musst du allen Scheiß neu kompilieren.