У нас есть набор служебных программ, которые считывают файл .xlsx для некоторых входных данных и генерируют отчеты, для этой цели используется Apache POI. Файл Excel получил 8 листов со средним значением 50 строк и 20 столбцов данных. Все работало нормально в обычном окне Windows 7 (Читайте на машине разработчиков). Чтение файла завершится через несколько секунд.
Недавно мы переместили эти задания в окно Windows Server 2012 R2 и заметили, что чтение последнего листа в файле Excel занимает много времени. Я продублировал последний лист, чтобы подтвердить, что это не проблема с данными, и выполнил задание, второй последний лист (был последним в предыдущем выполнении) закончил чтение за миллисекунды, а последний (дублированный лист) снова получил застрял на 15 минут. Мое лучшее предположение здесь заключается в том, что это может быть связано с тем, что время, необходимое для закрытия файла, становится слишком большим, но это всего лишь предположение и никаких конкретных доказательств, подтверждающих это, также, если это так, я не уверен, почему так. Единственная разница между рабочими коробками Windows и нерабочими коробками заключается в ОС, в остальном все конфигурации аналогичны. Я проанализировал дамп кучи и потока и не обнаружил никаких проблем.
Известны ли какие-либо проблемы совместимости с POI и серверными ящиками Windows? Или это что-то связанное с кодом? Мы используем реализацию POI-XSSF.
Apache POI
— этоJava
программное обеспечение. Таким образом, он запускается не в Windows Box напрямую, а на виртуальной машине Java в среде выполнения Java. Поэтому я бы сравнил версии Java JRE между системами Windows и посмотрел на выполнение системные требования для Java. - person Axel Richter   schedule 17.02.2017*.xlsx
, содержащий несколько листов, так же, как вы делаете это в своей текущей программе. Только без всей этой простой задачи. Затем я бы проверил это в обеих системах. Если его производительность отличается даже в самой маленькой форме, вы можете опубликовать код здесь и спросить, почему он отличается. В противном случае добавьте дополнительные вещи, которые вы делаете в своей текущей программе, и снова проверьте. Делайте это до тех пор, пока не возникнет разница в производительности. В большинстве случаев вы знаете, в чем причина. Если нет, вы можете опубликовать код - person Axel Richter   schedule 18.02.2017