What is File Transfer Protocol?
File Transfer Protocol (FTP) is the most common way to transport files between locations on a network. Though FTP has been around for almost 50 years, it still serves a common means to move files between a client and server.
Why Test FTP Servers?
While FTP is a proven technology, it can be easily slowed down by slow network speeds and/or latency. When an FTP Server starts to slow down or crashes, the impact can be massive as users are commonly sharing large files that take minutes or hours to transfer.
Why Test FTP Servers with JMeter?
Jmeter has had support for testing FTP servers for almost 20 years . Given the differences between FTP and other common protocols like HTTP, not all load testing tools can support it. Additionally, JMeter is free and can allow execution locally at no cost.
How to Test FTP Servers with Jmeter?
Testing with JMeter does require a learning curve. For those new to JMeter, we often recommend these tutorials. The good news is that FTP is one of the easier protocols to test with.
To help you get started, we have provided a sample script for FTP testing. To view and edit this script, you will need to install JMeter. Once you have downloaded JMeter and opened our test plan, you will see this simple case has a few elements to learn:
- Request Defaults: here you can set up the required elements for a test. We are using the Server at speedtest.tele2.net which is a sample FTP server, running on the standard FTP port (21).
2. Thread Group: to execute the test, we will need to add a Thread Group which determines how many threads (concurrent connections) are trying to access our application, and for how long. The setup we have provided here runs with a single user for 5 minutes when run locally, but is parameterized to run with the amount of users and time you select if you upload it into flood.
3. Gaussian Random Timer: Timers are a critical piece to creating realistic load with JMeter. In this example, we have a simple Gaussian timer:
4. Test downloading a file: we add a sampler (as below) that will test downloading the file named “1KB.zip” from the server we specified in step 1
5. Test uploading a file: finally we add a sampler (as below) that will test uploading the file named “1KB.zip” back up to the server we specified in step 1 from the upload directory:
Running the Test
To execute this test, there are two options:
- For the lowest cost approach, it is possible to run the test locally in JMeter by clicking Run>Start from the top toolbar:
Note: this version will only execute with about 1,000 users on your own machine, before you need to set up distributed testing
2. For a less effort intensive approach, you can sign up for a trial of Flood and upload your FTP JMeter test script to run it
What to Look For
Depending on if you run your test in JMeter or Flood, you will get different levels of detail in your reports. Either tool will show you the basic metrics you need to monitor, such as:
- Response Time
- Error rate
- # of Concurrent Users
Keeping an eye on these metrics, as well as FTP server side metrics like CPU, Memory, and Network Throughput will allow you to measure how your application will perform under real world load. If there are any unexpected spikes in key metrics, you can adjust your infrastructure before retesting.
Testing FTP Servers is a fairly straightforward process, and one that you should make sure you do properly before you release software, hardware, or network changes. A change to FTP Server Performance can negatively impact overall application performance and lead to churn. So make sure you take the time to write a proper FTP Test for your server and execute it regularly to benchmark performance.