Squid url_rewrite Performance

Posted on the September 26th, 2009 under tests,tipps by stefan

squid

Hier ein Tipp für Sysadmins, die url_rewrite in Squid nutzen: schaut euch genau an, wie performant eure Scripte sind und benchmarkt diese unbedingt!

Ich hatte die Tage ein Problem mit einem Squid, der ungewöhnlich hohe Load verursachte – es lag an ineffizienter Programmierung des Rewriters. Für eine Hand voll URLs sollte er Umleitungen vornehmen, etwa von ^http://domain/formular auf https://domain/formular.

Das ursprüngliche Script war in BASH programmiert – es verwendete externe Programme wie grep, sed – und war für geringe Bandbreiten (5MBit/s) performant genug. Die Bandbreite stieg jedoch bald auf 20MBit/s, was die Last schon sehr deutlich erhöhte, und es werden voraussichtlich bald ~200MBit/s sein.

Das Script wurde daraufhin in Perl reimplementiert und läuft laut Benchmark um den Faktor 180 (!) schneller. Als Benchmark empfiehlt sich:

[code language="shell"]time tail /var/log/squid/access_combined.log -n 100000 | awk '{print $7}' | /pfad/zum/url_rewriter.pl > /dev/null[/code]

Wenn dort (z.B. bei einem komplizierterem Script) Werte von mehr als 5 Sekunden stehen, sollte man sein Script für hohe Bandbreiten ggfs. überarbeiten und/oder in einer performanteren Sprache reimplementieren, z.B. in C oder für Extremfälle in Assembler. ;)

|

4 Responses to 'Squid url_rewrite Performance'

  1. 27. September 2009 at 12:00
    JP Mens
  2. 27. September 2009 at 12:42
    Stefan
  3. 27. September 2009 at 16:45
    matthias
  4. 27. September 2009 at 20:37
    Stefan

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>