Максимальное количество открытых файлов windows 7

What is the current limit of the number of open files in Windows 10? In DOS the number is 15.

Theoretically in 64-bit Windows the maximum number of handles that a process can open is 232, because handles have 32 significant bits. However in reality it has been limited to 16 777 216 (224) per process. On 32-bit Windows the limit is likely 216

To support 16-bit programs, 32-bit Windows only generates a handles that have 16 significant bits — the 16 upper bits are ignored by the OS (even though programs are not to be taking advantage of this fact). So no program can interact with more than 216 objects, which is actually rather low.

However, in order to improve this, 64-bit Windows increased the number of significant bits in a handle to 32. But now that means that handles cannot be passed to 16-bit programs without loss of information. So 16-bit programs cannot run on 64-bit Windows.

Why can’t a 64 bit OS run a 16 bit application?

However for a single process that uses the default C run-time libraries then the default limit is 512

The C run-time libraries have a 512 limit for the number of files that can be open at any one time. Attempting to open more than the maximum number of file descriptors or file streams causes program failure. Use _setmaxstdio to change this number.

File Handling

It’s unclear the maximum number of total file handles for all processes in Windows

For network connection the maximum number of open files per session is 16 384. This can be checked with the net config server command

Further reading

  • Pushing the Limits of Windows: Handles
  • Is there a limit on number of open files in Windows
  • Windows Server 2008 R2 max open files limit
  • How many Windows handles in use is «too many»?
  • Increasing no of file handles in Windows 7 64 bit
  • Why is the limit of window handles per process 10,000?

The current file handle usage can easily be seen in task manager

task manager open handles

Note that in DOS the number can be changed depending on the settings in config.sys and not fixed at 15

  • FILES (DOS 2.0 and DR DOS 3.31 and higher; OS/2)
    • Specifies the number of files that can be opened at once.
  • FILESHIGH (MS-DOS 7.0 and DR-DOS 7.02 and higher[6] and FreeDOS only)
    • Same as FILES, but explicitly loads file handles into upper memory.

https://en.wikipedia.org/wiki/CONFIG.SYS#CONFIG.SYS_directives

Theoretically in 64-bit Windows the maximum number of handles that a process can open is 232, because handles have 32 significant bits. However in reality it has been limited to 16 777 216 (224) per process. On 32-bit Windows the limit is likely 216

To support 16-bit programs, 32-bit Windows only generates a handles that have 16 significant bits — the 16 upper bits are ignored by the OS (even though programs are not to be taking advantage of this fact). So no program can interact with more than 216 objects, which is actually rather low.

However, in order to improve this, 64-bit Windows increased the number of significant bits in a handle to 32. But now that means that handles cannot be passed to 16-bit programs without loss of information. So 16-bit programs cannot run on 64-bit Windows.

Why can’t a 64 bit OS run a 16 bit application?

However for a single process that uses the default C run-time libraries then the default limit is 512

The C run-time libraries have a 512 limit for the number of files that can be open at any one time. Attempting to open more than the maximum number of file descriptors or file streams causes program failure. Use _setmaxstdio to change this number.

File Handling

It’s unclear the maximum number of total file handles for all processes in Windows

For network connection the maximum number of open files per session is 16 384. This can be checked with the net config server command

Further reading

  • Pushing the Limits of Windows: Handles
  • Is there a limit on number of open files in Windows
  • Windows Server 2008 R2 max open files limit
  • How many Windows handles in use is «too many»?
  • Increasing no of file handles in Windows 7 64 bit
  • Why is the limit of window handles per process 10,000?

The current file handle usage can easily be seen in task manager

task manager open handles

Note that in DOS the number can be changed depending on the settings in config.sys and not fixed at 15

  • FILES (DOS 2.0 and DR DOS 3.31 and higher; OS/2)
    • Specifies the number of files that can be opened at once.
  • FILESHIGH (MS-DOS 7.0 and DR-DOS 7.02 and higher[6] and FreeDOS only)
    • Same as FILES, but explicitly loads file handles into upper memory.

https://en.wikipedia.org/wiki/CONFIG.SYS#CONFIG.SYS_directives

Содержание

  1. Снять ограничения одновременного открытия 15 и более файлов в Windows 10
  2. Максимальное количество открытых файлов (несерверная ОС).
  3. Есть ли ограничение на количество открытых файлов в Windows
  4. 7 ответов
  5. Про многозадачность: окна под контролем
  6. Переключение по-старому и по-новому
  7. «Временная шкала»
  8. Виртуальные рабочие столы Windows 10
  9. Полезные решения для работы с несколькими приложениями
  10. Разделение экрана
  11. Окно поверх
  12. Фишки Windows 10: как просто взаимодействовать с окнами и рабочими столами
  13. Содержание
  14. Содержание
  15. Работа с окнами
  16. Работа с рабочими столами

Снять ограничения одновременного открытия 15 и более файлов в Windows 10

snyat ogranicheniya otkrytiya 15

Независимо от того, чем именно вы занимаетесь на компьютером, вам может потребоваться разом открыть достаточно большое количество однородных объектов. Казалось бы, что в этом сложно, но как показывает практика, сделать нечто подобное в «десятки» не просто, так как у нее имеются свои ограничения, которые не позволяют открывать больше 15 однородных файлов. Именно по этому, мы предлагаем вам просто на просто снять ограничения одновременного открытия 15 и более файлов в Windows 10.

Если вы долго используете операционные системы семейства Windows, тогда вам должно быть известно, что подобного рода ограничения уже давным-давно присущи разным ОС и сделано это специально для того, чтоб предотвратить чрезмерную нагрузку на работающую операционную систему, которая от столь большого количества открытых файлов, может зависнуть. Тем более, вероятность зависания операционной системы велика при условии, что папки или фалы будут иметь достаточно большой вес и загрузят процессор по полной.

15 2

15 3

Для того, чтоб снять ограничения одновременного открытия 15 и более файлов в Windows 10 вам нужно при помощи команды «regedit» произвести открытие «Редактора реестра» и в его левой колонке развернуть следующую ветку: HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer.

Теперь, в подразделе с именем «Explorer», создаем совершенно новый, 32-битный параметр типа DWORD, которому задаем имя «MultipleInvokePromptMinimum» → производим клик по параметру «MultipleInvokePromptMinimum» и в десятичной системе исчисления, задаем то количество файлов, которое будет доступно для команд «MultipleInvokePromptMinimum»: «Открыть», «Изменить» и «Распечатать».

15 4

В нашем случае, мы поставили цифровое значение равное «50», что позволит без особых проблем, одновременно открыть 50 конкретных файлов или папок, которые нужным нам для работы.

15 5

Обратите внимание, что для вступления новых настроек, необходимо произвести перезагрузку операционной системы Windows 10.

Источник

Максимальное количество открытых файлов (несерверная ОС).

Столкнулся тут с «забавным» сюрпризом.
В конфигурации рабочей станции (net config server) указано, что максимальное число открытых файлов 16384.
Запускаю вот такой сценарий:
var FsoObject=WScript.CreateObject(«Scripting.FileSystemObject»);
var Path=»\\SERVER\C$\TEMP\TMP\»;
var FileArray=new Array();
for(i=0;i 0;)
<
f=FileArray[—i];
f.Close();
delete FileArray[i];
>
WScript.Echo(«End»);

Так вот. Данный сценарий «лажается» на числе 2709 или около того.
При этом, если какое-то время подождать, то можно создавать ещё файлы.
А если одновременно подключиться с другой машины (в другую директорию), то можно создать ещё 30-40 файлов (почему-то результат всегда разный).
Если файлы создавать локально, то все 100000 создаются как часы.

HKLMSystemCurrentControlSetControlSession ManagerMemory Management.
Параметр IoPageLockLimit (REG_DWORD) = 65536 (Decimal) /10000 (Hex)

HKLMSystemCurentControlSetServiseslanmanserverparameters.
Параметр Size (Dword) = 3
HKLMSystemCurentControlSetControlSession ManagerMemory Menegment
Параметр LargeSystemCache (Dword) = 1

P.S. вот такими «засадами» и «сюрпризами» вас всегда «радует» Microsoft.

(11) Во всем виноват Гейтс!

Зачем требовать от настольной ОС функционала и ресурсов серверной ОС?

Все на самом деле довольно просто (конечно если не залазить в дебри).
Если объяснять совсем просто то Win XP Home/Prof система управления памятью не заточена на серверные задачи, в т.ч. на файл-сервер. Конечно расшарить папки можно, но работать будет хуже чем на серверной ОС. В твоем случае система не выделяет достаточно памяти для открытия максимального количества файлов. А выделяет на «2709 или около того», при подключении с другого компьютера видимо отдается весь оставшийся резерв на «ещё 30-40 файлов»

Источник

Есть ли ограничение на количество открытых файлов в Windows

Я открываю много файлов с помощью fopen() в VC++, но через некоторое время это удается.

существует ли ограничение на количество файлов, которые вы можете открыть одновременно?

7 ответов

библиотеки времени выполнения C имеют ограничение 512 для количества файлов, которые могут быть открыты в любой момент времени. Попытка открыть больше максимального количества файловых дескрипторов или файловых потоков приводит к сбою программы. Использовать _setmaxstdio изменить это число. Более подробную информацию об этом можно прочитать здесь

информация по этому вопросу, соответствующая VS 2015, может быть найдена здесь

Если вы используете стандартные библиотеки POSIX C / C++ с Windows, ответ «да», есть предел.

однако, что интересно, ограничение накладывается типом библиотек C / C++, которые вы используете.

я наткнулся на следующий поток JIRA (http://bugs.mysql.com/bug.php?id=24509) из MySQL. Они имели дело с той же проблемой о количестве открытых файлов.

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

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

в случае, если кто-то еще неясен относительно того, к чему применяется предел, я считаю, что это предел для каждого процесса, а не для всей системы.

Я просто написал небольшую тестовую программу для открытия файлов, пока она не выйдет из строя. Он попадает в 2045 файлов перед сбоем (2045 + STDIN + STDOUT + STDERROR = 2048), затем я оставил это открытым и запустил другую копию.

вторая копия показала такое же поведение, то есть у меня было по крайней мере 4096 файлов, открытых сразу.

Да есть ограничения в зависимости от уровня доступа, который вы используете при открытии файлов. Вы можете использовать _getmaxstdio найти пределы и _setmaxstdio изменить ограничения.

предел зависит от ОС, и доступной памяти.

в старом Д. С. О. предел 255 simultaneuously открытых файлов.

в Windows XP предел выше (я считаю, что это 2,048, как указано MSDN).

Источник

Про многозадачность: окна под контролем

Марат Хайрулин, эксперт Microsoft в России, продолжает исследовать нюансы работы с несколькими задачами и рассказывает о совмещении окон и разделении экрана, о вашей личной машине времени для сайтов и документов, и о реальной пользе виртуальных столов.

В прошлой заметке мы писали о том, как современная наука относится к многозадачности и делились небольшими приемами, которые помогут сосредоточиться на одной задаче. А теперь хочтим напомнить (а кого-то может быть и познакомить) с полезными возможностями, которые помогут, если решение вашей задачи требует работы сразу с несколькими приложениями.

slr4d4mjquyjgbpr0 4bbpuzaoe

Переключение по-старому и по-новому

Переключение между приложениями – наверное то, что большинство из нас делает «на автомате», и никого, конечно, не удивит сочетание клавиш Alt + Tab. Но если одновременно нажать также и Ctrl (то есть Ctrl + Alt + Tab), то эта комбинация зафиксирует меню со всеми открытыми окнами на экране и позволит выбрать нужное приложение одним кликом мыши или касанием пальца (выбрать окно можно также с помощью стрелок на клавиатуре, а открыть – с помощью Enter). Может быть полезно, когда у вас открыто много окон.

Чуть менее известное, но тоже классическое сочетание клавиш Windows + Tab дает больше возможностей, чем кажется на первый взгляд.

Нажимая эти клавиши в актуальных версиях Windows 10, мы попадаем в раздел «Представление задач». Здесь можно не только переключаться между приложениями, но и воспользоваться «Временной шкалой» и «Виртуальными рабочими столами». К слову, вместо горячих клавиш вы можете кликнуть по кнопке «Представление задач» (обычно она расположена рядом с кнопкой «Пуск») или провести пальцем от левого края к центру сенсорного экрана. Кстати, если у вас современный ноутбук – попробуйте жест для тачпада: проведите по нему тремя пальцами вверх.

image loader
Режим Представление задач

«Временная шкала»

«Временная шкала» появилась в Windows 10 два года назад. Она помогает вернуться к задачам, над которыми вы работали ранее на вашем компьютере. При необходимости вы также сможете синхронизировать ее и с другими устройствами с вашей учетной записью*.

Для меня «Временная шкала» стала своеобразной машиной времени. Работа над многими проектами длится несколько дней. И если, допустим, в прошлую пятницу я работал с определенными сайтами и документами, вернувшись к этому проекту в среду, я смогу легко восстановить картину. Я просто отмотаю шкалу до нужной даты – той самой пятницы, увижу и смогу открыть те самые сайты и документы, в которые я тогда был погружен.

image loader
Поиск на Временной шкале

Поиск на «Временной шкале» тоже не раз меня выручал. В отличие от обычного поиска по файлам, я смогу искать не среди всех документов на устройстве (а их может быть очень много), а именно среди тех, с которыми я работал в последние дни. Возможно, вам знакомо сочетание Ctrl + F, запускающее поиск в Проводнике и во многих приложениях. Эта комбинация сработает и на экране «Представление задач»: то есть можно нажать сначала Windows + Tab, а затем – Ctrl + F и ввести искомое слово для поиска по «Временной шкале».

Виртуальные рабочие столы Windows 10

Концепция виртуальных рабочих столов далеко не нова. Если говорить о Windows, то одним из вариантов их использования была утилита Desktops, которую когда-то (последняя версия вышла в 2012 году) разработал Марк Руссинович. В Windows 10 виртуальные рабочие столы встроены в систему и помогают разделять потоки задач, переключаться между ними.

Если раньше вы не работали с виртуальными столами, для понимания их логики представьте такую аналогию: вам доступно несколько мониторов, на каждом вы можете открыть нужные программы, разделив их по рабочим потокам, например: на одном мониторе – работа с почтой и календарем, на другом – работа с несколькими документами Word, а на третьем – работа с браузером и OneNote. В каждый момент вы смотрите только на один монитор (виртуальный рабочий стол) со своим набором приложений. А переключаясь между виртуальными столами, вы как будто переводите взгляд с одного монитора на другой.

image loader
Перетаскивание окна для переноса его на новый виртуальный рабочий стол

Создать новый виртуальный рабочий стол можно на экране «Представление задач»: нажмите Windows + Tab и перетащите нужные окна открытых приложений на поле с надписью «+ Создать рабочий стол», и они будут перемещены на другой виртуальный рабочий стол. Можно также создать новый, пустой виртуальный стол (Windows + Ctrl + D) и уже затем открыть на нем нужные программы.

«Переводить взгляд» (то есть переключаться между настроенными рабочими столами) можно, выбирая нужный стол на экране «Представление задач», но намного удобнее переключаться с помощью горячих клавиш: Windows + Ctrl + стрелки вправо/влево, а на современных тачпадах – 4 пальца влево или вправо.

Полезные решения для работы с несколькими приложениями

Теперь еще об одной повседневной необходимости – работе с несколькими приложениями одновременно.

Разделение экрана

Первой возможности, о которой хочу напомнить, уже много лет, и в первоначальном виде (под названием Aero Snap) она появилась еще в Windows 7. В Windows 10 ее возможности расширили и назвали Snap Assist. Речь про разделение экрана для закрепления двух (а в Windows 10 – до четырех) приложений.

image loader
Snap Assist предлагает выбрать второе окно для закрепления справа

Чтобы это сделать, нужно взять приложение за самую верхнюю полоску, поднести его к правой или левой границе экрана до появления на экране его «тени» и отпустить (тем самым, закрепив первое приложение), а затем в появившихся рядом миниатюрах других приложений выбрать второе для закрепления рядом. Сценарий несложный, работает и для мыши, и для пальца. Еще проще это можно сделать с помощью сочетания клавиш Windows + клавиши со стрелками вправо/влево. Этому сочетанию уже больше 10 лет, но у тех, кто применяет его впервые, и сейчас порой возникает ощущение «цифровой магии».

Любознательным пользователям также напомню, что в Windows 10 можно отправлять приложение в «четвертинку» экрана, перенеся его в угол (или используя дополнительно клавиши Windows + стрелки вверх/вниз). При закреплении двух приложений можно перемещать границу между ними, выделяя какому-то из приложений больше места. Чтобы выбрать приложения для закрепления на экране, можно кликнуть правой кнопкой мыши по их миниатюрам на экране «Представление задач».

Окно поверх

У меня было довольно мало ситуаций, когда требовалось закреплять окно одного приложения поверх другого (кажется, на телевизорах подобное называлось режимом «картинка в картинке»), но если у вас такая необходимость возникает, напомню в завершение заметки о двух небольших возможностях.

Мини-режим встроенного видеоплеера (приложение «Кино и ТВ», которое воспроизводит видео в Windows 10 по умолчанию). Запустите видео и нажмите на небольшую кнопку в правом нижнем углу (Воспроизвести в мини-режиме), окно с видеороликом будет размещено поверх всех окон.

image loader
Видео в режиме Окно поверх

Аналогичную возможность, только с закреплением поверх всех приложений окна браузера, можно получить с использованием отдельных утилит. Однажды мне потребовалось работать над документом, постоянно сверяясь при этом с сайтом одного онлайн-сервиса, и меня выручило приложение Always on Top, доступное в Microsoft Store. Оно встраивается в меню «Поделиться» в Edge и позволяет отправить любой сайт в окно, расположенное поверх всех приложений. Я мог бы пошутить, что этот вариант отлично подошел бы для просмотра каналов на YouTube «одним глазком» во время работы, например, над сводными таблицами в Excel. Но как мы и обсуждали в первой заметке, такая многозадачность скорее повредит и просмотру, и работе.

В этом обзоре я поделился некоторыми возможностями при работе с одной или несколькими задачами, которыми пользуюсь сам. В следующих заметках продолжу разговор о приемах, которые помогут сделать нашу «цифровую жизнь» более продуктивной.

Источник

Фишки Windows 10: как просто взаимодействовать с окнами и рабочими столами

q93 3898499f8631c836dd61c882e5dec0ab9befd3b7398b8173db9fe780eebe7640

q93 51946f9cca854c1530f212dea6efe3cc4c8b58fd81616921ba2dee82327db1f2

Содержание

Содержание

В статье мы расскажем о практичности работы в операционной системе Windows 10 по сравнению с предыдущими версиями.

Работа с окнами

Windows 10 предлагает гибкий инструмент работы с окнами для тех, кто работает в нескольких окнах одновременно. При этом функция доступна независимо от того, какой у вас монитор и сколько их вы используете. Неважно также, какие характеристики у вашего ПК или ноутбука. Работа с окнами доступна бесплатно и включается парой нажатий на клавиатуру. Единственным ограничением является количество окон на один экран — это 4 окна при условии, что вы доверили ОС определить их расположение. В ручном же режиме подобных окон можно открыть в несколько раз больше (но нужно ли?).

Для примера, окна трех приложений можно расположить таким образом:

q93 6ce6ea524a349605b90f2f56913f1fc6a2233762824e2106ba543af1fa051fe9

Чтобы воспользоваться данным функционалом, сперва необходимо запустить все необходимые приложения в любом порядке. Рекомендуем открывать не более четырех окон.

После этого вам необходимо сделать окно активным, просто нажав на него. Теперь с помощью комбинации клавиши Win и клавиш-стрелок выбрать направление, в котором окно должно «прилипнуть».

q93 b187ddc9200a16c22b06332ed368ec2aaab5adf789f5f4d269d28c1aaf4fbef7

Для примера: комбинация «Win + ←» расположила окно слева на всю высоту экрана.

q93 d2e6e3f3b98dc331cefb675f5412810c84714c8e89a9ec2347840db3a1010e0b

Если хотите, чтобы окно заняло четверть рабочего стола, то комбинация «Win + ↓» или «Win + ↑» разместит окно снизу или сверху соответственно.

q93 98735e8d7fe59a225949a05e23a27821d50665291373304087fae6b9fc87b8e4

Следующий пример был получен сначала нажатием «Win + →», а затем «Win + ↓», что «прилепило» окно снизу и справа соответственно.

q93 4492a78d3a9edbe3b096ac8b7ba3f7b8efed2be53b1f2b1c9c589ba89d061c0a

Такими же комбинациями можно настроить оптимальное расположение и размер остальных окон, переключаясь между ними. Все окна можно расположить в том порядке, который вам необходим.

q93 cb4de050308a1db37a823692892f3eaa62d1becf8a3d8122c7b746dac66a4a72

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

Работа с рабочими столами

Работа с виртуальными рабочими столами повысит продуктивность и расширит понятие многозадачности при работе в Windows 10. Этот инструмент позволит увеличить кол-во окон, в которых можно работать одновременно, и отделить одну группу окон от другой. Например, если в одной группе окон вы работаете с текстом, а в другой — с фото. Как уже говорилось ранее, завышенных требований к характеристикам вашего ПК нет, платить за это тоже не надо.

Как только вам необходимо дополнительное пространство — новый рабочий стол для работы с необходимыми приложениями или даже играми, — нажмите комбинацию «Win + Tab».

q93 e954e47302090e262da81e1f702ec000000549534cf2b9103e2851f595a6d2bc

Вы увидите менеджер работы с окнами и рабочими столами.

q93 c105183e833d5b45c1ee12760f703afd8d73f16fa88c5bc8cc5a9cd147a045c2

В верхнем левом углу, в блоке рабочих столов, вы можете создать необходимое количество рабочих столов.

q93 012e92e4d4eec9f13b4d08b2b98c540d3ec4957f0b92a10fdbdcf6338149b847

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

Если вам необходимо переключиться на предыдущий или следующий рабочий стол, воспользуйтесь комбинациями «Ctrl+Win+←» или «Ctrl+Win+→» соответственно. Переключение происходит почти мгновенно, нет необходимости ждать загрузки.

q93 fed22b026212b540096b9316fa0ad5a08a37ca5bf4aae2c110d56675c81ad450

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

Используя полученный опыт использования «многооконности» и «мультизадачности», вы можете приумножить скорость и удобство работы в приложениях. Это применимо к работе, общению, играм, разработке и так далее.

Источник

в 64-битных Windows теоретически максимальное количество дескрипторов, которые может открыть процесс, равно 232, потому что ручки имеют 32 бит. Однако в действительности он был ограничен 16,777,216 (224) для каждого процесса. На 32-битных Windows предел, вероятно, 216

для поддержки 16-битных программ 32-битная Windows генерирует только дескрипторы, которые имеют 16 значащих битов-16 верхних битов игнорируются ОС (даже если программы не должны воспользоваться этим фактом). Таким образом, ни одна программа не может взаимодействовать с более чем 216 объектами, что на самом деле довольно низко.

однако, чтобы улучшить это, 64-битная Windows увеличила количество значащих битов в дескрипторе до 32. Но теперь это означает, что хэндлы не могут быть переданы 16-битным программам без потери информации. Так что 16-битные программы не запускаются на 64-битной Windows.

почему 64-битная ОС не может работать 16 бит заявление?

для сетевого подключения максимальное количество открытых файлов за сеанс-16384. Это можно проверить с помощью net config server команда

более дальнеишее чтение

  • Раздвигая границы окна: ручки
  • есть ли ограничение на количество открытых файлов в Windows
  • Windows Server 2008 R2 максимальное количество открытых файлов
  • сколько Ручки Windows в использовании «слишком много»?
  • увеличение нет дескрипторов файлов в Windows 7 64 бит
  • почему лимит оконные ручки в процессе 10,000?

текущее использование дескриптор файла можно легко увидеть в диспетчере задач

task manager open handles

обратите внимание, что в DOS количество может быть изменено в зависимости от настроек в config.sys и не зафиксировано на 15

  • FILES (DOS 2.0 и DR DOS 3.31 и выше; OS / 2)
    • задает количество файлов, которые могут быть открыты одновременно.
  • FILESHIGH (MS-DOS 7.0 и DR-DOS 7.02 и выше[6] и только FreeDOS)
    • то же, что и файлы, но явно загружает дескрипторы файлов в верхнюю память.

https://en.wikipedia.org/wiki/CONFIG.SYS#CONFIG.SYS_directives

Я открываю много файлов с помощью fopen() в VC++, но через некоторое время это удается.

существует ли ограничение на количество файлов, которые вы можете открыть одновременно?

7 ответов


библиотеки времени выполнения C имеют ограничение 512 для количества файлов, которые могут быть открыты в любой момент времени. Попытка открыть больше максимального количества файловых дескрипторов или файловых потоков приводит к сбою программы. Использовать _setmaxstdio изменить это число. Более подробную информацию об этом можно прочитать здесь

Также вам может потребоваться проверить, поддерживает ли ваша версия windows верхний предел, который вы пытаетесь установить с помощью _setmaxstdio. Для получения дополнительной информации о _setmaxstdio Регистрация здесь

информация по этому вопросу, соответствующая VS 2015, может быть найдена здесь

52

автор: stack programmer


Если вы используете стандартные библиотеки POSIX C / C++ с Windows, ответ «да», есть предел.

однако, что интересно, ограничение накладывается типом библиотек C / C++, которые вы используете.

я наткнулся на следующий поток JIRA (http://bugs.mysql.com/bug.php?id=24509) из MySQL. Они имели дело с той же проблемой о количестве открытых файлов.

однако Пол Дюбуа объяснил, что проблема может эффективно устраняется в Windows с помощью …

вызовы Win32 API (CreateFile(),
WriteFile () и так далее) и
максимальное количество открытых файлов по умолчанию
был увеличен до 16384. Этот
максимум можно увеличить дальше мимо
использование параметра —max-open-files=N в
запуск сервера.

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

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


в случае, если кто-то еще неясен относительно того, к чему применяется предел, я считаю, что это предел для каждого процесса, а не для всей системы.

Я просто написал небольшую тестовую программу для открытия файлов, пока она не выйдет из строя. Он попадает в 2045 файлов перед сбоем (2045 + STDIN + STDOUT + STDERROR = 2048), затем я оставил это открытым и запустил другую копию.

вторая копия показала такое же поведение, то есть у меня было по крайней мере 4096 файлов, открытых сразу.


Да есть ограничения в зависимости от уровня доступа, который вы используете при открытии файлов. Вы можете использовать _getmaxstdio найти пределы и _setmaxstdio изменить ограничения.


Я не знаю, откуда Пауло взял этот номер.. В операционных системах на базе windows NT количество дескрипторов файлов, открытых для каждого процесса, в основном ограничено физической памятью — это, безусловно, сотни тысяч.


Да, есть предел.

предел зависит от ОС, и доступной памяти.

в старом Д. С. О. предел 255 simultaneuously открытых файлов.

в Windows XP предел выше (я считаю, что это 2,048, как указано MSDN).


столкнулся с той же проблемой, но с использованием Embarcadero C++-Builder из RAD Studio 10.2. C-время выполнения этой вещи, похоже, не обеспечивает _getmaxstdio или _setmaxstdio, но некоторые макрос и их предел по умолчанию намного ниже, чем сказано здесь для других сред выполнения:

С stdio.h:

/* Number of files that can be open simultaneously
*/
#if defined(__STDC__)
#define FOPEN_MAX (_NFILE_)
#else
#define FOPEN_MAX (_NFILE_)
#define SYS_OPEN  (_NFILE_)
#endif

_nfile.h:

#if defined(_WIN64)
#define _NFILE_ 512
#else
#define _NFILE_ 50
#endif

0

автор: Thorsten Schöning


Здесь я разбираю настройки системы с помощью конфига /etc/sysclt.conf, для того чтобы задать лимит открытых файлов для системы и процессов.

Лимит открытых файлов в системе

В системе Linux каждый открытый файл занимает файловый дескриптор. Информация по занятым файловым дескрипторам и их лимит хранится в файле /proc/sys/fs/file-nr:

$ cat /proc/sys/fs/file-nr
1120    0       9223372036854775807

В выводе мы видим 3 числа:

  • Количество выделенных файловых дескрипторов (1120). Показывает количество открытых файлов в системе.
  • Число выделенных, но не используемых файловых дескрипторов (0). Ядро версии выше чем Linux 2.6 всегда показывает 0. Потому что количество выделенных файловых дескрипторов точно соответствует количеству используемых файловых дескрипторов.
  • Максимальное число файловых дескрипторов (9223372036854775807). Это и есть лимит открытых файлов в системе, который можно изменить с помощью файла sysclt.conf.

Для того, чтобы задать лимит, нужно в файле /etc/sysclt.conf задать параметр fs.file-max и указать ему значение, например:

$ sudo nano /etc/sysctl.conf
fs.file-max=1000000

Для того, чтобы изменения вступили в силу нужно выполнить команду:

$ sudo sysctl -p
fs.file-max = 1000000

В выводе мы увидим, какие изменения применяются.

И чтобы проверить наши изменения, опять посмотрим на файл /proc/sys/fs/file-nr:

$ cat /proc/sys/fs/file-nr
1120    0       1000000

После проделанного я верну всё как было:

$ sudo nano /etc/sysctl.conf
fs.file-max=9223372036854775807

$ sudo sysctl -p
fs.file-max = 9223372036854775807

Вообще, на серверах, вряд ли понадобится уменьшать данный лимит.

Лимит открытых файлов для каждого процесса

Общесистемный лимит мы рассмотрели. Теперь я покажу как задать лимит открытых файлов для каждого отдельного процесса. Но вначале посмотрим какой лимит используется по умолчанию, для этого нужно посмотреть файл /proc/sys/fs/nr_open:

$ cat /proc/sys/fs/nr_open
1048576

То есть, любой процесс в системе не сможет открыть более 1048576 файлов.

Можем поменять это значение, также используя /etc/sysctl.conf. Параметр в этом случае будет называться fs.nr_open:

$ sudo nano /etc/sysctl.conf
fs.nr_open=1024

$ sudo sysctl -p
fs.file-max = 9223372036854775807
fs.nr_open = 1024

$ cat /proc/sys/fs/nr_open
1024

Если хотите, то можете почитать официальную документацию по файлам находящимся в /proc/sys/fs/ – здесь.

Узнаём сколько сейчас открыто файлов у произвольного процесса

Чтобы узнать, сколько сейчас открыто файлов у произвольного процесса, выполните ls /proc/<pid>/fd | wc -l:

$ sudo ls /proc/1/fd/ | wc -l
81

$ sudo ls /proc/525/fd/ | wc -l
15

А для того, чтобы пробежаться по списку процессов определённого пользователя и узнать сколько файлов эти процессы открыли, я написал такой скрипт:

$ nano openfiles-users-procs.sh
#!/bin/bash
user=$1
function work_fun {
   ps -u $user | awk '{print $1}' | grep -v PID | while read line
      do
         echo "Открыто файлов для `ps -p "$line" -o comm | grep -v COMMAND` ("$line") = `sudo ls /proc/$line/fd/ | wc -l`"
      done
}
work_fun | sort -rnk 7

Дадим право на исполнение этому скрипту:

$ chmod u+x openfiles-users-procs.sh

И выполним:

$ ./openfiles-users-procs.sh alex
ls: cannot access '/proc/6952/fd/': No such file or directory
ls: cannot access '/proc/6953/fd/': No such file or directory
ls: cannot access '/proc/6954/fd/': No such file or directory
Открыто файлов для systemd (677) = 29
Открыто файлов для sshd (788) = 11
Открыто файлов для (sd-pam) (678) = 7
Открыто файлов для openfiles-users (6955) = 4
Открыто файлов для openfiles-users (6949) = 4
Открыто файлов для bash (797) = 4
Открыто файлов для sort (6951) = 3
Открыто файлов для openfiles-users (6950) = 3
Открыто файлов для  (6954) = 0
Открыто файлов для  (6953) = 0
Открыто файлов для  (6952) = 0

Здесь, в самом начале, вы видите ошибки. Просто процессы 6952, 6953, 6954 существовали, но пока скрипт выполнялся они уже завершились. А просто сложив все эти числа вы узнаете, сколько файлов открыто у определённого пользователя.

Итог

В этой статье я разобрал, как можно задать лимит открытых файлов используя конфиг sysclt.conf. Этот лимит накладывается ядром системы, но есть и другие механизмы накладывающие свои лимиты, о них я расскажу в следующих статьях.


Сводка

Лимит открытых файлов - настройки sysclt.conf

Имя статьи

Лимит открытых файлов — настройки sysclt.conf

Описание

Здесь я разбираю настройки системы с помощью конфига /etc/sysclt.conf, для того чтобы задать лимит открытых файлов для системы и процессов

Я
   Цыпленок

06.07.12 — 10:53

Столкнулся с такой реализацией сервера на базе Windows7 для дбф базы 7.7 (размер примерно 400 мгб). На остальных машинах XP и работают с сервером (в папке с базой ordnochk.prm). Одновременно может работать с базой до 7 (количество уточняю) пользователей, плюс еще три пользователя работают с ней через УРБД.

Насколько стабилен такой сервер? Вин7 вроде не серверная операционка.

   Irek-kazan

1 — 06.07.12 — 10:55

а причем здесь сервер спросите вы?

   Цыпленок

2 — 06.07.12 — 10:56

(1) Вроде есть ограничение на количество одновременно открываемых файлов, не?

   360i

3 — 06.07.12 — 10:59

(2) До двадцати подключений по SMB

   smaharbA

4 — 06.07.12 — 11:02

в реестр внеси

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters]

«Size»=dword:00000003

и запрети на шаре кеширование

   Цыпленок

5 — 06.07.12 — 11:04

(3) Так, а как со скоростью работы при 20 пользователях? )  Тут нашел еще что жаловались на ошибки при базе на сервере с вин7

http://forum.infostart.ru/forum73/topic53433/

(4) Спасибо, а на что влияет такой параметр?

   zahar140382

6 — 06.07.12 — 11:12

насколько я знаю к вин 7 могут одновременно подключатся до 20 машин.больше невыйдет.

так что у вас проблем недолжно быть

   Kavar

7 — 06.07.12 — 11:14

(6) тут проблема не в количестве пользователей, а в количестве одновременно открытых файлов.

   smaharbA

8 — 06.07.12 — 11:14

(5) это выбор

«Максимальная производительность для доступа к общим файла»

(в кратце)

   zahar140382

9 — 06.07.12 — 11:15

(7) а почему не так  ?

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer]

«MultipleInvokePromptMinimum»=dword:00000016

   Цыпленок

10 — 06.07.12 — 11:16

(8) Спасибо за инфу.

   zahar140382

11 — 06.07.12 — 11:20

(9) хотя этот пораметр на одновременное открытие файлов локально.

   Цыпленок

12 — 06.07.12 — 11:21

А с количеством одновременно открываемых файлов могут быть проблемы?

   zahar140382

13 — 06.07.12 — 11:35

http://social.technet.microsoft.com/Forums/ru-RU/vistaru/thread/76420c6e-d01c-4df9-b626-e6d46b08c849

   zahar140382

14 — 06.07.12 — 11:39

хотя возможно и нет ограничений(как у же сказали тут повысте производительность для общего доступа)

.ну я что то с трудом верю что майкрасофт пошли на то что в 7 сняли все ограничения-на них это не похоже.где то должен быть подвох

   smaharbA

15 — 06.07.12 — 11:42

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

   smaharbA

16 — 06.07.12 — 11:43

грубо делим 16к на количество файлов конфы

   Цыпленок

17 — 06.07.12 — 11:51

В конфе 462 файла, получается 34 пользователя примерно могут работать одновременно. Что то многовато выходит.

   smaharbA

18 — 06.07.12 — 12:44

(17) это грубо + файлы платформы если они на шаре + файлы блокировок и прочая шелуха

   VladZ

19 — 06.07.12 — 12:47

(0) windows 7 server — нет не слышал…

   Sakura

20 — 06.07.12 — 12:53

(0) 7 — не серверная система, зачем так извращаться?

   Цыпленок

21 — 06.07.12 — 12:55

(20) Я тоже так думал, выясняется, вполне рабочее решение.

   1Сергей

22 — 06.07.12 — 12:58

Я так понимаю этот «сервер» используется ещё и как пользовательская машина?

  

Цыпленок

23 — 06.07.12 — 12:58

Нет.

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Понравилась статья? Поделить с друзьями:
  • Майкрософт эссеншиал для windows 10 скачать 64 bit
  • Максимальное количество оперативной памяти windows 7 64
  • Майкрософт эксплорер 10 скачать бесплатно для windows
  • Максимальное количество жестких дисков в windows 10
  • Майкрософт эксель скачать бесплатно для windows 10 через торрент