IG and Origin Count Limits
Here we test out how many IGs can be made in a single origin
You can decide how many IGs to create using this input, which will result in a call back to this page with that value set as a query param that will be read, and that many IGs will be joined for each of the www, auctions, and interest-groups origins within pstone.com
Conclusion: while the join for an IG will succeed no matter what, and it may even participate in the auction for a very brief period, the 2000 limit seems to be respected within a few seconds. (To be clear this is not a surprise, it is intended to verify the baseline for other tests).
Past Results
At the time of writing (Feb 12 2024) the limit of IGs per origin is 2000.
General Observations
- IG joins past 2000 will succeed; there is no signal that your join may cause an issue. This aligns with the statement right above
this anchor that:
If any of these per-owner limits are exceeded, the interest group(s) that would expire soonest are removed until that owner is back within its limits.
- The expiration happens quickly but asynchronously, meaning the join does not "wait for room" and do the expiration of the oldest IG before finishing the join. Rather, the join finishes and the number of IGs can momentarily exceed the 2000 cap, and expiration begins in the background. That is demonstrated by the snapshot experiment below where 3000 IGs are joined, the auction runs and > 2000 invocations of the bidding function occur.
Try more than 2000 IGs for Same Owner Origin
Here, we see if more than 2000 IGs can be registered. (Note that, while it's nice to verify, this is meant more to serve as the "base assertion" of the 2000 limit per origin, for testing the ability to use more than 2K per site, as the limit is stated as per owner, which is site-specific.
Since there isn't a great way to see the IGs present in the browser, or running in a particular auction, we use counts on the console log:
- We log once per successful join.
- For this experiment use a specific bidding function which is set up to log once per invocation.
- We use an "error log" to state that the auction completed successfully.
You can re-run this experiment using this link which will redirect here and try to create 3000 IGs and then run an auction, with results observable in the console.
Here are screenshots of one invocation:
Join Successes
The join messages are all grouped so we can just take the console grouping count.
Bidding Function Invocations
I couldn't get the messages from the bidding function to group in the same way (even when constant) so here I'm going off the number of info messages, which are exclusively from the bidding function (verified by pulling out the lines and counting matches in bbedit). Since there are 2093 invocations of console.log all from the bidding function, while 3000 were joined, this (likely) indicates that the limit enforcement was underway (several other experiments show the delta narrowing randomly but quickly, further verification could be done here but this seems likely the explanation).
Auction Succeeds
Finally we check to see the auction succeed in case anything interesting happens with silent failure.
Where the image was produced like so:
fastify.get("/creatives/oooohhhh", function(request, reply) {
console.log("oooohh request");
let html = 'A stranger, from the outside!...
: ';
reply.raw.writeHead(200, { 'Content-Type': 'text/html' })
reply.raw.write(html)
reply.raw.end();
});