2015-06-29 2 views
0

У меня есть приложение, в котором работает 10000 потоков. Каждый поток открывает тот же файл. Проблема заключается в том, что всякий раз, когда я запускаю приложение с потоками 10K, приложение заканчивается после создания 500 потоков (файлов с файлами). Я пробовал одно и то же приложение в Linux и отлично работает после того, как я изменил опцию ulimit. Есть ли какой-либо предел для файла, который может открыть процесс в Windows? Я был googling, и все, что я получаю, - это изменить записи в config.nt файл в C \ Windows \ System32 ....Увеличение количества дескрипторов файлов в Windows 7 64 бит

Но я узнал, что указанный файл не существует для 64-разрядной ОС. Есть ли способ изменить лимит в Windows?

Моя ОС WINDOWS 7 64 бит.

+0

Я изо всех сил пытаюсь понять, с какими проблемами вы столкнулись, где решение * правильно * должно запускать 10000 потоков. Особенно, когда каждый поток обращается к одному файлу. –

+0

@Damien_The_Unbeliever Но помимо проблемы, есть ли способ, с помощью которого мы можем изменить лимит в Windows? – rahuljain1313

+0

Ограничения на количество дескрипторов файлов в Windows не ограничено. Ваша проблема в другом месте - например, если приложение 32-разрядное, оно, вероятно, исчерпало адресное пространство. Информация о том, как сбой приложения может быть полезной при определении проблемы. –

ответ

3

Чтобы просмотреть общее количество ручек (а не только дескрипторов файлов), ваше приложение открылось в определенное время: Просто убедитесь, что это ограничение дескриптора.

Download Process Explorer от https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx Обязательно установите соответствующую скорость обновления. Откройте его и выберите «Вид» -> «Выбор столбцов» -> нажмите на вкладке «Производительность процесса» и нажмите «Счетчик ручек».

Для Windows 7 x64 бит процесс может иметь одновременно 16.711.680 ручек. Если вы хотите проверить лимиты для себя, прочитайте ниже. Проверьте это с помощью инструмента из книги внутренних внутренних документов Windows (https://technet.microsoft.com/en-us/sysinternals/bb963901.aspx). Имя инструмента - TestLimit, и вы найдете его в нижней части страницы под заголовком Book Tools.

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

Как утверждают другие, подумайте о методе минимизации большого количества потоков. Возможно, ваше приложение закрывает файл, но не обрабатывает его. Мой совет, , если вам действительно нужно использовать очень большой кол-во кол-во, начните новый процесс каждый раз, когда количество ручек составляет около 16 м.

Смежные вопросы