Impact on Trackers
Automatic cross-seeding is a relatively new practice, and while it brings some
benefits for trackers, it also has some drawbacks. In this doc, we will outline
the benefits and drawbacks, then discuss strategies you can use to minimize
cross-seed
's footprint.
Benefits
The benefits a tracker sees from automatic cross-seeding largely center around retention. Having more seeders leads to healthier swarms, longer retention, and fewer dead torrents.
It is particularly helpful for new trackers looking to build a catalog—often,
backfill uploads are not particularly well-seeded because the users have already
downloaded them from elsewhere. But any cross-seed
users will automatically
pick up the new releases and reliably seed them, increasing redundancy.
Drawbacks
Private BitTorrent trackers are small-budget hobby software projects that run on donations and the good will of the sysop. They do not run on infrastructure like Google's or Amazon's, and they cannot support infinite load.
Automatic cross-seeding causes more load on trackers than any previous form of automation (e.g. Sonarr). We, and the tracker administrators we've spoken to, believe the benefits outweigh the drawbacks. However, not all trackers hold the same opinions, and we haven't spoken to all of them.
We can break load into 4 distinct actions that cross-seed
(and all other
tracker automation) performs:
RSS requests
- These are performed by
rssCadence
andcross-seed rss
. cross-seed
initiates an RSS request by searching with an empty query. These are usually cached and updated regularly, so the tracker's server is sending you a precomputed file.- These are cheap in both compute and network I/O.
Search requests
- These are performed by
searchCadence
,cross-seed search
, andwebhook searches
. cross-seed
searches for movie and TV show names individually.- The tracker's server has to scan through its catalog looking for releases
with similar names. Using
id-searching
not only yields far better results but is also a lighter load on the tracker database. - These are expensive in compute, but cheap in network I/O.
Announce requests
- These are performed by
Announce Matching
. - A tool such as
autobrr
uses IRC to listen for announces from the tracker and then sends them tocross-seed
. - This has zero load on the tracker since they create the announce once and
publish it in the IRC channel for everyone to see, regardless of the number
of users. Only the snatches from announce create load on the tracker, if it
passes
cross-seed
's pre-snatch checks. - These are completely free in network I/O and compute.
Snatches
cross-seed
will snatch any torrent that has the same release group, source, resolution, and rough size as your owned torrent.- The tracker's server has to add your passkey to its stored copy of the torrent file, then send it to you (and it's often quite big—a few megabytes).
- These are expensive in network I/O (and maybe memory), but cheap in compute.
- Some trackers count snatches for their user rank systems, and snatching many unnecessary torrents may be seen as abuse.
How cross-seed
Minimizes Load on Trackers
cross-seed
is designed with these drawbacks in mind. While it's a tool for
users, it should be as friendly as possible to trackers.
Category-aware searching
cross-seed
queries each indexer for the media
Torznab categories
it supports, and skip searching for any media type the indexer doesn't carry.
This heavily reduces "useless" searches and makes it more feasible to use
cross-seed
with non-video trackers.
Preventing repetition
Similar search requests are grouped together in a run and share the results if applicable. This prevents duplicate queries for searchees that differ only by release group, source, resolution, etc. These results are not cached long term as they can change over time.
cross-seed
also caches the snatches it makes. This means on
subsequent searches, cross-seed
will never snatch the same torrent twice—the
biggest load on a tracker.
Parsing bad titles
cross-seed
will parse bad titles to add aditional information to the search
query. For example, a torrent titled "Season 1" could be parsed to "Show S1" if
the information is available within its files. Similarly for
data-based searches
, cross-seed
can
parse the standard Sonarr and Radarr folder structures for more meaningful
searches. It will also outright reject searches that cannot be salvaged.
How cross-seed
's Default Settings Minimize Load on Trackers
For applicable options, cross-seed
limits the values to prevent badly
configured setups which harms both the user and the trackers. The default
configuration also aims to minimize load by being selective about which
torrents it searches, and by working through its backlog slowly.
Delay between searches
As of version 6, cross-seed
enforces a minimum 30 second
delay
between individual
search requests during any bulk search. This only applies
to bulk searches, not between each
webhook-triggered search.
Preventing unnecessary searches
cross-seed
enforces that you have configured the
excludeRecentSearch
and
excludeOlder
options, and its defaults
are set such that cross-seed
will search for things recently downloaded a few
times, but only search once for things downloaded far in the past. These
settings will build your backlog of cross-seeds, and sufficiently catch new
releases trickling to other trackers.
Skipping episodes
It's usually not worth it to bother cross-seeding episodes since they will be
deleted in the near future (when season packs come out). By default,
cross-seed
skips episode torrents for search
and rss
with
includeSingleEpisodes: false
.
However for Webhook Triggered Searches
and Announce Matching
, cross-seed
treats these
differently since these are triggered on a new download or upload, meaning a
season pack is unlikely to be available.
Similarly, cross-seed
will not search individual episodes from a season pack
as these are likely trumped/dead.
If you are racing or never download season packs, and would like to turn on
episode searches, set
includeSingleEpisodes: true
.
There are TV shows that are not combined into season packs, such as game shows,
talk shows, and similar. These shows are known as dailies and often have naming
which specifies dates, rather than SeasonEpisode (S02E03) style. Searching with
includeSingleEpisodes
and using flexible
or parital
matchMode on these
torrents, or files, can result in many torrent files being downloaded for
comparisons for matching only one individual episode.
Remember, this would occur on just one (torrent) search, within the entire (all data) search.
Skipping torrents with significant unknown/extra files
This behavior is covered in detail
here
.
Limiting search volume
By default, cross-seed
only make 400 search requests from
your backlog per day. This is measured by the number of unique search queries
that cross-seed
makes per run. We do this for a few reasons:
- It eases you into the process of cross seeding. This limit is only consequential when first starting out.
- If you have a high
excludeRecentSearch
of one year for example, intending to do a rolling daily search of the torrents that were last searched a year ago, torrent searches will "bunch up" once a year (depending on when you first set upcross-seed
) to be searched back to back, potentially causing rate limiting problems for your other automations due to the high search volume (Sonarr, Radarr, etc.). - Long-lived bulk search runs encounter drift - while they run, your other
automations will be downloading new torrents, moving data files around, and
deleting torrents and/or data files, and the snapshot
cross-seed
took of your torrents at the beginning of the search goes out of date. Keeping bulk search runs short helps a lot.
You may have an instant gratification mindset, and we get it! Seeing your total number of cross-seeds and your final seed size on a tracker is exciting. With that said, please try to balance that mindset with being friendly to your trackers.
The important thing is that you seed for a long time - not that you start seeding as early as possible.
This is configurable with searchLimit
.