[gelöst] Apache2 perfomance mod_file_cache Pfad zu Datei ist falsch
am 12.05.2010 - 07:17 Uhr in
Hi Leute,
ich versuche gerade einem Performance Problem auf die Schliche zu kommen. Meine Drupal Homepage befindet sich auf einem kleinen Mini-ITX Rechner der mir gehört. Wenn ich mich bei meiner Drupal Seite einlogge benötige ich über 10sec. Um überhaupt auf die Homepage zu kommen dauert es zwar auch, aber das hält sich noch in Grenzen. Nun habe ich für meinen Apache Server folgendes in /etc/apache2/conf.d/preformance eingefügt:
EnableMMAP On
<IfModule mod_perl.c>
<IfModule mod_file_cache.c>
<Perl>
opendir (DIR, "/var/www/echte/modules");
while ($file = readdir (DIR)) {
if ($file !~ /^\./) {
push @MMapFile, $file;
}
}
closedir (DIR);
</Perl>
<Perl>
opendir (DIR, "/var/www/echte/sites/all/modules");
while ($file = readdir (DIR)) {
if ($file !~ /^\./) {
push @MMapFile, $file;
}
}
closedir (DIR);
</Perl>
</IfModule>
</IfModule>Damit lade ich alle Module (statische Dateien) in meinen Arbeitsspeicher. Leider funktioniert, dass nicht, ich erhalte folgende Meldung:
feld-server:/var/www# /etc/init.d/apache2 reload
Reloading web server config: apache2[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/user), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/upload), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/update), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/trigger), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/translation), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/tracker), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/throttle), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/taxonomy), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/system), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/syslog), skipping
[Wed May 12 08:05:58 2010] [warn] (2)No such file or directory: mod_file_cache: unable to stat(/etc/apache2/statistics), skipping
...Weiß Jemand was ich da falsch gemacht habe?
Grüße Markus
- Anmelden oder Registrieren um Kommentare zu schreiben

Hast du zuvor überhaupt genau
am 12.05.2010 - 08:34 Uhr
Hast du zuvor überhaupt genau untersucht an welcher Stelle und mit welchen Tätigkeiten der Server sich in den 10 Sekunden so beschäftigt? Es bringt selten etwas rein auf Verdacht irgendeine Maßnahme in Angriff zu nehmen, so lange nicht klar ist ob und zu welchem Teil etwas zur Gesamtperformance beiträgt.
Mod_file_cache kann nur benutzt werden um reguläre statische Dateien, die vom Apache Core gehandelt werden, zu cachen. Bei CGIs, PHP und dergleichen kann es dagegen nicht eingesetzt werden.
Alexander Langer schrieb Hast
am 12.05.2010 - 09:30 Uhr
Hast du zuvor überhaupt genau untersucht an welcher Stelle und mit welchen Tätigkeiten der Server sich in den 10 Sekunden so beschäftigt? Es bringt selten etwas rein auf Verdacht irgendeine Maßnahme in Angriff zu nehmen, so lange nicht klar ist ob und zu welchem Teil etwas zur Gesamtperformance beiträgt.
Die Festplatte ist schnell genug.
feld-server:/var/www# hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 1288 MB in 2.00 seconds = 643.63 MB/sec
Timing buffered disk reads: 234 MB in 3.01 seconds = 77.72 MB/sec
Performance Logging Modul aktiviert:
#Sortiericon Datum Pfad Memory (MB) ms (Total) Anonymous?52 12.05.2010 - 09:45 admin/reports 15.75 1093 Nein
51 12.05.2010 - 09:45 admin 17.75 1868 Nein
50 12.05.2010 - 09:45 welcome 15.50 607 Nein
49 12.05.2010 - 09:45 welcome 15.50 10667 Nein
48 12.05.2010 - 09:44 welcome 1.00 32 Ja
47 12.05.2010 - 09:44 admin/reports 12.00 484 Ja
46 12.05.2010 - 08:56 welcome 1.00 41 Ja
MySQL mit abgefragt:
Qcache_free_blocks 4Qcache_free_memory 15563792
Qcache_hits 165
Qcache_inserts 124
Qcache_lowmem_prunes 0
Qcache_not_cached 431
Qcache_queries_in_cache 97
Qcache_total_blocks 231
Meine CPU bleibt bei unter 5% für die ersten 10 Sek., dann folgt 2 Sek lang eine Auslastung meiner CPU von bis über 80%.
Mein System-Platte soll normalerweise in standby Modus fallen. Als Zeit habe ich 1Min. voreingestellt. Ich werde das nochmal höher setzen, grundsätzlich würde ich mich freuen, wenn ich vieles über Arbeitsspeicher regeln könnte, so hatte ich es geplant, aber das scheint wie ich oben gezeigt habe nicht zu funktionieren. Nur die Module haben über 22MByte, im Vergleich dazu hat meine Homepage nur 3Mbyte.
Allerdings wenn ich eine Zeit lang nicht auf mein Forum zugreife ohne mich abgemeldet zu haben und ich greife dann auf ein Element (z.b. mein Forum) zu, dann dauert es nur 2 Sek. Dabei erwacht meine Festplatte auch aus dem Standby Modus nur dauert das ganze dann 2 statt 12 Sekunden.
Mod_file_cache kann nur benutzt werden um reguläre statische Dateien, die vom Apache Core gehandelt werden, zu cachen. Bei CGIs, PHP und dergleichen kann es dagegen nicht eingesetzt werden.
Aber diese Dateien sind statisch. Wie kann ich diese Cachen? Und warum geht das nicht mit diesen Modulen?
Grüße Markus
Schau dir mal lieber die
am 12.05.2010 - 09:41 Uhr
Schau dir mal lieber die Ausgaben vom Devel-Modul an...
PHP-Dateien werden vom PHP-Modul ausgeführt und nicht wie "normale" Dateien über den Apache Core an den User Agent übermittelt. Darauf hat das File Cache Modul schlichtweg keinen Einfluss. Kann man aber auch in der offiziellen Modul-Doku nachlesen.
Für häufig benötigte Dateien und dazu gehören die diversen Modul- und Core-Dateien von Drupal sind dererlei Hackentricks auch wenig relevant, da die Dateien eh im Dateisystem-Cache des Betriebssystems liegen - es sei denn der Server leidet unter chronischem Mangel an Hauptspeicher und muss andauernd flushen.
Wenn du APC als PHP Opcode Cache einsetzt (was im Grunde IMMER anzuraten ist), cacht zusätzlich APC die fertig geparsten Skripte im RAM. In dem Fall wird eh nur selten auf die Originaldateien zurückgegriffen (etwa nach Ablauf der TTL, wenn der EIntrag aus dem Cache geschmissen oder die Basisdatei verändert wurde).
Alexander Langer
am 12.05.2010 - 11:13 Uhr
Schau dir mal lieber die Ausgaben vom Devel-Modul an...
Mit dem kann ich mir genauer anschauen wo der Flaschenhals ist?
Wenn du APC als PHP Opcode Cache einsetzt (was im Grunde IMMER anzuraten ist), cacht zusätzlich APC die fertig geparsten Skripte im RAM. In dem Fall wird eh nur selten auf die Originaldateien zurückgegriffen (etwa nach Ablauf der TTL, wenn der EIntrag aus dem Cache geschmissen oder die Basisdatei verändert wurde).
Wie macht man das? Das Modul nehme ich mal an, ist unter http://pecl.php.net/package/APC zu erreichen? Benötige ich dafür noch weitere Module? Ist das ein normales Drupal Modul? Wie richtet man das ein?
EDIT: Ich habe doch kein Windows System. Warum sagst Du denn nix. :-) Also APC gibt es auch in meinem Debian Lenny System, fix und fertig.
feld-server:~# apt-cache showpkg php-apc
Package: php-apc
Versions:
3.0.19-2 (/var/lib/apt/lists/ftp.de.debian.org_debian_dists_lenny_main_binary-i386_Packages)
Description Language:
File: /var/lib/apt/lists/ftp.de.debian.org_debian_dists_lenny_main_binary-i386_Packages
MD5: 8251ad5837408cf96eba7678286389c6
Reverse Depends:
Dependencies:
3.0.19-2 - libc6 (2 2.7-1) phpapi-20060613+lfs (0 (null)) php5-gd (0 (null))
Provides:
3.0.19-2
Ist das in Ordnung? Ich nehme an das muss noch konfiguriert werden? Wo gibt es ein Howto? Welche Config Datei muss ich bearbeiten? /etc/php/apache2/php.ini oder /etc/php/cli/php.ini ?
In /etc/php5/conf.d/apc.ini steht:
extension=apc.soNeed Input? :-)
Grüße Markus
Ich habe jetzt mal dfas Devel
am 12.05.2010 - 12:08 Uhr
Ich habe jetzt mal das Devel Modul installiert, komme damit aber nicht ganz klar, hier die gekürzte Ausgabe:
ms # where query
23.21 1 cache_set INSERT INTO cache_menu (cid, data, created, expire, headers, serialized) VALUES ('links:navigation:tree-
22.23 1 cache_set UPDATE cache_menu SET data = 'a:2:{s:4:\"tree\";a:89:{i:1;a:2:{s:4:\"link\";a:37:{s:14:\"load_functions\";s:0:\"\";s:16:\"to_arg_functions
19.51 1 menu_tree_page_data SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments,
Und hier der link für die ersten 3 Einträge nach Zaitdauer sortiert:
http://nopaste.debianforum.de/34612
Ich verstehe diese Einträg nicht ganz. Z.b. sind 23.21ms doch nicht viel?
Informationen währende der Anmeldung scheint devel nicht zu protokollieren? Oder geht das?
Habe Unter Verwalten --> Einstellungen --> Leistung gesehen, dass Block-Cache deaktiviert ist. Als Beschreibung steht darunter:
Beachten Sie, dass das Block-Caching inaktiv ist, wenn Module aktiviert sind, die Zugriffsbeschränkungen auf Inhalte festlegen.
Mir fällt als Modul bei mit Autologout ein, oder warum kann ich diese Feld nicht aktivieren?
Grüße Markus
Sorry, bin nun außer Haus.
am 12.05.2010 - 12:14 Uhr
Sorry, bin nun außer Haus. Entweder schaut mal ein anderer nach, oder erinnere mich ab morgen mal dran, falls ich es verdrängen sollte.. ;)
Da ich nicht weiß warum
am 12.05.2010 - 13:30 Uhr
Da ich nicht weiß warum Block-Caching deaktiviert ist, wollte ich hier nochmal eine Auflistung meiner aktivierten Module machen:
Welche Module muss ich ausschalten um Block Caching aktivieren zu können?
Grüße Markus
Was sagt das Devel Modul denn
am 13.05.2010 - 10:33 Uhr
Was sagt das Devel Modul denn wieviel Zeit insgesamt (!) bei der Seitengenerierung für Datanbankabfragen und wieviel für die Ausführung von PHP draufgeht?
APC kann man natürlich auch konfigurieren, dürfte in deinem Fall aber erstmal mit den Defaults gut laufen. Mit APC kommt auch eine apc.php, kopier die mal irgendwohin von wo aus du sie per Browser aufrufen kannst und du kannst dir die laufenden Stats von APC mal anschauen.
Alexander Langer schrieb Was
am 13.05.2010 - 13:53 Uhr
Was sagt das Devel Modul denn wieviel Zeit insgesamt (!) bei der Seitengenerierung für Datanbankabfragen und wieviel für die Ausführung von PHP draufgeht?
Also ich nehme mal an Du meinst die etlichen Seiten die ich zu Gesicht bekomme, wenn ich mich einlogge Unten? Oder meinst Du Verwalten --> Berichte --> Leistungsprotokolle/Statusbericht ?
Hier ein Video von den den Devel Log http://www.youtube.com/watch?v=tUmzzq66rfc
Unter phpmyadmin --> MySQL-Laufzeit-Informationen anzeigen gibt es auch noch ne Menge Informationen
APC kann man natürlich auch konfigurieren, dürfte in deinem Fall aber erstmal mit den Defaults gut laufen. Mit APC kommt auch eine apc.php, kopier die mal irgendwohin von wo aus du sie per Browser aufrufen kannst und du kannst dir die laufenden Stats von APC mal anschauen.
Erledigt. Irgendwie kann ich aus APC aber nicht lesen was er in den 12 Sekunden macht, auch die von mir unten geposteten APC Listen sind nicht wirklich aussagekräftig, sie zeigen mir alle die gleiche Last Accessed-Time an.
APC System Cache Entries:
http://nopaste.debianforum.de/34616
APC Host Stats
http://nopaste.debianforum.de/34617
Hier ein Bild meiner Stats:
http://img143.imageshack.us/img143/8027/bildschirmfotoapcinfofe.png
Grüße Markus
Wagmeutig wie ich bin :-)
am 13.05.2010 - 22:32 Uhr
Wagmeutig wie ich bin :-) habe ich mal Modul für Modul ausgeschaltet.
Das Block-Caching konnte nicht aktiviert werden,weil Nodeaccess (6.x-1.3, Provides per node access control) aktiviert war, und die Geschwindigkeitseinbuße kam durch Login Security (6.x-1.0, Enable security options in the login flow of the site.).
Grüße Markus