Что означает ошибка «Недостаточно системных ресурсов ...»? - PullRequest
3 голосов
/ 18 мая 2010

Этот вопрос охватывает как ошибки сервера, так и переполнение стека, поэтому я только что выбрал этот.

Я получаю следующее исключение с некоторым простым кодом копирования файла. Работает на Windows Server 2003 x64

Caused by: java.io.IOException: Insufficient system resources exist to complete the requested service
at sun.nio.ch.FileDispatcher.pwrite0(Native Method)
at sun.nio.ch.FileDispatcher.pwrite(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.FileChannelImpl.write(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFrom(Unknown Source)
at Tools.copy(Tools.java:473)

public static void copy(FileChannel input, FileChannel output) throws IOException {
    final long size = input.size();
    long pos = 0;
    while (pos < size) {
        final long count = (size - pos) > FIFTY_MB ? FIFTY_MB : (size - pos);
        pos += output.transferFrom(input, pos, count);
    }
}

Дело в том, что сервер, на котором выполняется этот код, является совершенно новым и очень мощным, поэтому я не понимаю, из какого системного ресурса он может быть исчерпан.

Это похоже на ошибку, описанную здесь: http://support.microsoft.com/kb/304101

Но я попытался добавить изменения в реестр, чтобы увеличить размер страницы памяти ядра, но это не помогло.

Чего я действительно не понимаю, так это того, что видел код, который использует FileChannel transferFrom с гораздо большими кусками по 50 МБ. Я видел, как этот код работает для файлов размером более 1 ГБ в одном фрагменте. Но файл, на котором застревает сервер, - всего 32 МБ!

Что здесь происходит? Это проблема с FileChannel или Windows?

1 Ответ

4 голосов
/ 18 мая 2010

Может быть связано с «Ошибка» ID 4938442: недостаточно системных ресурсов при копировании больших файлов с помощью NIO FileChannels .

Оценка: не ошибка. Скорее всего, это файловый сервер (или, возможно, клиент) проблема конфигурации.

ЗАЯВЛЕННЫЙ КЛИЕНТ РАБОТАЕТ:

  • Не используйте NIO; мы бы предпочли избежать этого обходного пути, так как NIO предлагает значительное повышение производительности для больших файлов (по крайней мере при выполнении локальных копий с диска на локальный диск)

  • Мы можем передавать, используя меньшее количество байтов. фактическое количество байтов, которые могут быть скопированы без Эта ошибка, кажется, отличается в Windows XP и Сервер Windows 2000. Конечно, значение 32Mb кажется работа.

...