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


#0 by Torquader
Столкнулся тут с "забавным" сюрпризом. В конфигурации рабочей станции (net config server) указано, что максимальное число открытых файлов 16384. Запускаю вот такой сценарий: var FsoObject=WScript.CreateObject("Scripting.FileSystemObject"); var Path="\\SERVER\C$\TEMP\TMP\"; var FileArray=new Array; for(i=0;i<100000;i++) { try  {  f=FsoObject.CreateTextFile(Path+String(i)+".txt");  } catch(e)  {  WScript.Echo("Скукожились на "+String(i)+" "+e.description);  break;  } FileArray[i]=f; } for(i=FileArray.length;i>0;) { f=FileArray[--i]; f.Close; delete FileArray[i]; } WScript.Echo("End"); Так вот. Данный сценарий "лажается" на числе 2709 или около того. При этом, если какое-то время подождать, то можно создавать ещё файлы. А если одновременно подключиться с другой машины (в другую директорию), то можно создать ещё 30-40 файлов (почему-то результат всегда разный). Если файлы создавать локально, то все 100000 создаются как часы. Вопрос - как можно увеличить число одновременно открытых файлов, чтобы оно хоть теоретически приближалось к установленному значению ? (Пробовал на Windows 2000 и Windows Xp - результат от системы зависит мало). Также хотелось бы знать, насколько в данном случае спасёт дело серверная ОС или, на крайняк, SMB-на Linux ? P.S. под рукой серверной Оси нет, а на рабочих системах ставить "эксперименты" не дадут.
#1 by Витязь
>>Вопрос - как можно увеличить число одновременно открытых файлов, чтобы оно хоть теоретически приближалось к установленному значению Зачем?
#2 by airyashov
+1 изменить алгоритм работы программы
#3 by Torquader
Скажем так, каждая база 1С - примерно 200 файлов. Если баз, скажем, десять, то при открытии каждой хотя бы одним пользователем мы получаем ситуацию, когда второй пользователь уже не может войти в базу (а пользователей - три). Кроме того, система журналирования действий, перенесённая с Linux (там кладутся файлы и отслеживается из "сьедание" обработчиком) "кладёт" всю сеть на несколько минут работы при опросе всех датчиков.
#4 by Витязь
Либо переводить систему на серверную ось, либо юзать скуль, либо использовать другие решения. Я например вот это решение использую, работает в 3х магазинах без сбоев. А до этого зависали кассы, из-за использования не серверной оси на сервере. Лицензионную хрюшу на серваки купили, а на это ограничение напоролись. В итоге так выкрутились.
#5 by Torquader
Спасибо за ссылку, но проблема не столько в 1С, сколько в обработчике событий от датчиков - его придётся переписывать. P.S. А у серверной Оси есть какие-то ограничения ?
#6 by Витязь
Без понятия, наверно есть, только порог намного выше.
#7 by smaharbA
У тебя не открыты они, а просто создаются
#8 by smaharbA
хотя вру правдо тут еще и массив
#9 by Fragster
переходите на линукс, там это реализовано (с)
#10 by zva
Для ХР Prof HKLMSystemCurrentControlSetControlSession ManagerMemory Management. Параметр IoPageLockLimit (REG_DWORD) = 65536 (Decimal) /10000 (Hex) HKLMSystemCurentControlSetServiseslanmanserverparameters. Параметр Size (Dword) = 3 HKLMSystemCurentControlSetControlSession ManagerMemory Menegment Параметр LargeSystemCache (Dword) = 1
#11 by Torquader
А насколько выше ? Просто, если там хотя бы 65536 можно, то можно задуматься о серверной ОС, а если там получается 8192 (предполагая, что 16384->65536 даёт 2048->8192) то нафиг такая "серверная" Ось. У меня - именно открыты, причём на запись. Вот как раз об этом и думаю, так как про Windows мнение, которая здесь цензура вырезает. Попробую поиграться параметрами. P.S. вот такими "засадами" и "сюрпризами" вас всегда "радует" Microsoft.
#12 by yukon
Во всем виноват Гейтс! Зачем требовать от настольной ОС функционала и ресурсов серверной ОС? Все на самом деле довольно просто (конечно если не залазить в дебри). Если объяснять совсем просто то Win XP Home/Prof система управления памятью не заточена на серверные задачи, в т.ч. на файл-сервер. Конечно расшарить папки можно, но работать будет хуже чем на серверной ОС. В твоем случае система не выделяет достаточно памяти для открытия максимального количества файлов. А выделяет на "2709 или около того", при подключении с другого компьютера видимо отдается весь оставшийся резерв на "ещё 30-40 файлов" Решение в или ConfigNT тебе в руки.
#13 by Torquader
Я понимаю, что Ось - несерверная. Просто интересно, а в серверной Оси мы на те же грабли наступим ?
#14 by smaharbA
в скорее не ограничение на открытые файлы, а что то с ресурсами
#15 by wuff
- нет
#16 by yukon
В журнале событий обычно пишется ошибка: Тип события:    Ошибка Источник события:    Srv Категория события:    Отсутствует Код события:    2017 ... Описание: Сервер не смог выделить память из невыгружаемого пула памяти, так как достигнут указанный в конфигурации верхний предел. Вроде все внятно написано.
#17 by smaharbA
правдо ?
#18 by smaharbA
что там такое написано ?
#19 by wuff
- а почему неправда?
#20 by yukon
Ну мне лично стало понятно куда копать. гугль и microsft.com творят чудеса. вопрос только в том а появилась ли такая ошибка в , а то разговор беспредметен - точнее он про МОЮ решенную проблему, а не нерешенную проблему из
#21 by smaharbA
где написано про "неправда" ?
#22 by smaharbA
куда копать, то ясно, а вот в не совсем ясно по сути различий нет, между системами
#23 by wuff
- как сказал бы наш гениальный товарисч: "не буквоедствуй!" ;)
#24 by yukon
между какими системами в ты не видишь различия?
#25 by smaharbA
--------------------------- Сервер сценариев Windows --------------------------- Скукожились на 16383 --------------------------- ОК   ---------------------------
#26 by Torquader
Это какая "Ось" скукожилась ?
#27 by smaharbA
и клиент и сервер вин ХП это называется Признак оптимизации сервера для выделения службам доступа к файлам и принтерам максимально возможного числа ресурсов. но в ХП нет интерактивного выбора, свойств Службы общего доступа к файлам и принтерам отсюда и size=3 и перезапуск службы сервер
#28 by smaharbA
по умолчанию в ХП оптимизация памяти "Наименьшая занимаемая память"
#29 by Torquader
Понятно, оптимизация потребует установки памяти (так как при её включении всё просто "тормозит"). А "замечательный" предел в 16384 можно как-то "перешагнуть" ? Или это уже надо dll "руками" ?
#30 by smaharbA
в все уже есть от МС -
#31 by smaharbA
а куда тебе больше ? это на одну сессию !!!
#32 by smaharbA
на каждую.
#33 by Torquader
Спасибо, буду пробовать - кроме того, "замечательный" сервис придётся "научить" обходиться меньшим количеством файлов (просто данные каждой карточки сейчас сохраняются в отдельный файл, и в момент выгрузки "умная" система открывает и все их блокирует. В памяти этого "чуда" помещается 65536 карт, по 4 Кб информации на каждую - в момент выгрузки карточек на сетевой диск всей сети "приходит белая лиса").
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С