0

We've built an advert impression and clicks tracking system for a client and ever since we deployed it's absolutely killing our production web server.

My thoughts are that one page contains up to 5 adverts and if 10 users hit the site simultaneously that's 50 records (impressions) that need to be recorded at the same time.

Question: Would using Microsoft MSMQ to write these 'impression' records to disk every X amount of minutes improve the overall performance?

Thanks Jaques

Jacques
  • 6,062
  • 7
  • 37
  • 94
  • Is 10 concurrent users what you are really seeing or implies "killing our production server" rather 100 concurrent users? – Filburt Nov 12 '10 at 11:32

1 Answers1

0

If you are seeking high performance and max throughput you should not use MSMQ. In your case I would ask if you actually need real time tracking.

If you want your tracking to have minimum impact on your web frontend you should go for dumping the tracking data into normal web server logfiles by means of pixel tracking and use a backend process to load these logfiles into your tracking analysis system.

From what I understand from your question, the problem is that every single ad impression writes it's own tracking record which of course will degrade the web frontend performance.

Filburt
  • 16,221
  • 12
  • 59
  • 107
  • Could you explain a bit more about this technique "pixel tracking"? Real time tracking is definitely not a requirement, performance in this case is of far greater importance. – Jacques Nov 15 '10 at 07:18
  • Just read about this... I'm not sure this is the best solution. This is an advertising tool that shows adverts and tracks the impressions and click throughs. It already uses a unique extension which when requested on the server side logs the impression or the click through, but leaving this to normal server side logs could result in less accurate numbers couldn't it? I.e. if the image has been cached and is not requested from the server again? – Jacques Nov 15 '10 at 07:45
  • @Jacques To avoid cached pixel you add a variable parameter to your tracking. A common approach is to use a server side script that accepts parameters to log an returns a pixel. It would look like this `` ... the same should be possible with almost any server side technology (I know ASP.Net best but PHP should do just as well). The call can be made unique for every single impression. Your numbers would become inaccurate if people use adblock to filter the tracking pixel but they'll filter the whole ad anyway. – Filburt Nov 15 '10 at 16:59
  • Thanks for the reply and sorry for my late reply. Would the IIS log show an entry for the pixel image name such as ad.jpg? We're currently using a method similar to Yahoo and what you mentioned here where we add on a unique query string which forces it to go back to the server, but then returns the given ad image any way which the browser can then get from the cache, but I don't seem to see any details about those images in the IIS logs – Jacques Nov 25 '10 at 12:49