tuxad.com

Linux Systemhaus Herford

TYPO3 patches

typo3temp/EXTERNAL_URL*

Der folgende Patch behebt den Fehler, dass 'Indexed Search' bei aktivierter Indexierung externer URLs viele Dateien in typo3temp ablegt, die alle mit 'EXTERNAL_URL' beginnen und 0 Byte groß sind.

Bei größeren oder stark besuchten Webpräsenzen können sich so innerhalb kurzer Zeit mehrere hunderttausende Dateien ansammeln, die je nach verwendetem Dateisystem die Geschwindigkeit der Website drastisch verringern können.

Eine Websuche lieferte einige Einträge zu dem Thema, die ältesten mehrere Jahre alt und die jüngsten wenige Wochen. Eine Lösung wurde nirgends erwähnt. Es gab lediglich den Tipp, die Indexierung externer URLs abzuschalten. Offensichtlich handelte es sich hier um einen Bug, der seit Jahren in allen TYPO3-Versionen vorhanden ist.

Der Patch bewirkt das Löschen der von tempnam() angelegten Datei und verhindert die Indexierung, wenn bei tempnam() ein Fehler auftrat.

typo3-4.2.8-class.indexer.php.no-external_url-in-typo3temp.patch

Da ein stetig wachsendes Verzeichnis durchaus kritisch werden kann, wenn kein geeignetes Monitoring vorhanden ist, der Bug schon seit Jahren besteht, ein Entwickler den Patch nicht annehmen wollte und ein Abonnement einer weiteren Mailingliste nur zur Vermehrung von Datenmüll beigetragen hätte, veröffentliche ich den Patch auf diese Weise.

Der Bug ist bei typo3.org im Bugtracker verzeichnet: http://forge.typo3.org/issues/21387. Seit 2010-03-29 ist dieser Fehler in tx_indexedsearch "resolved".

typo3temp/javascript_*

Einen Tag später ist ein anderes typo3temp-Verzeichnis mit über 150000 Javascript-Dateien sehr voll. Auch hier ergibt die Recherche, dass der Bug schon lange bekannt ist. Dazu gab es die Empfehlung, bei "GMENU_LAYERS / TMENU_LAYERS" die "layer_menu_id" zu setzen.

In TSref findet sich folgendes dazu:

layer_menu_id

string

If you want to specifically name a menu on a page. Probably you don't need that!

Warning: Don't use underscore and special characters in this string. Stick to alpha-numeric.

Man braucht es also wahrscheinlich nicht. Aber wenn man keine ID vergibt, wird mittels "md5(microtime())" auf unsichere Weise ein "Unique-Filename" erzeugt. Da sich der String natürlich ständig ändert und es keine Verwaltung (Löschen) für diese temporär genutzten Dateien gibt, kann das Verzeichnis bei stark besuchten Websites schnell mit zehntausenden oder hunderttausenden Dateien gefüllt werden. Der Effekt ist der gleiche wie bei dem oben erwähnten Bug. Die Website wird immer laaangsamer.

Der Patch ersetzt microtime() durch ein Kürzel für das Menü und den Hostnamen. Das ist auch nur ein Workaround.

typo3-4.3.2-no-typo3temp-fill-with-javascript.patch

Auch dieser Bug ist mittlerweile bei typo3.org im Bugtracker verzeichnet: http://forge.typo3.org/issues/21388. Interessant ist der Kommentar von Jorgo S. am 2013-04-03:

Wow... 2 years of nothing and then this is what the community gets?

typo3temp/javascript_* II.

Der TYPO3 Source ist voll mit Code a la "md5(microtime())". Es gibt keine Bibliotheksfunktionen für die Verwaltung temporärer Dateien. Wenn keine eindeutige ID wie beispielsweise die oben erwähnte layer_menu_id zur Verfügung steht, können die betreffenden Elemente als Ganzes erfasst werden. Eine Möglichkeit stellt die Serialisierung der Variable des anzuzeigenden Elements dar: "md5(serialize(element-array-variable))"

Hier ein weiterer Patch gegen extrem viele Javascript-Dateien: typo3-4.1.2-no-typo3temp-fill-with-javascript-INPfixMD5-1.patch

Der Bug ist bei typo3.org im Bugtracker verzeichnet: http://forge.typo3.org/issues/22311.

Auch hier gibt es noch einen interessanten Kommentar nach mehreren Jahren (am 2013-04-01):

I'm closing all the other _LAYERS related issues currently, but a small grep showed that the code in question here is still present in 6.1,...


Kontrolle von typo3temp-Verzeichnissen

Ein Beispiel zeigt eine einfache Überwachungsmöglichkeit aller typo3temp-Verzeichnisse eines Webservers mittels eines Tools aus dem ngtx-Paket:

# time knoerre maxdirentries/2/home/@/html/typo3temp
/home/user1234/html/typo3temp=8877 [total = 61362]
8877

real    0m0.216s
user    0m0.008s
sys     0m0.204s
Das Löschen von Javascript-Dateien ist mit dem Tool "direntries" aus dem ngtx-Paket sehr schnell möglich. Dieses Beispiel zeigt, wie Javascriptdateien älter als ein Tag gelöscht werden:
# direntries -D -e .js
554798

Zum Monitoring von TYPO3-Webpräsenzen gibt es einen kurzen Artikel beim T3N-Magazin: Website-Monitoring mit Nagios



Copyright © 2004-2017 Frank W. Bergmann
Alle Rechte vorbehalten. Rechtliche Hinweise

Keywords dieser Seite: Linux, Systemhaus, Herford, LPI, LPIC, LPIC-2, LPIC-3, zertifiziert, Zertifizierung, Linux-Systemhaus, Unix, Betriebssystem, Linux, Systementwicklung, Optimierung, Systemprogramme, Programmierung, Software-Entwicklung, Patches, System-Administration, Systemadministration, OpenSource, Performance, Monitoring-Spezialist, Monitoringsystem, Nagios, Monitoring, Nagios-Plugin, Nagios-Server, NRPE, SNMP, IT-Security, Nameserver, DYNDNS, Hosting, Webhoster, Webhosting-Unternehmen, Webserver, Domainhosting, Domains, Virtual-Root, VirtualRoot, Linux-Distribution, Linux-Software, Linux-System, Linux-Hosts, Mail-Server, Mailprovider, Mailserver, Spamschutz, DNSBL, Technische Dokumentation, Administration, Sicherheitskonzept, Software-Entwicklung, Softwareentwicklung, Softwareprojekt, Datenschutz, Datensicherheit, Distribution, GNU GPL, Hardware, Firewire, IT-Dienstleister, IT-Dienstleistung, Internet-Fullservice, Internetserver, Netzwerk, Netzwerkadministration, Netzwerkdienste, Netzwerke, Netzwerktechnik, Programm, Programmiersprachen, Projekt, Python, Risikoanalyse, Virtual-Root-Server, Router, SMTP-Relay, SNMP, Schulungen, Security, Server, Serverdienste, Spam-Empfang, Spam-Versand, Spamassassin, Spammer, Spammer-Datenbanken, Spammer-Netze, Spammerlisten, Spamtrap, Geschwindigkeit, Monitoring, Webserver, Linux-Systemhaus, Herford, Linux