Имя: Пароль:
IT
Админ
Максимальное количество открытых файлов (несерверная ОС).
0 Torquader
 
02.09.09
10:57
Столкнулся тут с "забавным" сюрпризом.
В конфигурации рабочей станции (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)+"\r\n"+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 Витязь
 
02.09.09
11:00
>>Вопрос - как можно увеличить число одновременно открытых файлов, чтобы оно хоть теоретически приближалось к установленному значению

Зачем?
2 airyashov
 
02.09.09
11:01
(1) +1 изменить алгоритм работы программы
3 Torquader
 
02.09.09
11:09
Скажем так, каждая база 1С - примерно 200 файлов. Если баз, скажем, десять, то при открытии каждой хотя бы одним пользователем мы получаем ситуацию, когда второй пользователь уже не может войти в базу (а пользователей - три).
Кроме того, система журналирования действий, перенесённая с Linux (там кладутся файлы и отслеживается из "сьедание" обработчиком) "кладёт" всю сеть на несколько минут работы при опросе всех датчиков.
4 Витязь
 
02.09.09
11:18
Либо переводить систему на серверную ось, либо юзать скуль, либо использовать другие решения. Я например вот это решение использую, работает в 3х магазинах без сбоев. http://infostart.ru/projects/811/ А до этого зависали кассы, из-за использования не серверной оси на сервере. Лицензионную хрюшу на серваки купили, а на это ограничение напоролись. В итоге так выкрутились.
5 Torquader
 
02.09.09
11:20
(4) Спасибо за ссылку, но проблема не столько в 1С, сколько в обработчике событий от датчиков - его придётся переписывать.
P.S. А у серверной Оси есть какие-то ограничения ?
6 Витязь
 
02.09.09
11:21
(5) Без понятия, наверно есть, только порог намного выше.
7 smaharbA
 
02.09.09
11:55
У тебя не открыты они, а просто создаются
8 smaharbA
 
02.09.09
11:56
хотя вру
правдо тут еще и массив
9 Fragster
 
гуру
02.09.09
11:59
переходите на линукс, там это реализовано (с)
10 zva
 
02.09.09
12:15
Для ХР Prof

HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management.
Параметр IoPageLockLimit (REG_DWORD) = 65536 (Decimal) /10000 (Hex)

HKLM\System\CurentControlSet\Servises\lanmanserver\parameters.
Параметр Size (Dword) = 3
HKLM\System\CurentControlSet\Control\Session Manager\Memory Menegment
Параметр LargeSystemCache (Dword) = 1
11 Torquader
 
02.09.09
13:19
(6) А насколько выше ? Просто, если там хотя бы 65536 можно, то можно задуматься о серверной ОС, а если там получается 8192 (предполагая, что 16384->65536 даёт 2048->8192) то нафиг такая "серверная" Ось.
(7) У меня - именно открыты, причём на запись.
(9) Вот как раз об этом и думаю, так как про Windows мнение, которая здесь цензура вырезает.
(10) Попробую поиграться параметрами.

P.S. вот такими "засадами" и "сюрпризами" вас всегда "радует" Microsoft.
12 yukon
 
02.09.09
13:33
(11) Во всем виноват Гейтс!

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

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

Решение в (10) или ConfigNT тебе в руки.
13 Torquader
 
02.09.09
13:41
(12) Я понимаю, что Ось - несерверная.
Просто интересно, а в серверной Оси мы на те же грабли наступим ?
14 smaharbA
 
02.09.09
13:42
(13) в (0) скорее не ограничение на открытые файлы, а что то с ресурсами
15 wuff
 
02.09.09
13:51
(13) - нет
16 yukon
 
02.09.09
13:51
(14) В журнале событий обычно пишется ошибка:
Тип события:    Ошибка
Источник события:    Srv
Категория события:    Отсутствует
Код события:    2017
...
Описание:
Сервер не смог выделить память из невыгружаемого пула памяти, так как достигнут указанный в конфигурации верхний предел.

Вроде все внятно написано.
17 smaharbA
 
02.09.09
13:53
(15) правдо ?
18 smaharbA
 
02.09.09
13:54
(16) что там такое написано ?
19 wuff
 
02.09.09
13:57
(17) - а почему неправда?
20 yukon
 
02.09.09
13:59
(18) Ну мне лично стало понятно куда копать. гугль и microsft.com творят чудеса.

вопрос только в том а появилась ли такая ошибка в (0), а то разговор беспредметен - точнее он про МОЮ решенную проблему, а не нерешенную проблему из (0)
21 smaharbA
 
02.09.09
14:10
(19) где написано про "неправда" ?
22 smaharbA
 
02.09.09
14:10
(20) куда копать, то ясно, а вот в (16) не совсем ясно

по сути различий нет, между системами
23 wuff
 
02.09.09
14:12
(21) - как сказал бы наш гениальный товарисч: "не буквоедствуй!" ;)
24 yukon
 
02.09.09
14:25
(22) между какими системами в (16) ты не видишь различия?
25 smaharbA
 
02.09.09
14:32
---------------------------
Сервер сценариев Windows
---------------------------
Скукожились на 16383


---------------------------
ОК  
---------------------------
26 Torquader
 
02.09.09
14:38
(25) Это какая "Ось" скукожилась ?
27 smaharbA
 
02.09.09
14:40
(26) и клиент и сервер вин ХП

это называется

Признак оптимизации сервера для выделения службам доступа к файлам и принтерам максимально возможного числа ресурсов.

но в ХП нет интерактивного выбора, свойств Службы общего доступа к файлам и принтерам

отсюда и size=3
и перезапуск службы сервер
28 smaharbA
 
02.09.09
14:42
по умолчанию в ХП оптимизация памяти "Наименьшая занимаемая память"
29 Torquader
 
02.09.09
14:43
Понятно, оптимизация потребует установки памяти (так как при её включении всё просто "тормозит").
А "замечательный" предел в 16384 можно как-то "перешагнуть" ? Или это уже надо dll "руками" ?
30 smaharbA
 
02.09.09
14:43
в (10) все уже есть
от МС - http://support.microsoft.com/kb/232271
31 smaharbA
 
02.09.09
14:48
а куда тебе больше ? это на одну сессию !!!
32 smaharbA
 
02.09.09
14:48
на каждую.
33 Torquader
 
02.09.09
14:52
(32) Спасибо, буду пробовать - кроме того, "замечательный" сервис придётся "научить" обходиться меньшим количеством файлов (просто данные каждой карточки сейчас сохраняются в отдельный файл, и в момент выгрузки "умная" система открывает и все их блокирует. В памяти этого "чуда" помещается 65536 карт, по 4 Кб информации на каждую - в момент выгрузки карточек на сетевой диск всей сети "приходит белая лиса").