I'm in charge of a TeamCity server that's experiencing a significant slowdown when downloading artifacts (clicking on the artifact link in the browser, and downloading the zip/tar file)
Win2K12R2 Hyper-V VM on our Host at the data center, which we access over a 1G metro line.
4 GB RAM
1G NIC (The Hyper-V host itself has dual paired 1G NICs)
Storage for Hyper-V is provided by an EMC VNX over a 1G iSCSI connection.
Data files live on the VM itself. Database lives at AWS.
When we first began using the server, users would consistently get download speeds of 40M+ and now it's dropped down to about 8-10M. Our builds are typically 9-15GB so this makes a big difference for our devs. I played with the Java heap settings and added this to the 2K12 server's env variables:
TEAMCITY_SERVER_MEM_OPTS -Xmx1024m -XX:MaxPermSize=270m
Reboot, and speeds jumped up again, but only for a while. Now they're back down again.
I realize there are many components in play here (Hyper-V host, VM, mulitple links, etc.) but as I mentioned, everything was speedy at one point.
After more troubleshooting, I've eliminated it having anything to do with Java. I run an nginx proxy in front of the server and I've added a location that allows me to browse the artifact directories. When I download directly from the artifacts, while on the TeamCity host, I get the same, 8-10M speeds. Same thing goes for downloading on the TeamCity host, through the regular TeamCity artifact dropdown.
Could it be disk I/O? Another idea: the TeamCity disk is currently 1.5 TB and has about 230GB free. Would TeamCity slow down as the disk fills up?