powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
9 сообщений из 9, страница 1 из 1
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35518753
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
История:
"Подвис" сервер IDS9.4 UC8 после попытки одной из сессий выполнить большое количество удалений (с большим количеством блокировок).

Анализ online.log показал, что:
online.log...
dynamically allocated 100000 locks (15 раз)
10:35:32 dynamically allocated 100000 locks
10:35:36 shmat: [ENOMEM][12]: out of available data space, check system memory parameters (e.g. MAXMEM).

10:35:36 out of virtual shared memory

10:35:37 Assert Warning: Lock table overflow - user id 79, session id 92
10:35:37 IBM Informix Dynamic Server Version 9.40.UC8
10:35:37 Who: Session(18923, xxx@yyy, 2764, 0x94ef5b38)
Thread(301370, sqlexec, 874eb6d0, 1)
File: rslock.c Line: 2367
10:35:37 Results: Memory allocation error.

10:35:37 Action: Make more virtual memory available to Dynamic Server
10:35:37 stack trace for pid 9629 written to /usr/local/informix/tmp/af.9d22ecc8
10:35:37 See Also: /usr/local/informix/tmp/af.9d22ecc8
10:35:37 Lock table overflow - user id 79, session id 92
10:35:38 shmat: [ENOMEM][12]: out of available data space, check system memory parameters (e.g. MAXMEM).

10:35:38 out of virtual shared memory

...

и далее такие же Assert для кучи пользователей...

То есть, сервер выделял динамически по 100 000 блокировок пока не закончилась shared memory.
После чего все сессии пытающиеся получить блокировку (в том числе и новые) "подвисали".
Вылечилось рестартом IDS.

Рассуждения: В старом добром IDS 7.31 параметр конфигурации LOCKS резервировал и одновременно ограничивал сверху максимальное количество блокировок. Начиная с 9.30 IDS использует LOCKS для первичной инициализации массива блокировок и при необходимости сам набрасывает по 100 000 дополнительно.

Вопрос: Можно ли в такой ситуации:
1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет?
2) ограничить всё-таки максимальное количество блокировок (лучше получить отлуп на жадном клиенте, чем "подвесить" работу всего сервера)...
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35518780
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мдя..
В док-ции к 11.50 даже такого параметра, как LOCKS нету...
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35519149
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35519544
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яковлев Павел АнатоЛойМдя..
В док-ции к 11.50 даже такого параметра, как LOCKS нету...

ээээ а вот это про что ?

http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=/com.ibm.adref.doc/ids_adr_0094.htm

http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=/com.ibm.perf.doc/ids_prf_435.htm

Виноват, смотрел в русской версии сайта - и разделов, на которые Вы ссылаетесь, просто нет в оглавлении (левая панель) :(. Если бродить по ссылкам в правой панели "Справочника администратора" - таки всё нормально :). Даже русскую версию нашёл :).
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35519898
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой Вопрос: Можно ли в такой ситуации:
1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет?
нельзя
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35520059
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тан АнатоЛой Вопрос: Можно ли в такой ситуации:
1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет?
нельзя

Тогда в данном случае реализация "динамичности" блокировок получается однобокая - не перегружая сервер нарастить блокировки можем (а точнее сервер это делает САМ, и, с точки зрения администратора, процесс наращивания практически неуправляемый), а вот уменьшить можно только перезагрузкой IDS . DSA пора переименовать в DSA+Only[], поскольку с реализацией "-" имеются натяжки...
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35520321
Алексан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой Вопрос: Можно ли в такой ситуации:
1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет?
2) ограничить всё-таки максимальное количество блокировок (лучше получить отлуп на жадном клиенте, чем "подвесить" работу всего сервера)...1. ИМХО - нельзя; onmode -F освобождает неиспользованные блоки памяти, а тут они заняты под блокировки.
2. Сервер добавляет блокировки не более 15 раз и не более 100 тыс за раз, насколько я помню, так что объём памяти всё же ограничен. То ли я где-то читал, то ли это моё личное подозрение, но мне кажется, что они могут добавляться лишь в первый виртуальный сегмент.

АнатоЛойВылечилось рестартом IDS Транзакцию можно откатить, а виртуальных сегментов - добавить (если память есть, конечно).

АнатоЛойТогда в данном случае реализация "динамичности" блокировок получается однобокая - не перегружая сервер нарастить блокировки можем (а точнее сервер это делает САМ, и, с точки зрения администратора, процесс наращивания практически неуправляемый), а вот уменьшить можно только перезагрузкой IDS . DSA пора переименовать в DSA+Only[], поскольку с реализацией "-" имеются натяжки... В 7-ке пришлось бы перегружать сервер для добавления локов, так что не уверен, что стало хуже.
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35520786
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексан
АнатоЛой Вопрос: Можно ли в такой ситуации:
1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет?
2) ограничить всё-таки максимальное количество блокировок (лучше получить отлуп на жадном клиенте, чем "подвесить" работу всего сервера)...
1. ИМХО - нельзя; onmode -F освобождает неиспользованные блоки памяти, а тут они заняты под блокировки.


Эти блоки не "заняты", они:
1. были "зарезервированы"
2. могут полностью или частично быть "заняты блокировками" в такой-то момент времени - в соответствии с собственно существующими в этот момент времени блокировками. И после снятия блокировок - практически полностью освободиться... Я к тому, что операцию уменьшения этого массива можно легко представить...

Алексан
АнатоЛой Вопрос: Можно ли в такой ситуации:
2) ограничить всё-таки максимальное количество блокировок (лучше получить отлуп на жадном клиенте, чем "подвесить" работу всего сервера)...

2. Сервер добавляет блокировки не более 15 раз и не более 100 тыс за раз, насколько я помню, так что объём памяти всё же ограничен.
Для 11-ки в доке написано максимум 99 раз...

Алексан
То ли я где-то читал, то ли это моё личное подозрение, но мне кажется, что они могут добавляться лишь в первый виртуальный сегмент.
Вот это проверить пока не пробовал.... И если это так - реализация "динамичности" опять может оказаться грустной...


Алексан
АнатоЛойВылечилось рестартом IDS Транзакцию можно откатить, а виртуальных сегментов - добавить (если память есть, конечно).


С памятью, как вы помните на 32-битном Линухе есть ограничения в 2ГБ с хвостом... И представьте, что этот максимум уже выеден... Поэтому логичен вопрос: а что я в конце концов, могу "динамично" отрезать у своего сервера, чтобы он мог добавить себе ещё блокировок?! Кроме "обрезания" сессий и onmode -F чего-то ничего и не придумывается....

Алексан

АнатоЛойТогда в данном случае реализация "динамичности" блокировок получается однобокая - не перегружая сервер нарастить блокировки можем (а точнее сервер это делает САМ, и, с точки зрения администратора, процесс наращивания практически неуправляемый), а вот уменьшить можно только перезагрузкой IDS . DSA пора переименовать в DSA+Only[], поскольку с реализацией "-" имеются натяжки...
В 7-ке пришлось бы перегружать сервер для добавления локов, так что не уверен, что стало хуже.

Не совсем, в 7-ке ещё можно было бы подумать как обойтись меньшим количеством локов, причём времени на раздумывание скоко хошь:после обрезания жадной сессии остальные пользователи всё-таки могут и продолжают работать :(
...
Рейтинг: 0 / 0
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
    #35521405
АнатоЛой Яковлев Павел АнатоЛойМдя..
В док-ции к 11.50 даже такого параметра, как LOCKS нету...

ээээ а вот это про что ?

http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=/com.ibm.adref.doc/ids_adr_0094.htm

http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=/com.ibm.perf.doc/ids_prf_435.htm

Виноват, смотрел в русской версии сайта - и разделов, на которые Вы ссылаетесь, просто нет в оглавлении (левая панель) :(. Если бродить по ссылкам в правой панели "Справочника администратора" - таки всё нормально :). Даже русскую версию нашёл :).

Как там ? Ни когда не читайте поутрам советских газет ?

Читайте документацию только в оригинале - переводы и задерживаются и косяками страдают :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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