|
|
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Может быть кто-нибудь уже встречал такое: Informix Dynamic Server Version 9.30.TC1 на WIN2000 Server (оперативная память 2 Гбайт). при нагрузке > 20 сессий (клиенты с других машин)постоянно валится с сообщением в LOG: 15:49:59 Maximum server connections 27 15:50:21 Logical Log 28826 Complete. 15:53:16 Logical Log 28827 Complete. 15:53:47 Logical Log 28828 Complete. 15:54:25 Logical Log 28829 Complete. 15:54:42 Fuzzy Checkpoint Completed: duration was 1 seconds, 169 buffers not flushed. 15:54:42 Checkpoint loguniq 28830, logpos 0x25fa74 15:54:42 Maximum server connections 27 15:54:58 Logical Log 28830 Complete. 15:56:53 shmat: [ENOMEM][12]: out of available data space, check system MAXMEM 15:56:53 shmdt: errno = 22 15:56:53 create_tcb: cannot allocate memory 15:56:53 Assert Failed: Invalid Mutex Type 15:56:53 Informix Dynamic Server Version 9.30.TC1 15:56:53 Who: Session(2579, are@ALFM, 444, 0) Thread(28837, xchg_1.0, 0, 10) File: mt.c Line: 7556 15:56:53 stack trace for pid 1208 written to C:\tmp\af.748dfa05 15:56:53 See Also: C:\tmp\af.748dfa05, shmem.748dfa05.0 15:56:55 Releasing server from system block 15:56:55 shmat: [ENOMEM][12]: out of available data space, check system MAXMEM 15:56:55 shmdt: errno = 22 15:56:56 shmat: [ENOMEM][12]: out of available data space, check system MAXMEM 15:56:56 shmdt: errno = 22 15:57:06 Error writing 'C:\tmpshmem.748dfa05.0' errno = 112 15:57:06 PANIC: Attempting to bring system down 15:57:06 mt.c, line 7556, thread 28837, proc id 1208, Invalid Mutex Type. 16:33:59 Informix Dynamic Server Started. Часть ONCONFIG: # Shared Memory Parameters LOCKS 200000 # Maximum number of locks BUFFERS 300000 # Maximum number of shared buffers NUMAIOVPS 12 # Number of IO vps PHYSBUFF 4096 # Physical log buffer size (Kbytes) LOGBUFF 4096 # Logical log buffer size (Kbytes) CLEANERS 4 # Number of buffer cleaner processes SHMBASE 0x20000000 # 0xC000000L # Shared memory base address SHMVIRTSIZE 65536 # initial virtual shared memory segment size SHMADD 8192 # Size of new shared memory segments (Kbytes) SHMTOTAL 0 # Total shared memory (Kbytes). 0=>unlimited CKPTINTVL 300 # Check point interval (in sec) LRUS 200 # Number of LRU queues LRU_MAX_DIRTY 60 # LRU percent dirty begin cleaning limit LRU_MIN_DIRTY 50 # LRU percent dirty end cleaning limit TXTIMEOUT 300 # Transaction timeout (in sec) STACKSIZE 128 # Stack size (Kbytes) где найти этот MAXMEM? Или в другом месте смотреть? На Win2000 сервере других задач кроме IDS не выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 15:46 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Начнем с того что информикс у тебя 32bit, т.е. теоретически он не может адресовать больше чем 4 Gb оперативной памяти. Это теоретически, практически мне на AIX удалось захватить 32bit информиксу примерно 2.6 Gb оперативной памяти. При этом приходилось играться с параметрами BUFFERS, SHMVIRTSIZE и SHMADD, поскольку при значениях больше определенного информикс также начинал ругаться на SHMSEG (конфиг AIX'а) и достичь 2.6 Gb уже не удавалось. Насчет Windows возможно что там стоит некое ограничение для приложений, не позволяющее взять им больше памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 16:12 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Проблема тут не в > 2Гб. Ведь у человека всего 2Гб :-). Судя по всему виноват маленькие SHMVIRTSIZE,SHMADD и большой BUFFERS (1.2Гб). Кроме того, неизвестно сколько занимает сама система и работает на сервере что-нибудь еще кроме Informix-a. Видимо где-нибудь memory leak или просто архитектура такова, что клиенты жрут много памяти, точнее сказать можно посмотрев onstat -g seg. Далее постараться мимизировать количество сегментов памяти. В целом по onconfig-у. Максимальное значение LRUS - 127 (хотя тут версия 9.3 и я могу ошибаться). Для такого количества буфферов и LRUS-ов 4-ех CLEANERS может оказаться маловато, правда опять таки мы не знаем количества чанков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 16:58 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Я и не говорю что он хочет взять памяти больше 2G : ))) Просто я привел пример, что дело может быть в конкретных возможностях ОС и не более того. А кол-во сегментов действительно надо минимизировать, путем увеличения SHMVIRTSIZE, раз уж он написал что ничего кроме информикса на сервере не работает. (см. последнюю строку его постинга) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 17:06 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Вдогонку, минимизировать количество сегментов можно за счет увеличения SHMVIRTSIZE,SHMADD. Прошерстите log на предмет сколько новых сегментов памяти добавилось с момента старта сервера умножте данную цифру на 8192 и добавьте к SHMVIRTSIZE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 17:09 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
После старта IDS cтрочек типа Dynamically allocated new virtual shared memory segment (size 8192KB) встретилось 76 раз Значит 622 592К добавилось. Да плюс BUFFERS (1.2Гб). Если я увеличу SHMVIRTSIZE, а информиксу опять понадобятся байты то за 2 Гб вылезем? Нужно чтоб Informix не валился если память кончилась. Или 76 сегментов - это критично? Может SHMTOTAL поможет? Что в SHMTOTAL конкретно поставить в моем случае? 2Г или 1,5 Гб , чтоб для ОС место оставить? Как вычислить? А чанков у меня 310 шт. по 2 Гб CLEANERS увеличить до скольки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 18:10 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
1. Увеличить обязательно, на нормально настроенной системе при нормальных условиях недолжно быть более 3-4 сегментов памяти (в зависимости от платформы). На некоторых платформах 5-6 сегментов было уже весьма критично для производительности. 2. Необходимо найти причину утечки памяти, потому как 600Мб для 20 клиентов, это чересчур. onstat -g ses для начала подойдет. 3. С помощью SHMTOTAL можно ограничить максимальный размер памяти, сожраной сервером, мой опыт в борьбе с нехваткой памяти был так давно и точно устарел, поэтому я не уверен, что сделает сервер при достижении данного лимита, надеюсь что просто вернет ошибку сессии, испытывающей потребность в памяти. Задать его нужно столько, чтобы никто не вылетел в swap ;-). 4. В принципе где-то рекомендовалось сделать CLEANERS-ов по количеству чанков, но имхо это было во времена когда каждый диск приходилось по чанку, тем более что больше 128 на 32-битных платформах его не поставить. Вообщем сие сильно зависит от характера твоего приложения и того чего-ты хочешь добиться (например сократить время чекпоинта или ускорить работу юзеров при обычных условиях). Вообщем, лично у меня стоит 40 на 67 чанков, мне хватает, мониторить их нагрузку можно по onstat -F, -R, -u. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 18:39 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Cleaners рекомендуют ставить равным LRUs. SHMADD и начальное значение однозначно увеличить. На HP при числе сегментов больше 4 или 7 (не помню) скачком возрастает время переключения между сегментами, у меня где-то даже программка валялась. В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 04:33 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Вот древнее, но не утрачившее своей актуальности обсуждение на тему CLEANERS & LRUS (официантов и столиков :-). Очередной раз респект Василию Шульженко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 10:42 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Сказано достаточно много и правильно. Хочу добавить от себя - сталкивались с подобной проблемой на 9.40 ТС2, но у нас была проблема в ОДБС драйверах. Как ни странно, проблема изчесла в 9.30 ТС3. Проблема была связана с работой некоторых курсоров. Попробуйте обновиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 17:02 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Было: SHMBASE 0x20000000 Я просто вернул параметр в значение по умолчанию: SHMBASE 0xC000000L и пока серевер не валится. (Может быть свалится в будующем, когда потребуется еще память). Где-то я читал рекомендации изменять SHMBASE для WINNT 4.0, чтобы не конфликтовать с DLL ???? Похоже горе было от ума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 10:18 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Все рекомендации по SHMBASE к любой версии находятся только в release notes $INFORMIXDIR/release/*/*/*. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 10:34 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
olleg Было: SHMBASE 0x20000000 Я просто вернул параметр в значение по умолчанию: SHMBASE 0xC000000L и пока серевер не валится. (Может быть свалится в будующем, когда потребуется еще память). Сервер до сих пор не валится. НО:(как стало известно позже) кроме изменения SHMBASE были созданы нужные индексы и выполнено update statistics ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 18:15 |
|
||
|
MAXMEM
|
|||
|---|---|---|---|
|
#18+
Далее пьяный бред: SHMBASE 0x20000000 -- Нижние 512Мб из доступных нам 2Г резервируем под сегмент кода? BUFFERS 1171,875Мб SHMVIRTSIZE 65Мб Остаток от 2Г = 299,125МБ / 8Мб = 37 т.е. больше 37 сегментов он схватить не мог (откуда 76?). ----------------------------------------------------------- Решительный шаг вперед -- результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 21:42 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=32524736&tid=1608789]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 318ms |

| 0 / 0 |
