2013-10-08 1 views
3

Здравствуйте, я использовал File Upload в struts2 с commons-fileuplod.Обмен файлами Скорость разницы между средой Eclipse и Deploy to tomcat webapps folder

Edit: Когда я бегу мое демо от eclipse with right click and run on server так время, необходимое для загрузки файла очень мал

**Run From ECLIPSE :** 
File Size : 247 MB 
    Time TAken By upload using Run On server From eclipse :--> 2989 MS 

С другой стороны, когда я deploy same demo war file to Tomcat in webapps folder и бежать. Так что требуется больше времени для загрузки файла по сравнению с предыдущим случаем. (Почему это большая разница во времени?)

**Run Using Deploy Demo In Tomcat :** 
File Size : 247 MB 
Time TAken By upload By deploed war file to tomcat web apps folder :--> 14162 MS 

У меня есть изменение java.io.tmpdir в MonitoredMultiPartRequest.java:

 System.setProperty("java.io.tmpdir", "D:\\ankit"); 
     System.out.println("java.io.tmpdir :--> " + System.getProperty("java.io.tmpdir")); 

     UploadListener listener = new UploadListener(servletRequest); 
     // Create a factory for disk-based file items 
     FileItemFactory factory = new MonitoredDiskFileItemFactory(listener); 
     // Create a new file upload handler 
     ServletFileUpload upload = new ServletFileUpload(factory); 

     try{ 
      long start = System.currentTimeMillis(); 
      List items = upload.parseRequest(servletRequest); 
      long end = System.currentTimeMillis(); 
      System.out.println("Time TAken By upload 3.2.1 :--> " + (end - start)); 
      getsystemDetail(); 
     } catch (Exception e){ 
     errors.add(e.getMessage()); 
    } 

Здесь я упоминаю Мой журнал:

Выполнить затмений:

==== System Property ========= 
java.io.tmpdir :--> D:\ankit 
================================ 
Time TAken By upload File :--> 2989 
================================== 
##### Heap utilization statistics [MB] ##### 
Used Memory:46 
Free Memory:85 
Total Memory:132 
Max Memory:675 
File system root: C:\ 
Total space (mb): 79899 
Free space (mb): 31833 
Usable space (mb): 31833 
File system root: D:\ 
Total space (mb): 158472 
Free space (mb): 117366 
Usable space (mb): 117366 
This is ServletContext RealPath path ::--> D:\eclipseWorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FILEUPLOAD_DEMO_OldLIB\ 
File Uploaded Succ. TO ::-> D:\ankit\eclipse.zip 

Run Использование Deploy Demo В Tomcat:

==== System Property ========= 
java.io.tmpdir :--> D:\ankit 
================================ 
Time TAken By upload File :--> 14162 
================================== 
##### Heap utilization statistics [MB] ##### 
Used Memory:100 
Free Memory:31 
Total Memory:132 
Max Memory:1820 
File system root: C:\ 
Total space (mb): 79899 
Free space (mb): 31830 
Usable space (mb): 31830 
File system root: D:\ 
Total space (mb): 158472 
Free space (mb): 117358 
Usable space (mb): 117358 
This is ServletContext RealPath path ::--> D:\tools\tomcat7-6\webapps\FILEUPLOAD_DEMO_OldLIB\ 
File Uploaded Succ. TO ::-> D:\ankit\eclipse.zip 
+0

есть случайная идея! , – HybrisFreelance

+4

Я замечаю, что ваш кот живет в вас d:/drive и ваше затмение на вашем c: /. Когда вы загружаете файл, он переходит в временную директорию, соответствующую жесткому диску. Один из ваших жестких дисков быстрее, чем другой? Вы загружаете файл из своего c: /? Мысль о том, что файл должен передавать жесткие диски, что приводит к потере производительности. –

+1

Я думаю, что ns47731 имеет хорошее предложение. @ ankit337, Можете ли вы протестировать его с помощью java.io.tmpdir на c: drive? –

ответ

4

Скажите ваш файл 250MB на вашем C:\ и вы бежите от затмения, он будет копировать файл на тот же диск в каталог темп. Даже когда ваше затмение живет в вашем D:\, оно использует вашу временную папку для ОС Windows, как показано в конфигурации eclipse. В вашем тесте Tomcat он использует временную директорию Tomcats, как показано в конфиге.

Так что, если ваш файл был в C:\ это будет выглядеть следующим образом:

Запуск от затмения:

C:\myLargeFile.dat -> C:\Users\ANKITV~1.PAT\AppData\Local\Temp\myLargeFile.dat

Run Использование Deploy Demo В Tomcat

C:\myLargeFile.dat -> D:\tools\tomcat7-6\temp\myLargeFile.dat

Я не знаю настройки вашего оборудования, но результаты могут сильно отличаться, если ваш C:\ был твердым, а ваш D: \ не был. Также есть потери производительности при передаче между жесткими дисками даже с высокопроизводительными жесткими дисками, вы можете наблюдать это за пределами java, копируя большой файл между двумя дисками и делайте то же самое, но просто копируя файл в другое место на одном диске и следите за тем, сколько времени потребуется (убедитесь, что вы его скопировали, а не двигайте).

Некоторые хорошие способы, чтобы проверить, является ли это вопрос:

  1. Изменение временного каталога для TOMCAT теста на ваш C:\. Проверьте это сообщение, чтобы получить дополнительную информацию о том, как это сделать: How is the Tomcat temp directory location defined?
  2. Переместите свою резервную копию tomcat на ваш C:\ и проверьте ее снова. Очень понятно, но может быть больше, если у вас есть системные переменные или сценарии, указывающие на него.
  3. Поместите свой файл 250mb в свой D: \ и попробуйте загрузить его в свой тест tomcat и посмотрите, уменьшается ли промежуток времени.

Не могли бы вы проверить это для нас, и дайте нам знать, что вы нашли? Мне интересно услышать результаты! Ниже приведены точки в файле конфигурации я имею в виду:

Run от затмения:

... 
java.io.tmpdir=C:\Users\ANKITV~1.PAT\AppData\Local\T... 
... 

Run Использование Deploy Demo В Nobody Tomcat

... 
java.io.tmpdir=D:\tools\tomcat7-6\temp 
... 
+0

Спасибо за ответ, '@ Для всех' Я отредактировал свой вопрос и, согласно вашему предложению, был проверен на одном и том же java.io.tmpdir: -> D: \ ankit' в обоих случаях, чем после того, как он нашел большую разницу во времени загрузить тот же файл. – HybrisFreelance

+0

@ ankit337 вы пытались поместить файл в свой d: \ и загрузить его? Мне больше нечего делать здесь. –

+0

Вот некоторые заключительные мысли: 1. Разверните войну с закапыванием котла Eclipse вручную и попробуйте (исключая затмение, играющее в нем роль). 2. Скопируйте котенок Eclipses вне установки eclipse и поместите его в другое место в вашей файловой системе. В основном разломайте tomcat от затмения, чтобы убедиться, что это компилятор, играющий роль в скорости. –