Mailinglisten-Archive |
Hi Patrick, Liste, Patrick Bierans schrieb: > Ich habe viele MySQL-Abfragen und viel HTML per PHP und viele Includes > und viele Arrays und viele Funktionen. Images, Tables und CSS werden > auch reichlich genutzt. Es handelt sich um einen Shop. Momentan braucht > der Apache pro Seite etwa 0.59 Sekunden zum Abarbeiten; Antwortszeit, > Senden und Seitenaufbau kommen dann noch hinzu. Ja, das ist reichlich. > Wo kann ich generell noch Zeit rausholen? > Wo habt ihr Performance herausholen können? Hmm, imho wuerde es sich wahrscheinlich lohnen, noch mal die bearbeitungszeit der includes einzeln anzuschauen, und auch die Dauer der einzelnen mysql-Abfragen stoppen. Es gibt afaik selbst bei den gleichen includes je nach webserver und Plattform sehr unterschiedliche Zeiten, zumindest hatte Ulf mal auf Solaris auch mit langsamen includes zu kaempfen . > > > > Wo wird am meisten Rechnenzeit verschwendet? Ohne viele Messpunkte schwer zu sagen :-) . > > Außer man macht's als PHP-CGI, aber dann dauert der Aufbau länger. > Hat jemand in diesem Zusammenhang Erfahrungswerte? Hmm, ich halte es fuer unwahrscheinlich, dass der Einsatz von CGI beschleunigend wirken wuerde. Wenn, dann schon eher ein anderer Webserver wie z.B. thttpd, der neben threads auch throttling bietet. Und evtl. in der Zusammenarbeit mit php4 hinreichend stabil ist, seitdem sascha den IRCG auf dieser Basis gebaut hat. Auch der Apache 2 unterstuetzt Thr[eads|ottling] . Aber die reine CPU-Rechenzeit durch PHP wird davon natuerlich nicht beeinflusst. > > > [...] Application-Server [...] mit SharedMemory [...] simulieren > > > [...] unglueckliches SQL-Design [...] Hmm, shared memory koennte imho wirklich etwas bringen. Meiner Erfahrung nach ist das Holzhammer-Locking bei MySQL problematisch, wenn man ueber Sessions- und Logging-Funktionalitaet sehr viele Inserts erzeugt, weil diese je nach zugrundeliegenden Tabellentyp gleich die ganze Tabelle / viele Zeilen locken. Wenn man einen Teil dieser Angaben in den shared mem legen kann, sollte das etwas helfen. Wenn bei jedem Zugriff grosse Strukturen aus der Datenbank oder auch umstaendlich erzeugt weden muessen, kann es helfen, diese ebenfalls im shared mem vorzuhalten. Wenn die Inserts nicht gleich wieder gebraucht werden, kann man das MySQL mit "Insert delayed" tunen. Ausserdem sollte man sich die gesamte Cache- Funktionalität in Pear anschauen, vielleicht lassen sich so ja noch einige Funktionsergebnisse aufbewahren. Viele Grüße, vielleicht hilfts ja ein bischen, -johann
php::bar PHP Wiki - Listenarchive