Тестирование загрузки файлов и скорости загрузки по FTP - PullRequest
9 голосов
/ 30 декабря 2010

Я работаю в настольном приложении с использованием Java.В моем приложении я должен выполнить тест скорости, который покажет скорость загрузки и загрузки файла.

Для загрузки теста я загружаю небольшой тестовый файл на FTP-сервер и, основываясь на затраченном времени, вычисляю файлскорость загрузки.Точно так же я загружаю тестовый файл формы сервера и вычисляю скорость загрузки.

Но результат, который я получаю, не соответствует фактической скорости загрузки и скачивания файлов FTP. Кажется, что установление соединения с сервером FTP увеличиваетвремя, следовательно, результирующая скорость, которую я вычисляю, меньше.

вот код загрузки файла, который я использую:

     public int getTransferRate(File filename)
     {          
       int trRate = 0;

       try {

        OutputStream fout = null;
        InputStream bin = null;

        connect(ftpUser,ftpPass,ftpServer);


        ftp.setFileType(FTPSClient.BINARY_FILE_TYPE);
        ftp.enterLocalPassiveMode();
        fout = ftp.storeFileStream("testuploadfile");

        bin = new FileInputStream(filename);
        byte[] b = new byte[8192];
        int bytesRead = 0;

        long startTime = System.currentTimeMillis();
        long endTime = 0;
        while ((bytesRead = bin.read(b)) != -1) {
            fout.write(b, 0, bytesRead);
            bytesUploadedSet += bytesRead;
        }
        endTime = System.currentTimeMillis();
        trRate = (int) ((float) bytesUploadedSet / (endTime - startTime));

    } catch (IOException ex) {
        Logger.getLogger(FTPFileStorageService.class.getName()).log(Level.SEVERE, null, ex);
    }
    return trRate;
}

Не могли бы вы предложить какую-либо ссылку или какой-либо способ получить ближайшую загрузку иСкорость загрузки.

Спасибо за ваше ценное предложение.

Ответы [ 3 ]

1 голос
/ 03 января 2011

Прежде всего, filezilla, вероятно, использует собственный код, который будет работать быстрее, чем тот, который вы используете.

Для тестирования установите соединение и попробуйте загрузить много файлов, около 20 или около того. Это должно датьхорошая идея результата .. как правило, также записывайте свои выходные данные в разделенный запятыми тестовый файл или что-то, что вы можете позже импортировать в Excel и проанализировать.Вы можете использовать что-то вроде JMeter, если вы хотите провести некоторое тестирование производительности ядра.

При любом тестировании производительности с большим размером выборки (много результатов выборки) дает наиболее точные результаты.

http://jmeter.apache.org/

1 голос
/ 30 декабря 2010

Не удается запустить таймер после установления соединения?

Если нет, то для быстрого частичного решения увеличьте размер тестового файла, чем он больше, тем менее значительными будут издержки соединения.

Если вам нужно быть более точным, я передам слово кому-то, у кого больше опыта в хаве ...

0 голосов
/ 30 декабря 2010

Можете ли вы использовать более простой протокол, такой как HTTP?

Настройка передачи по FTP может быть сложной: необходимо установить отдельные соединения управления и передачи данных, и обе конечные точки должны договориться о том, использовать ли пассивный или активный режим для обхода брандмауэров и NAT. Этот процесс может включать в себя просто попытку выбрать один из вариантов (например, активный) и ожидание успеха или тайм-аут, что может быть причиной искажения ваших измерений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...