Performing Speed Tests

NZBGet contains a built-in NNTP server which can be used to perform download speed tests independent from your connection line speed. That may be useful to determine hardware capabilities.

This guide is oriented on Windows but it is applicable to other OS`es with path changes.

The test involves two programs:

  1. Download client;
  2. NNTP server.

We use NZBGet as download client but you can test other clients too. As server we use NZBGet running in special mode.

NOTE: built-in NNTP server was developed in NZBGet v18; you need at least version 18.0-testing.

The client and server may run on the same computer or on two different machines. Since the server consumes computer resources (CPU and disk) that affects benchmark results. For best results use two computers with fast network connection like 10 Gigabit.

Installing Client

Install NZBGet on the computer which speed you are going to test. Use official installers from Download page. If you are going to test another download client you don’t have to install NZBGet on the testing computer.

Installing Server

We use NZBGet as NNTP server. Install NZBGet on the server computer. If you use the same computer for both server and client then your probably already have NZBGet installed on the previous step. If you don’t - download and install NZBGet using official installers from Download page. You don’t have to configure it after installation.

Preparing test files

You can use any large files for testing but for best results use a set of files previously downloaded from Usenet, some nzb with size of 4-10 GB. In Usenet files are usually splitted into rar-fragments of 50-200 MB. If you take one large file of several GB for testing this may affect the caching technique in the testing application (NZBGet or other) and the results may be less realistic.

So, download some nzb from Usenet and make sure to not unpack it but keep the files just as they were uploaded to Usenet by poster.

Configuring Server

  1. Create a new empty directory, preferably on an SSD or RAM-drive. For example C:\serverdata.
  2. Put the test files prepared on the previous step into a subdirectory of the server data-directory. Your directory structure should look like this:
  C:\serverdata              [dir]
  C:\serverdata\mytestnzb    [dir]
  C:\serverdata\mytestnzb\mytestnzb.part0001.rar
  C:\serverdata\mytestnzb\mytestnzb.part0002.rar
  ...
  C:\serverdata\mytestnzb\mytestnzb.part0123.rar

Starting Server

Open command prompt and start server with the following command:

  "C:\Program Files\NZBGet\nzbget.exe" --nserv -d C:\serverdata -v 1 -z 500000

Here parameter --nserv tells NZBGet to start in NNTP server mode. Parameter -z 500000 tells to generate nzb-files for data-files in the data-directory. The generated nzb-files are saved into data-directory. Option -v 1 sets medium logging level.

Now you should have NNTP server running (in command prompt window) and the nzb-file in C:\serverdata\mytestnzb.nzb.

Configuring Client

  1. On the testing machine start NZBGet (or other download client). The following instructions are obviously for NZBGet, change as appropriate for other clients;
  2. Open web-interface to NZBGet, go to settings, section NEWS SERVER;
  3. Add new news server with parameters:
  • Active: no
  • Name: NServ
  • Host: <IP-of-the-server> (for example 127.0.0.1 if the server is running on the same machine)
  • Port: 6791
  • Encryption: no
  • Connections: 10 (enough for the start)
  1. Save all settings and reload NZBGet;
  2. Click on current download speed label to bring speed limit dialog, activate the new “NServ” server and disable all others;
  3. Add nzb-file created on step “Starting Server” (C:\serverdata\mytestnzb.nzb). Do not use nzb-files downloaded from Indexers. Only nzb-files generated by NZBGet NNTP server can be used with it.

The download should begin and you can now observe the download speed.

Interpreting results

  1. When you run the client and server on the same computer the server takes a considerable amount of CPU resources. Use task manager to monitor CPU usage of the server. Use cache in NNTP server as explained below to reduce CPU usage of the server.
  2. The web-interface of NZBGet may take CPU resources as well, especially if the update speed is high (0.1-0.5 sec interval).
    To minimize that effect when testing NZBGet you can pause download, add nzb to queue, close the browser, bring the console window of NZBGet to the front and resume download by pressing “P” or via click on tray icon.
  3. Take a look at Performance tips for NZBGet.

Using cache

When you run the client and server on the same computer you should activate cache in NNTP server to reduce CPU usage of the server. Add parameter -c when starting NNTP server:

  "C:\Program Files\NZBGet\nzbget.exe" --nserv -d C:\serverdata -c C:\servercache -v 1 -z 500000

During first download of nzb-file the server saves encoded articles into cache directory. On sub-sequential downloads of the same nzb-file the server reads encoded articles from cache directory. That improves performance of NNTP server but also means that you should perform download twice: once to fill the cache, and the second time to actually measure speed results.

The cache data is stored permanently and is reused on next starts of the server (no need to perform cache filling after each server start).

TLS/SSL

In the previous test the server and client were communicating without encryption. To activate TLS/SSL in the server you need a TLS/SSL certificate consisting of two files (cert and key). You can use OpenSSL to generate them or generate them online on http://www.selfsignedcertificate.com. Put these two files somewhere on NNTP server computer.

To start NNTP server in TLS/SSL mode add parameter -s like:

  "C:\Program Files\NZBGet\nzbget.exe" --nserv -d C:\serverdata -v 1 -s C:\path\nserv.cert C:\path\nserv.key

Then create another news server in NZBGet (or other download client) with activated encryption or activate encryption of the previously created news server. When running tests make sure to activate the correct server and disable the others.

/js/scripts.min.js