![]() |
![]() |
|
Максимальное количество открытых файлов (несерверная ОС). | ☑ | ||
---|---|---|---|---|
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 Кб информации на каждую - в момент выгрузки карточек на сетевой диск всей сети "приходит белая лиса").
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |