powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / MAXMEM
14 сообщений из 14, страница 1 из 1
MAXMEM
    #32524264
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть кто-нибудь уже встречал такое:
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 не выполняется.
...
Рейтинг: 0 / 0
MAXMEM
    #32524355
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начнем с того что информикс у тебя 32bit, т.е. теоретически он не может адресовать больше чем 4 Gb оперативной памяти.

Это теоретически, практически мне на AIX удалось захватить 32bit информиксу примерно 2.6 Gb оперативной памяти. При этом приходилось играться с параметрами BUFFERS, SHMVIRTSIZE и SHMADD, поскольку при значениях больше определенного информикс также начинал ругаться на SHMSEG (конфиг AIX'а) и достичь 2.6 Gb уже не удавалось.

Насчет Windows возможно что там стоит некое ограничение для приложений, не позволяющее взять им больше памяти.
...
Рейтинг: 0 / 0
MAXMEM
    #32524465
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема тут не в > 2Гб. Ведь у человека всего 2Гб :-).
Судя по всему виноват маленькие SHMVIRTSIZE,SHMADD
и большой BUFFERS (1.2Гб). Кроме того, неизвестно сколько занимает сама система и работает на сервере что-нибудь еще кроме Informix-a.
Видимо где-нибудь memory leak или просто архитектура такова, что клиенты жрут много памяти, точнее сказать можно посмотрев onstat -g seg. Далее постараться мимизировать количество сегментов памяти.

В целом по onconfig-у. Максимальное значение LRUS - 127 (хотя тут версия 9.3 и я могу ошибаться). Для такого количества буфферов и LRUS-ов 4-ех CLEANERS может оказаться маловато, правда опять таки мы не знаем количества чанков.
...
Рейтинг: 0 / 0
MAXMEM
    #32524499
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и не говорю что он хочет взять памяти больше 2G : )))

Просто я привел пример, что дело может быть в конкретных возможностях ОС и не более того. А кол-во сегментов действительно надо минимизировать, путем увеличения SHMVIRTSIZE, раз уж он написал что ничего кроме информикса на сервере не работает. (см. последнюю строку его постинга)
...
Рейтинг: 0 / 0
MAXMEM
    #32524507
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку, минимизировать количество сегментов можно за счет увеличения
SHMVIRTSIZE,SHMADD. Прошерстите log на предмет сколько новых сегментов памяти добавилось с момента старта сервера умножте данную цифру на 8192 и добавьте к SHMVIRTSIZE.
...
Рейтинг: 0 / 0
MAXMEM
    #32524677
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После старта 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 увеличить до скольки?
...
Рейтинг: 0 / 0
MAXMEM
    #32524736
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Увеличить обязательно, на нормально настроенной системе при нормальных условиях недолжно быть более 3-4 сегментов памяти (в зависимости от платформы). На некоторых платформах 5-6 сегментов было уже весьма критично для производительности.
2. Необходимо найти причину утечки памяти, потому как 600Мб для 20 клиентов, это чересчур.
onstat -g ses
для начала подойдет.
3. С помощью SHMTOTAL можно ограничить максимальный размер памяти, сожраной сервером, мой опыт в борьбе с нехваткой памяти был так давно и точно устарел, поэтому я не уверен, что сделает сервер при достижении данного лимита, надеюсь что просто вернет ошибку сессии, испытывающей потребность в памяти. Задать его нужно столько, чтобы никто не вылетел в swap ;-).
4. В принципе где-то рекомендовалось сделать CLEANERS-ов по количеству чанков, но имхо это было во времена когда каждый диск приходилось по чанку, тем более что больше 128 на 32-битных платформах его не поставить. Вообщем сие сильно зависит от характера твоего приложения и того чего-ты хочешь добиться (например сократить время чекпоинта или ускорить работу юзеров при обычных условиях). Вообщем, лично у меня стоит 40 на 67 чанков, мне хватает, мониторить их нагрузку можно по onstat -F, -R, -u.
...
Рейтинг: 0 / 0
MAXMEM
    #32527261
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cleaners рекомендуют ставить равным LRUs.
SHMADD и начальное значение однозначно увеличить. На HP при числе сегментов больше 4 или 7 (не помню) скачком возрастает время переключения между сегментами, у меня где-то даже программка валялась.

В таком вот аксепте
...
Рейтинг: 0 / 0
MAXMEM
    #32527565
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот древнее, но не утрачившее своей актуальности

обсуждение
на тему CLEANERS & LRUS (официантов и столиков :-). Очередной раз респект Василию Шульженко.
...
Рейтинг: 0 / 0
MAXMEM
    #32545191
Отшельник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сказано достаточно много и правильно.
Хочу добавить от себя - сталкивались с подобной проблемой на 9.40 ТС2, но у нас была проблема в ОДБС драйверах. Как ни странно, проблема изчесла в 9.30 ТС3.
Проблема была связана с работой некоторых курсоров.
Попробуйте обновиться.
...
Рейтинг: 0 / 0
MAXMEM
    #32545952
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Было:
SHMBASE 0x20000000

Я просто вернул параметр в значение по умолчанию:
SHMBASE 0xC000000L
и пока серевер не валится.
(Может быть свалится в будующем, когда потребуется еще память).

Где-то я читал рекомендации изменять SHMBASE для WINNT 4.0,
чтобы не конфликтовать с DLL ???? Похоже горе было от ума.
...
Рейтинг: 0 / 0
MAXMEM
    #32545996
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все рекомендации по SHMBASE к любой версии находятся только в release notes $INFORMIXDIR/release/*/*/*.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
MAXMEM
    #33477366
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olleg
Было:
SHMBASE 0x20000000

Я просто вернул параметр в значение по умолчанию:
SHMBASE 0xC000000L
и пока серевер не валится.
(Может быть свалится в будующем, когда потребуется еще память).

Сервер до сих пор не валится.
НО:(как стало известно позже) кроме изменения SHMBASE были созданы нужные индексы и выполнено update statistics
...
Рейтинг: 0 / 0
MAXMEM
    #33477648
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далее пьяный бред:

SHMBASE 0x20000000 -- Нижние 512Мб из доступных нам 2Г резервируем под сегмент кода?
BUFFERS 1171,875Мб
SHMVIRTSIZE 65Мб

Остаток от 2Г = 299,125МБ / 8Мб = 37 т.е. больше 37 сегментов он схватить не мог (откуда 76?).


-----------------------------------------------------------
Решительный шаг вперед -- результат хорошего пинка сзади
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / MAXMEM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]