Zum Inhalt springen

CoolUri beschleunigen

Erstellt am 27. April 2008 · 3 Antworten · letzte Antwort am 30. April 2008

Tags: Frage

mamuesp ·

Hallo!

Mal eine kleine Erfahrung von mir, die mir meine Seite um bis zu dem Faktor 10 schneller gemacht hat. Sollte das schon bekannt sein, bitte löschen oder so ... ;-)

Ich betreibe eine Seite mit TYPO3 4.1.6, YAML und mm_forum. Dabei habe ich auch CoolUri eingesetzt. Ich habe dieses stark auf mm_forum angepasst, so dass so gut wie keine Paramter mehr in den URLs vorkommen. Dies führte zu vielen Einträgen in der Datenbank-Tabelle "link_cache" (mehr als 40.000, das Forum hat viele Einträge und die PNs sind auch beliebt ...)

Das führte aber dazu, dass bei ca. 30 eingeloggten Usern die Antwortzeiten auf bis zu 30 Sekunden anstiegen (2-3 wären ok gewesen). Nach einigem Forschen fand ich durch das MStudieren der slow-queries.log von mySQL heraus, dass es fast immer CoolURI-Queries waren, die sehr lange Laufzeiten hatten. Es stellte sich heraus, dass eine Query der Form

SELECT *, DATEDIFF(NOW(),tstamp) AS daydiff FROM link_cache WHERE params='a:1:{s:2:\"id\";s:2:\"90\";}';

(nur ein Beispiel) lange Antwortzeiten lieferte. Ein Hinzufügen eines Indizes über 'params' mit einer Länge von 1024 (es handelt sich um einen Blob, ein varchar wäre an dieser Stelle für's Indizieren besser gewesen ...) hat das Problem mit einem Schlag gelöst. Ich habe wieder Antwortzeiten um die 1 bis 2 Sekunden ... so muss das sein. Die Tabelle sieht nun so aus:

CREATE TABLE `link_cache` (
`id` int(10) unsigned NOT NULL auto_increment,
`params` blob,
`url` varchar(255) default NULL,
`tstamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`crdatetime` datetime default NULL,
`sticky` tinyint(1) unsigned default '0',
PRIMARY KEY (`id`),
KEY `url` (`url`),
KEY `params` (`params`(1000))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Die Größe des indizierten Bereichs kann auf die eigenen Bedürfnisse angepaßt werden.

Evtl. hilft es je jemandem weiter ...

Gruß, mamuesp

just2b ·

Hallo,

poste das ganze doch bitte in die deutsche mailingliste, da liest der Entwickler regelmäßig mit

georg

mamuesp ·

Nachsatz zur Info:

Habe auch Jan Bednarik (der Autor der Extension) kontaktiert, er hat noch ein paar kleine Anpassungen an der Tabelle gemacht, ich teste das gerade (erfolgreich) und teile ihm das mit (er ist gerade in Urlaub). Ich denke, das wird dann in eine neue Version fliessen. Denn wenn man dynamische Inhalte wie Foren etc. mit einbezieht, wird der Link-Cache rasch sehr groß und ohne Index langsam.

Man kann natürlich auch hin und wieder mal den Link-Cache löschen, das kann aber zu unschönen Seiteneffekten führen ...

Gruß, Manfred