NuGet version lookup takes very long with a lot of packages

We have a single tenant application with ~140 instances that we’ve recently migrated into octopus. Creating a release is very slow, as when you come to create a release the NuGet package lookup seems to look for the latest version of every package step individually even though the majority are based on the same NuGet package from the same feed. It seems that there’s a relatively easy win in doing lookups-per-package instead of lookups-per-step? It’s currently taking on the order of 15-20 minutes to do all the lookups, even though there are only 3-4 individual packages involved.

Hi Kristian,

Thanks for getting in touch! Can you tell me what NuGet server that you use? There is a known slowness issue with NuGet.Server where with more packages the longer it takes (we mention this in our documentation).
NuGet.Server read the entire package into memory to grab its metadata and that is what causes the slowness.

Please let me know what you are using and I will give the best solutions to move forward!

Warm Regards,
Vanessa

We’re using the built in NuGet server in TeamCity 9.1.5. I’ve managed to make the performance acceptable by using the anonymous feed rather than the authenticated one but this isn’t an ideal solution.

The specific issue seems to be that we have ~140 steps that are based on exactly the same package, but it does a lookup for each step individually rather than the package as a whole (so it does 140 lookups for the same package). These steps will always need have the same version as each other, so there’s a couple of solutions:

  1. Make the package lookup based on package rather than step. This way we only need to do one lookup for the actual application package (caching the available version numbers per package for a relatively short amount of time would also work).
  2. Give us the option to make X number of steps share a NuGet package. This would allow us to administer channels/releases easier as we’d have less packages overall to deal with.

Thanks,
Kristian

Hi Kristian,

Do you use variables at all in your steps or values? Could I see a screenshot of your process page for a few of these steps?
There might be something we can do about it.

Vanessa