|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
История: "Подвис" сервер 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) ограничить всё-таки максимальное количество блокировок (лучше получить отлуп на жадном клиенте, чем "подвесить" работу всего сервера)... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2008, 17:36 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
Мдя.. В док-ции к 11.50 даже такого параметра, как LOCKS нету... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2008, 17:48 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
АнатоЛойМдя.. В док-ции к 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2008, 22:34 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
Яковлев Павел АнатоЛойМдя.. В док-ции к 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 Виноват, смотрел в русской версии сайта - и разделов, на которые Вы ссылаетесь, просто нет в оглавлении (левая панель) :(. Если бродить по ссылкам в правой панели "Справочника администратора" - таки всё нормально :). Даже русскую версию нашёл :). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 10:11 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
АнатоЛой Вопрос: Можно ли в такой ситуации: 1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет? нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 11:58 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
Тан АнатоЛой Вопрос: Можно ли в такой ситуации: 1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет? нельзя Тогда в данном случае реализация "динамичности" блокировок получается однобокая - не перегружая сервер нарастить блокировки можем (а точнее сервер это делает САМ, и, с точки зрения администратора, процесс наращивания практически неуправляемый), а вот уменьшить можно только перезагрузкой IDS . DSA пора переименовать в DSA+Only[], поскольку с реализацией "-" имеются натяжки... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 12:41 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
АнатоЛой Вопрос: Можно ли в такой ситуации: 1) без рестарта сервера освободить shared memory, выделенную под "лишние" блокировки? onmode -F поможет? 2) ограничить всё-таки максимальное количество блокировок (лучше получить отлуп на жадном клиенте, чем "подвесить" работу всего сервера)...1. ИМХО - нельзя; onmode -F освобождает неиспользованные блоки памяти, а тут они заняты под блокировки. 2. Сервер добавляет блокировки не более 15 раз и не более 100 тыс за раз, насколько я помню, так что объём памяти всё же ограничен. То ли я где-то читал, то ли это моё личное подозрение, но мне кажется, что они могут добавляться лишь в первый виртуальный сегмент. АнатоЛойВылечилось рестартом IDS Транзакцию можно откатить, а виртуальных сегментов - добавить (если память есть, конечно). АнатоЛойТогда в данном случае реализация "динамичности" блокировок получается однобокая - не перегружая сервер нарастить блокировки можем (а точнее сервер это делает САМ, и, с точки зрения администратора, процесс наращивания практически неуправляемый), а вот уменьшить можно только перезагрузкой IDS . DSA пора переименовать в DSA+Only[], поскольку с реализацией "-" имеются натяжки... В 7-ке пришлось бы перегружать сервер для добавления локов, так что не уверен, что стало хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 14:09 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
Алексан АнатоЛой Вопрос: Можно ли в такой ситуации: 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-ке ещё можно было бы подумать как обойтись меньшим количеством локов, причём времени на раздумывание скоко хошь:после обрезания жадной сессии остальные пользователи всё-таки могут и продолжают работать :( ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 16:19 |
|
IDS9.4 UC8, dynamically allocated locks и out of virtual shared memory
|
|||
---|---|---|---|
#18+
АнатоЛой Яковлев Павел АнатоЛойМдя.. В док-ции к 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 Виноват, смотрел в русской версии сайта - и разделов, на которые Вы ссылаетесь, просто нет в оглавлении (левая панель) :(. Если бродить по ссылкам в правой панели "Справочника администратора" - таки всё нормально :). Даже русскую версию нашёл :). Как там ? Ни когда не читайте поутрам советских газет ? Читайте документацию только в оригинале - переводы и задерживаются и косяками страдают :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 23:00 |
|
|
start [/forum/topic.php?fid=44&fpage=34&tid=1608023]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
529ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
95ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 689ms |
0 / 0 |