Tip #22: Don’t link to inactive zones

The OpenX ad server’s Maintenance Prioritization Engine (MPE) calculates priorities for banners in Contract campaigns. (OpenX’s Contract (Exclusive) and Remnant campaign types have their banners delivered based on relative campaign weights and banner weights.)

However, if you read the fine print about how the MPE works, you may notice that every zone in OpenX has a default zone impression forecast — that is, OpenX assumes that, until it is able to learn what kind of inventory is available in a zone, that it has this number of impressions per hour.

This means that if you create a zone in OpenX, but don’t actually generate its zone tag and put it on your web site (which in turn means that OpenX will never see any requests for banners in the zone), then the OpenX ad server will continue to assume that this zone has the default number of impressions/hour.

While this might not seem like a big deal, consider this: the default is 1,000 impressions/hour. If you link a campaign to just one such “inactive” zone, then the OpenX ad server will think that there are 24,000 more impressions available per day than there really are. That’s a lot of impressions — and the more inactive zones you link your campaigns to, the more of these incorrectly assumed impressions will exist!

This will cause your Contract campaigns to under-deliver.

As a result, you should never link your campaigns or banners to zones that are inactive.

Tip #21: Optimizing MySQL’s InnoDB engine

The Guru was browsing through a list of old links the other day, and came across an article on optimizing MySQL’s InnoDB storage engine. It’s definitely worth a read if you’ve never seen it before, but if you’re just after the high level summary:

  • Add more memory to your server. Memory is good.
  • If you have lots of memory, don’t forget that you should be running a 64-bit O/S, with the 64-bit version of MySQL, if you are going to be able to utilize that memory!
  • The OpenX ad server is a write intensive application, so RAID-5 is bad. Very, very bad. Use RAID 0, or RAID 10.
  • Tune your InnoDB settings. Remember, tuning is a process of measurement, followed by making a change, and then re-measuring.

Tip #20: Protect your site from OpenX “hangs”

If you’re a small website publisher, and you run your own OpenX ad server on the same server as your website, then you know that when your server goes down, everything stops. That’s just a fact of life for small website publishers, and there’s not much you can to but get your server back up and running as soon as possible.

However, if you are lucky enough to have seen your site grow up over time, or you work for a company that has a large site, you may be in a position where you run OpenX on a server that is different to the one that runs your website. (If you use the OpenX Hosted service, then you’re in the same situation — OpenX is running on a server that is different to the one that runs your website.)

If this is the case, then there is a possibility that the OpenX ad server system might go down, but your website server will still be up and running.

If this has ever happened to you, then you will know that this matters — and not just because your banners will not display. It can actually be a major issue because if the OpenX ad server is down, then your website may “hang” when it gets to the part of the site where a banner should be displayed1. This is bad news for your users, because they won’t be able to view your website properly.

Below is the complete list of OpenX’s different zone tag types2, and their susceptibility to this problem:

  • Singe Page Call: Susceptible3.
  • Javascript: Susceptible.
  • iframe: Not susceptible.
  • Interstitial or Floating DHTML: Susceptible.
  • Image: Not susceptible.
  • No Cookie Image: Not susceptible.
  • Popup: Susceptible.
  • XML-RPC: Susceptible4.

In all of the above cases, remember, the zone tags that are susceptible will cause your website to hang at the point where the tag is located in your site’s HTML during loading, so that your users won’t be able to see the entire page without some kind of delay. This means that it’s got nothing to do with whether banners load or not, as in all cases, if your OpenX ad server is not responding, you won’t get any banners displayed5.

So, if you have an OpenX ad server in use that doesn’t live on the same server as your website, what can you do to protect yourself from this situation?

Use a tag type that is not susceptible to the hanging page problem

As you may be aware, the Single Page Call and the Javascript zone tags provide advanced features that are not available in other tag types, just as supporting companion positioning, and the ability to avoid duplicating banners, etc. Assuming that you don’t need these features, then simply using the iframe or Image zone tag types makes sense6.

End place tags & position with CSS

Assuming that you would like the advanced features of the Single Page Call or Javascript zone tags, then it is possible to avoid hanging issues by placing the tags at the very end of your page’s HTML, and then positioning the banners on the page via CSS.

For example, here’s how you might place a Single Page Call tag at the end of a page, and position the banner via CSS7:

...

<p>End of HTML page!</p>

<!-- Generated by OpenX 2.8.1 -->
<script type='text/javascript'
  src='http://www.example.com/openx/www/delivery/spcjs.php?id=1'>
</script>

<div style="position: absolute; top: 10px; right: 10px;">
<script type='text/javascript'><!--// <![CDATA[
 /* [id1] Website 1 - Zone 1 */
 OA_show(1);
// ]]> --></script><noscript><a target='_blank'
  href='http://www.example.com/openx/www/delivery/ck.php?n=f1bb21f'>
  <img border='0' alt=''
  src='http://www.example.com/openx/www/delivery/avw.php?zoneid=1&amp;n=f1bb21f'
/></a>
</noscript>
</div>

</body>
</html>

There are many ways of CSS positioning, of course. Use whatever method suits you best!

Disadvantages

It is worth mentioning that is you do decide to use end placement of tags and position with CSS, this means that your banners will be the very last items to load on your web page. This means that you may find that you have a reduced number of impressions, as a result of users “navigating away” from the page before the banners have loaded; this in turn may result in reduced income (either through fewer impressions for CPM campaigns, or through fewer clicks/conversions for CPC/CPA campaigns).

However, this is something you will need to make a judgement call on — is it better to sacrifice a little income to ensure that your users can view your website immediately, albeit without banners, in the event that your external OpenX ad server has a problem; or is it better that if your OpenX ad server goes down, your website is not accessible?

Modify the OpenX tags

Finally, if you really want to get creative, you can modify the OpenX tags. This is for advanced users only, though. Best of luck! :)

  1. How long might your site hang for before the rest of the content loads? This depends on exactly how the OpenX ad server has failed. The worst case, however, is when the server is not responding to requests, in which case most browsers will hang for minutes. []
  2. The Local Mode zone tag is not included as this tag can only be used when OpenX is installed on the same server as the website. []
  3. Additionally, as the Single Page Call tag, by default, recommends that part of the tag code be placed in the HTML document’s <head> section, this will cause the page to hang before any part of your web site has been displayed. []
  4. Results may vary, depending on the implementation language used. With the default PHP-based XML-RPC zone tag, the implementation actually causes the web page to hang at the start of the document, so page loading hangs before any content has been displayed. However, the default tag has a timeout of 15 seconds, which is much shorted than the hanging time for the other tags. []
  5. It also means that in all cases, the user’s browser will not appear to complete loading the page contents, even for the non-susceptible tags — it’s just that even though the browser will keep spinning, trying to load the banners, at least all of the other page content will have loaded for the user to see. []
  6. Remember that the zone tag type can only display image based banners; it can’t display Flash, text and HTML banners, for example. The No Cookie Image zone tag type is another special case, for displaying image based banners in Email/Newsletter zones. []
  7. It’s a contrived example, as you’d probably never use the Single Page Call zone tag for just one zone, but it illustrates the concept []

Tip #19: Understand the OpenX Market

By now, almost all OpenX ad server users will have heard about the OpenX Market. But many people still seem to be confused about what the OpenX Market is.

Here’s a quote from OpenX CEO Tim Cadogan that helps explain the OpenX Market:

The basic mechanics are pretty simple. When a publisher chooses to pass inventory into the Market, they set a floor price – this is usually the maximum price they can generate themselves. OpenX then runs a real-time auction to see if it can generate a higher-priced ad than the floor price set by the publisher. If the auction results in a higher-paying ad, the publisher runs the ad from the Market and makes more money.

If the auction does not result in a higher-priced ad, the publisher runs their original ad and OpenX takes no fee. Publishers are in complete control of both what inventory they choose to put into OpenX Market and their floor price.

Many publishers seem to think that the OpenX Market is a way of selling their ad inventory. As you can see from the above, it’s not. It’s a way of potentially earning more income from your inventory, by allowing the OpenX Market to “override” your already sold inventory with higher paying banners.

That means you need to keep in mind:

  • The OpenX Market may not (and almost certainly will not) be able to fill all of your inventory. You must have, at the very least, one banner in your OpenX system that can be displayed if the OpenX Market cannot find an advertiser who wants to bid more than your configured floor price.
  • Some or your site inventory will be worth more than the rest — this is called “premium” inventory. As a result, remember to review your statistics regularly after you start using the OpenX Market, to ensure that your floor price is set appropriately, or you might actually end up making less income.
  • You don’t have to use the OpenX Market for all of your campaigns if you don’t want to. For example, you may want to simply not have your premium campaigns participate, and only use the OpenX Market option for your “filler”, or lower paying banners. Alternatively, as Tim says:

[As] publishers have complete control over their participation they can place premium ad inventory into the exchange. They simply protect the premium nature of this inventory by placing higher floor prices on this inventory.

While there have been reports of slowness with banner delivery when using the OpenX Market in the past, overall, it seems like the OpenX Market is a reasonably risk-free way for publishers to boot their advertising revenues, which is welcome news!

Of course, if all this leaves you still wondering how to easily do direct sales of inventory with OpenX, then you’ll be pleased to know that “Self-Service” ad selling has been scheduled for release in late 2009.

News: Tip #8 updated for new banner delivery process in OpenX 2.8.1

As you may have read in the OpenX 2.8.1 release notes:

Zone probabilities are distributed amongst campaigns, independent of the number of banners. OX-3095

This means that it is now possible to divide a zone’s inventory up between the linked campaigns by campaign weight, without having to re-calculate all of the weightings when a new banner is added.

As a result, Tip #8: Understand the banner delivery process has been updated to describe the different delivery process for OpenX releases before and after version 2.8.1.