In the last few weeks, I was facing a lot of performance issues because of Googlebot. It seems, that it does it's job more
than ok, and some level of scaling was needed for the bot too. Ofcourse, figuring out where your traffic comes from is sometimes
very hard, especially without the correct tools. What can you do? WRITE THEM! And so I did.
- MySQL Traffic Sniffer (tcpdump + wrapper scripts to parse queries out of tcpdump data)
- MySQL Traffic Analyzer (query occurance grouped by second / all time)
- MySQL Proxy (LUA Query Statistics)
- Nginx / Apache / Lighttpd log extract by time utility (from HH:MM to HH:MM am, per minute accuracy)
- Log analize utility (Url normalisation, grouping by useragent, excluding static content)
- Real time URL traffic (like "top", just for access logs, supporting filters)
- Special noindex, nofollow, nosnippet and other headers (SEO)
- Googlebot traffic shaper using memcache
Besides the usual "fix expensive sql queries" approach, we went so far, that we could implement a googlebot traffic shaper, limiting
googlebot requests per minute (or even lesser interval). In the end, we scaled our setup, so that googlebot now uses a dedicated web
server and slave database (read only). The tools will be available sometime in the future, but If you want, until then, you
can contact me, and I might give you some of the tools, before they are ready for the public.
V zadnjih tednih smo imeli kar nekaj performančnih težav zaradi Googlebot-a. Očitno dela opravilo za katerega je bil narejen,
več kot odlično. Potrebno je bilo nekaj širjenja kapacitet za web cawler. Seveda, ugotoviti od kje prihaja vaš promet, je včasih
zelo težko, sploh brez ustreznih orodij. Kaj narediti? Napišite jih! In tako sem tudi storil.
- Prisluškovanje MySQL prometu (tcpdump + skripte za dobiti poizvedbe iz tcpdump podatkov)
- Analizator MySQL prometa (ponavljanje poizvedb na sekundo / vseh časov)
- MySQL Proxy (statistika poizvedb v živo, preko lua skripte)
- Nginx, Apache, Ligghttpd - orodje za izrez dela access log datoteke glede na čas (natančnost na minuto)
- Analizator log datotek (normaliziranje linkov, grupiranje po browser agentih, izključevanje statičnih vsebin)
- Živ pregled log datotek (tako kot "top", samo za access log, podpira filtre)
- Posebni noindex, nofollow, nosnippet in drugi headerji (SEO)
- Omejevanje Googlebot prometa z uporabo memcache
Poleg standardnega "popravi potrošne SQL poizvedbe" pristopa, sem šel tako daleč, da bi lahko implementiral omejevanje google bota
na število requestov znotraj ene minute (interval bi bil lahko tudi manjši). Ker bi s tem zmanjšali količino indeksiranja googlebota
smo se odločili raje za širjenje kapacitet. Googlebot zdaj uporablja svoj web server in slave podatkovno bazo (samo branje). Orodja
našteta zgoraj bodo na voljo enkrat v prihodnosti. Če želite me lahko tudi kontaktirate in vam jih lahko pošljem pred objavo.