powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Утечка памяти (возм., из-за trigger after commit)
42 сообщений из 42, показаны все 2 страниц
Утечка памяти (возм., из-за trigger after commit)
    #38392291
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озадачил меня ФБ. Заметил, что в процессе работы медленно, но верно утекает память (судя по всему, по нес-ку кило на каждую транзакцию). Всё перебрал, методом исключения вышел на триггер
TRIGGER TRIG_TR_COMMIT ON TRANSACTION COMMIT POSITION 0
Если его тело закомментировать (при этом оставив проверку:
Код: sql
1.
2.
3.
4.
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    /* ... */
  END


- утечки нет. Стоит раскомментировать совершенно безобидную строчку
Код: sql
1.
2.
3.
4.
5.
6.
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    SELECT Debug_Log FROM Options
      INTO :Debug_Log;
    /* ... */
  END


- утечка есть.

Детали конфигурации:
OS Win7 Pro x64
Server Version: WI-V2.5.3.26690 Firebird 2.5 (пробовал и на релизном 2.5.2)
Server Implementation: Firebird/x86-64/Windows NT
Service Version: 2
Архитектура SuperClassic (fb_inet_server.exe -s DefaultInstance -m)

БД: ODS 11.2
Устройство: БД выполняет функции буфера для данных, которые сыпятся в реальном времени. Старые данные удаляются. Инсерты объединяются в транзакции пачками до 90 штук. Для нижеприведенных тестов запускал имитацию 300 источников данных с интервалом генерации раз в секунду. Подключение - единственное (соответственно никаких проблем с блокировкой доступа быть не должно).
Статистика базы после 5 мин. работы теста (утечка есть):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Database header page information:
        Flags                   0
        Checksum                12345
        Generation              135216
        Page size               16384
        ODS version             11.2
        Oldest transaction      126719
        Oldest active           126720
        Oldest snapshot         126719
        Next transaction        126722
        Bumped transaction      1
        Sequence number         0
        Next attachment ID      8483
        Implementation ID       26
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Aug 22, 2013 17:53:24
        Attributes              force write

    Variable header data:
        Sweep interval:         5000
        *END*



Утечку определяю через MON$MEMORY_USAGE (а также Process Explorer-ом, столбцы Private bytes и Working set):
run.bat:
Код: sql
1.
2.
3.
4.
5.
6.
7.
@echo off
echo NOW_                  STAT_ID STAT_GR              MEM_USED             MEM_ALLOC  > mem.log
echo ================ ============ ======= ===================== ===================== >> mem.log
:show
echo SET HEADING OFF; IN mem_mon.sql; | isql_shell.bat | find "M_ " >> mem.log
sleep 1000
goto :show



isql_shell.bat:
Код: sql
1.
2.
3.
4.
5.
6.
7.
@echo off

set CDir=%~dp0%
set User=SYSDBA
set Pass=masterkey

"%CDir%\isql.exe" -q -u %User% -p %Pass% RTData



mem_mon.sql:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
    'M_ ' || current_time as Now_,
    MON$STAT_ID as STAT_ID,
    MON$STAT_GROUP as STAT_GR,
    MON$MEMORY_USED as MEM_USED,
    MON$MEMORY_ALLOCATED as MEM_ALLOC
  from MON$MEMORY_USAGE
  where MON$MEMORY_USED=(select max(MON$MEMORY_USED) from MON$MEMORY_USAGE);
commit;


('M_ ' - для фильтрации строк, чтобы в лог писалась только нужная инфа; Sleep - моя программка для создания паузы)


Итоги:
триггер с одним значимым оператором


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/* Trigger: TRIG_TR_COMMIT */
CREATE TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
  DECLARE VARIABLE Debug_Log DOM_BOOL;
BEGIN
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    SELECT Debug_Log FROM Options
      INTO :Debug_Log;
    /* ... */
  END
END



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
M_ 14:11:43.0000            6       1               2407056               3612672 
M_ 14:11:44.0000            6       1               2401608               3612672 
M_ 14:11:45.0000            6       1               2420968               3612672 
M_ 14:11:46.0000            6       1               2416320               3612672 
M_ 14:11:47.0000            6       1               2437880               3612672 
M_ 14:11:48.0000            6       1               2402144               3612672 
M_ 14:11:49.0000            6       1               2434816               3612672 
M_ 14:11:50.0000            6       1               2429560               3612672 
M_ 14:11:52.0000            6       1               2452368               3678208 
M_ 14:11:53.0000            6       1               2420448               3678208 
M_ 14:11:54.0000            6       1               2425024               3678208 
M_ 14:11:55.0000            6       1               2429600               3678208 
M_ 14:11:56.0000            6       1               2468800               3678208 
M_ 14:11:57.0000            6       1               2463376               3678208 
M_ 14:11:58.0000            6       1               2444600               3678208 
M_ 14:11:59.0000            6       1               2449176               3678208 
M_ 14:12:00.0000            6       1               2454896               3678208 
M_ 14:12:01.0000            6       1               2459472               3678208 
M_ 14:12:02.0000            6       1               2466336               3678208 
M_ 14:12:03.0000            6       1               2470912               3678208 
M_ 14:12:04.0000            6       1               2476632               3678208 
M_ 14:12:05.0000            6       1               2483496               3678208 
M_ 14:12:06.0000            6       1               2488072               3678208 
M_ 14:12:08.0000            6       1               2492648               3743744 
M_ 14:12:09.0000            6       1               2498368               3743744 
M_ 14:12:10.0000            6       1               2502944               3743744 
M_ 14:12:11.0000            6       1               2508664               3743744 
M_ 14:12:12.0000            6       1               2553496               3743744 
M_ 14:12:13.0000            6       1               2551536               3743744 
M_ 14:12:14.0000            6       1               2566304               3743744 
M_ 14:12:15.0000            6       1               2569464               3809280 
M_ 14:12:16.0000            6       1               2538992               3743744 
M_ 14:12:17.0000            6       1               2576664               3809280 
M_ 14:12:18.0000            6       1               2575688               3809280 
M_ 14:12:19.0000            6       1               2584920               3809280 
M_ 14:12:20.0000            6       1               2560296               3809280 
M_ 14:12:21.0000            6       1               2566016               3809280 
M_ 14:12:22.0000            6       1               2571024               3809280 
M_ 14:12:23.0000            6       1               2604384               3809280 
M_ 14:12:25.0000            6       1               2579744               3809280 
M_ 14:12:26.0000            6       1               2585032               3809280 
M_ 14:12:27.0000            6       1               2591032               3809280 
M_ 14:12:28.0000            6       1               2596752               3809280 
M_ 14:12:29.0000            6       1               2627888               3874816 
M_ 14:12:30.0000            6       1               2641456               3874816 
M_ 14:12:31.0000            6       1               2612768               3874816 
M_ 14:12:32.0000            6       1               2618488               3874816 
M_ 14:12:33.0000            6       1               2624208               3874816 
M_ 14:12:34.0000            6       1               2654096               3874816 
M_ 14:12:35.0000            6       1               2641248               3874816 
M_ 14:12:36.0000            6       1               2641368               3874816 
M_ 14:12:37.0000            6       1               2647088               3874816 
M_ 14:12:38.0000            6       1               2652808               3874816 
M_ 14:12:40.0000            6       1               2658528               3874816 
M_ 14:12:41.0000            6       1               2664248               3874816 
M_ 14:12:42.0000            6       1               2669968               3874816 
M_ 14:12:43.0000            6       1               2678408               3940352 
M_ 14:12:44.0000            6       1               2723720               3940352 
M_ 14:12:45.0000            2       1               1830040               2433024 
M_ 14:12:46.0000            2       1               1830040               2433024 





триггер с одним только условием проверки

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR ALTER TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
BEGIN
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
  END
END



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
M_ 14:04:50.0000            6       1               2397000               3612672 
M_ 14:04:51.0000            6       1               2374192               3612672 
M_ 14:04:52.0000            6       1               2409120               3612672 
M_ 14:04:53.0000            6       1               2412104               3612672 
M_ 14:04:54.0000            6       1               2406480               3612672 
M_ 14:04:55.0000            6       1               2416752               3612672 
M_ 14:04:56.0000            6       1               2385424               3612672 
M_ 14:04:57.0000            6       1               2402960               3612672 
M_ 14:04:58.0000            6       1               2401696               3612672 
M_ 14:04:59.0000            6       1               2374192               3612672 
M_ 14:05:00.0000            6       1               2403392               3612672 
M_ 14:05:01.0000            6       1               2374192               3612672 
M_ 14:05:02.0000            6       1               2393528               3612672 
M_ 14:05:03.0000            6       1               2374192               3612672 
M_ 14:05:05.0000            6       1               2374624               3612672 
M_ 14:05:06.0000            6       1               2373760               3612672 
M_ 14:05:07.0000            6       1               2373760               3612672 
M_ 14:05:08.0000            6       1               2408272               3612672 
M_ 14:05:09.0000            6       1               2390664               3612672 
M_ 14:05:10.0000            6       1               2403720               3612672 
M_ 14:05:11.0000            6       1               2411360               3612672 
M_ 14:05:12.0000            6       1               2406456               3612672 
M_ 14:05:13.0000            6       1               2396680               3612672 
M_ 14:05:14.0000            6       1               2409032               3612672 
M_ 14:05:15.0000            6       1               2393880               3612672 
M_ 14:05:16.0000            6       1               2397432               3612672 
M_ 14:05:17.0000            6       1               2395200               3612672 
M_ 14:05:18.0000            6       1               2374192               3612672 
M_ 14:05:19.0000            6       1               2397000               3612672 
M_ 14:05:21.0000            6       1               2374624               3612672 
M_ 14:05:22.0000            6       1               2393096               3612672 
M_ 14:05:23.0000            6       1               2374192               3612672 
M_ 14:05:24.0000            6       1               2412104               3612672 
M_ 14:05:25.0000            6       1               2411280               3612672 
M_ 14:05:26.0000            6       1               2405152               3612672 
M_ 14:05:27.0000            6       1               2415920               3612672 
M_ 14:05:28.0000            6       1               2415920               3612672 
M_ 14:05:29.0000            6       1               2408392               3612672 
M_ 14:05:30.0000            6       1               2407808               3612672 
M_ 14:05:31.0000            6       1               2403536               3612672 
M_ 14:05:32.0000            6       1               2385424               3612672 
M_ 14:05:33.0000            6       1               2375056               3612672 
M_ 14:05:34.0000            6       1               2385424               3612672 
M_ 14:05:35.0000            6       1               2373760               3612672 
M_ 14:05:37.0000            8       1               2380936               3612672 
M_ 14:05:38.0000            8       1               2374192               3612672 
M_ 14:05:39.0000            8       1               2374192               3612672 
M_ 14:05:40.0000            8       1               2393536               3612672 
M_ 14:05:41.0000            8       1               2399584               3612672 
M_ 14:05:42.0000            8       1               2393608               3612672 
M_ 14:05:43.0000            8       1               2401032               3612672 
M_ 14:05:44.0000            8       1               2411280               3612672 
M_ 14:05:45.0000            8       1               2386288               3612672 
M_ 14:05:46.0000            8       1               2408680               3612672 
M_ 14:05:47.0000            8       1               2401944               3612672 
M_ 14:05:48.0000            8       1               2402144               3612672 
M_ 14:05:49.0000            8       1               2395288               3612672 
M_ 14:05:50.0000            8       1               2400328               3612672 
M_ 14:05:52.0000            8       1               2399120               3612672 
M_ 14:05:53.0000            8       1               2404432               3612672 
M_ 14:05:54.0000            8       1               2404432               3612672 
M_ 14:05:55.0000            8       1               2373760               3612672 
M_ 14:05:56.0000            8       1               2390664               3612672 
M_ 14:05:57.0000            8       1               2411280               3612672 
M_ 14:05:58.0000            8       1               2393104               3612672 
M_ 14:05:59.0000            8       1               2373760               3612672 
M_ 14:06:00.0000            8       1               2374192               3612672 
M_ 14:06:01.0000            8       1               2380856               3612672 
M_ 14:06:02.0000            8       1               2398680               3612672 
M_ 14:06:03.0000            8       1               2398760               3612672 
M_ 14:06:05.0000            8       1               2374624               3612672 
M_ 14:06:06.0000            8       1               2404432               3612672 
M_ 14:06:07.0000            8       1               2373760               3612672 
M_ 14:06:08.0000            8       1               2406248               3612672 
M_ 14:06:09.0000            8       1               2410416               3612672 
M_ 14:06:10.0000            8       1               2410416               3612672 
M_ 14:06:11.0000            8       1               2406024               3612672 
M_ 14:06:12.0000            8       1               2415936               3612672 
M_ 14:06:13.0000            8       1               2393536               3612672 


и так в течение получаса.


Уже голову сломал, пытаясь дознаться, что же это за беда. Готов предоставить любую другую инфу.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392322
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalГотов предоставить любую другую инфу.
Покажи триггер целиком, без цензурных многоточек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392327
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

не помешает ещё раскрыть домен DOM_BOOL и привести DLL таблицы Options
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392366
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

текст триггера привел целиком, многоточки в /* */ обозначают то, что закомментировано. Думаю, этого достаточно, чтобы не влиять на ситуацию :)

Симонов Денис,

ничего сверхъестественного
Код: sql
1.
2.
3.
CREATE DOMAIN DOM_BOOL AS
SMALLINT
CHECK (VALUE IN (0, 1));



Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE OPTIONS (
    QUEUE_LEN  SMALLINT,
    DEBUG_LOG      DOM_BOOL,
    NO_DATA_PAUSE   INTEGER,
    LOGFILE_PATT   VARCHAR(255)
);


В таблице единственная запись.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392380
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В рамках акции по проверке своих самых безумных подозрений удалил закомментированный текст в триггере, а также объявления неиспользуемых переменных. Т.е. чтобы текст полностью совпадал в тем, что привел в посте. Результат - тот же (что радует, хотя бы картина мира не пошатнулась :) )
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392384
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

проверь вот так тоже утечка будет?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
/* Trigger: TRIG_TR_COMMIT */
CREATE TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
  DECLARE VARIABLE I INTEGER;
BEGIN
  I = 1;
END



Ещё вопрос в таблице Debug_Log всегда одна запись? Если нет, то вот это
Код: sql
1.
2.
    SELECT Debug_Log FROM Options
      INTO :Debug_Log;


не верно.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392387
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutalтриггер с одним значимым оператором
Код: sql
1.
2.
3.
4.
5.
/* Trigger: TRIG_TR_COMMIT */
CREATE TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
   DECLARE VARIABLE Debug_Log DOM_BOOL;


Попробуй заменить в этом объявлении домен на простой тип.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392389
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще интересно было бы проверить, вот в таком варианте будет утечка или нет:

Код: sql
1.
2.
3.
4.
5.
6.
7.
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
    FOR SELECT Debug_Log FROM Options
      INTO :Debug_Log
    DO BEGIN END
    /* ... */
  END
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392415
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

даже вот так утечки нет
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE OR ALTER TRIGGER TRIG_TR_COMMIT
ACTIVE ON TRANSACTION COMMIT POSITION 0
AS
  DECLARE VARIABLE Debug_Log smallint;
BEGIN
  IF (CURRENT_ROLE = 'ROL_FILL') THEN
  BEGIN
  Debug_Log = 1;
--    SELECT Debug_Log FROM Options
--      INTO :Debug_Log;
  END
END



Ещё вопрос в таблице Debug_Log всегда одна запись?
Да, т.к. если там две - вываливается исключение multiple rows in singleton select

Dimitry Sibiryakov,
Попробуй заменить в этом объявлении домен на простой тип.
Не помогло (заменял на smallint)

dimitr,
утекает
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
M_ 15:29:50.0000            6       1               2403624               3612672 
M_ 15:29:51.0000            6       1               2392568               3612672 
M_ 15:29:52.0000            6       1               2399432               3612672 
M_ 15:29:53.0000            6       1               2406296               3612672 
M_ 15:29:54.0000            6       1               2412016               3612672 
M_ 15:29:56.0000            6       1               2441512               3612672 
M_ 15:29:57.0000            6       1               2422312               3612672 
M_ 15:29:58.0000            6       1               2428032               3612672 
M_ 15:29:59.0000            6       1               2432608               3678208 
M_ 15:30:00.0000            6       1               2459968               3678208 
M_ 15:30:01.0000            6       1               2445192               3678208 
M_ 15:30:02.0000            6       1               2450912               3678208 
M_ 15:30:03.0000            6       1               2456632               3678208 



Более того, select first 1 тоже не спасает.
Причем системная таблица тоже дает такой эффект:
Код: sql
1.
2.
select first 1 MON$STAT_ID from MON$MEMORY_USAGE
      INTO :Debug_Log;


Правда, намного медленнее.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392427
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, проблема в любом триггере по коммиту, а то, что на бессмысленном коде утечки нет, - работа оптимизатора, который выкидывает эти участки кода, в итоге приходя к пустому телу триггера? Это единственное более-менее разумное объяснение, которое мне приходит в голову.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392441
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

эээ. Таблицы мониторинга это другое. Не надо их в триггерах на коммит использовать.

Если здесь действительно есть утечка, то это конечно баг. Просто пока не ясно на любом ли селекте она происходит. Попробуй в этом триггере без селекта только вставку делать.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392462
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

пожалуй, твоя правда, просто взял первую попавшуюся под руку таблицу из системных.
Но вот на таком
Код: sql
1.
2.
    select RDB$RELATION_ID from rdb$database
      INTO :Debug_Log;


то же самое. Причем базу уже для чистоты эксперимента "обезжирил" до невозможности.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392474
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, еще забыл: конфиг ФБ - полностью дефолтный (совпадает с firebird.conf.default)
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392482
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

подожди пока dimitr прокомментирует. Если он подтвердит, что это бага иди в трекер.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392513
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисподожди пока dimitr прокомментирует.
dimitr человек вежливый, поэтому я за него прокомментирую: аффтар, тебя попросили
проверить на for select вместо простого select. Ты это сделал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392547
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Ты это сделал?

яdimitr,
утекает
и далее.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392576
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

даже если for select утечки не будет, то баг всё равно остаётся багом и его надо править.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392620
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А какая принципиальная разница между for select и select? Ты предполагаешь, что наличие DO как-то уберет утечку?
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392655
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterDimitry Sibiryakov,

А какая принципиальная разница между for select и select? Ты предполагаешь, что наличие DO как-то уберет утечку?
Предполагаю, что было подозрение на неполную выборку (одна запись из таблицы с N записей? Хотя сервер ведь выбрасывает исключение в таком случае) и нечто вроде незакрытого курсора.

Удалось воспроизвести с помощью isql. Сейчас минимизирую тестовый набор и выложу на проверку всеми желающими.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392690
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Разница в SavePoint'ах для последующего блока BEGIN...END, да и в наличии курсора.

Fr0sT-Brutal,
может сразу в трекер? Хотя давай скрипт проверим.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392693
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalПредполагаю, что было подозрение на неполную выборку (одна запись из таблицы с N записей? Хотя сервер ведь выбрасывает исключение в таком случае) и нечто вроде незакрытого курсора.
никто не угадал, хотя разница таки есть :-) Но, похоже, она тут не причем.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392703
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,
ответ в студию
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392704
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

проверка сингулярности требует дополнительной аллокации памяти под запись
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392769
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так, вроде бы весь комплект готов.

Скачать в зипе: http://yadi.sk/d/kgbR2SEM93USM
Состав файлов:
db.sql - скрипт создания базы
Mem_mon.bat - батник для запуска мониторинга памяти
mem_mon.sql - запрос для Mem_mon.bat
fbclient.dll,
isql.exe - стандартные утилы
isql_shell_boss.bat - батник для запуска isql как sysdba
Tester.bat - батник для запуска проверочного цикла
gen_cmds.bat - генерирует команды (вызов из Tester.bat)
Sleep.exe - для паузы
isql_shell.bat - батник для запуска isql как юзер
RTDTEST_BARE.FDB - сама БД

Запуск
Настройки в ФБ:
Юзер для теста - WRITER, пароль "1"
Алиас БД для теста - RTData

1) Запустить Mem_mon.bat
2) Открыть mem.log в просмотровщике логов, умеющем следить за обновлением файла
3) Запустить Tester.bat

Замечания по юзкейсу (выяснилось в процессе вычленения необходимого минимума для воспроизведения утечки):
1) Наличие роли играет роль (хых) - на простом юзере без роли бага нет
2) Наличие параметра типа DOM_MSRS в PR_IF_W_PUSHMEASURE также вроде бы играет роль
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392779
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправка : параметр ХП не влияет, убрал его и объявление домена.

!!! Если база открыта в IBE, утечка, похоже, не проявляется.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392841
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

suspend в процедуре зачем?
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38392877
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

проверил. Выбросил совсем вызов процедуры. Оставил только commit;

Код: powershell
1.
2.
3.
4.
5.
6.
7.
@echo off
:cycle
@rem echo execute procedure PR_IF_W_PUSHMEASURE(current_timestamp);
echo commit;
echo shell echo %TIME% fill;
echo shell sleep 100;
goto :cycle



Утечка вероятно всё же есть. Потребляемая память растёт медленно, но верно

NOW_ STAT_ID STAT_GR MEM_USED MEM_ALLOC
================ ============ ======= ===================== =====================
M_ 20:45:10.0000 2 1 4710784 5267456
M_ 20:45:11.0000 2 1 4710784 5267456
M_ 20:45:13.0000 2 1 4710784 5267456
M_ 20:45:14.0000 2 1 4710784 5267456
M_ 20:45:15.0000 2 1 4710784 5267456
M_ 20:45:16.0000 6 1 4712336 5201920
M_ 20:45:17.0000 6 1 4714160 5201920
M_ 20:45:18.0000 6 1 4716296 5201920
M_ 20:45:20.0000 6 1 4718120 5201920
M_ 20:45:21.0000 6 1 4720248 5267456
M_ 20:45:22.0000 6 1 4722072 5267456
M_ 20:45:23.0000 6 1 4724200 5201920
M_ 20:45:24.0000 6 1 4726024 5201920
M_ 20:45:25.0000 6 1 4728152 5267456
M_ 20:45:26.0000 6 1 4729976 5267456
M_ 20:45:28.0000 6 1 4731800 5267456
M_ 20:45:29.0000 6 1 4733928 5267456
M_ 20:45:30.0000 6 1 4735752 5267456
M_ 20:45:31.0000 6 1 4737880 5267456
M_ 20:45:32.0000 6 1 4739704 5267456
M_ 20:45:33.0000 6 1 4741832 5267456
M_ 20:45:35.0000 6 1 4743656 5267456
M_ 20:45:36.0000 6 1 4746664 5267456
M_ 20:45:37.0000 6 1 4747616 5267456
M_ 20:45:38.0000 6 1 4749440 5267456
M_ 20:45:39.0000 6 1 4751568 5267456
M_ 20:45:40.0000 6 1 4753392 5267456
M_ 20:45:41.0000 6 1 4755520 5267456
M_ 20:45:43.0000 6 1 4757344 5267456
M_ 20:45:44.0000 6 1 4759472 5267456
M_ 20:45:45.0000 6 1 4761296 5267456
M_ 20:45:46.0000 6 1 4763424 5267456
M_ 20:45:47.0000 6 1 4765552 5267456
M_ 20:45:48.0000 6 1 4767376 5267456
M_ 20:45:49.0000 6 1 4769504 5267456
M_ 20:45:51.0000 6 1 4771632 5267456
M_ 20:45:52.0000 6 1 4773456 5267456
M_ 20:45:53.0000 6 1 4775584 5332992
M_ 20:45:54.0000 6 1 4777408 5332992
M_ 20:45:55.0000 6 1 4779232 5332992
M_ 20:45:56.0000 6 1 4781360 5267456
M_ 20:45:58.0000 6 1 4783184 5267456
M_ 20:45:59.0000 6 1 4785312 5332992
M_ 20:46:00.0000 6 1 4787136 5332992
M_ 20:46:01.0000 6 1 4789264 5332992
M_ 20:46:02.0000 6 1 4791088 5332992
M_ 20:46:03.0000 6 1 4793216 5332992
M_ 20:46:04.0000 6 1 4795040 5332992
M_ 20:46:06.0000 6 1 4797168 5332992
M_ 20:46:07.0000 6 1 4798992 5332992
M_ 20:46:08.0000 6 1 4801120 5332992
M_ 20:46:09.0000 6 1 4802944 5332992
M_ 20:46:10.0000 6 1 4805072 5332992
M_ 20:46:11.0000 6 1 4806896 5332992
M_ 20:46:13.0000 6 1 4809024 5332992
M_ 20:46:14.0000 6 1 4810848 5332992
M_ 20:46:15.0000 6 1 4812976 5332992
M_ 20:46:16.0000 6 1 4814800 5332992
M_ 20:46:17.0000 6 1 4816928 5332992
M_ 20:46:18.0000 6 1 4818752 5332992
M_ 20:46:19.0000 6 1 4820880 5332992
M_ 20:46:21.0000 6 1 4822704 5332992
M_ 20:46:22.0000 6 1 4824832 5332992
M_ 20:46:23.0000 6 1 4826656 5332992
M_ 20:46:24.0000 6 1 4828784 5332992
M_ 20:46:25.0000 6 1 4830608 5332992
M_ 20:46:26.0000 6 1 4832736 5332992
M_ 20:46:27.0000 6 1 4834560 5398528
M_ 20:46:29.0000 6 1 4836688 5332992
M_ 20:46:30.0000 6 1 4838512 5332992
M_ 20:46:31.0000 6 1 4840640 5398528
M_ 20:46:32.0000 6 1 4842464 5398528
M_ 20:46:33.0000 6 1 4844592 5332992
M_ 20:46:34.0000 6 1 4846416 5332992
M_ 20:46:35.0000 6 1 4848544 5398528
M_ 20:46:37.0000 6 1 4850368 5398528
M_ 20:46:38.0000 6 1 4852496 5398528
M_ 20:46:39.0000 6 1 4854320 5398528
M_ 20:46:40.0000 6 1 4856448 5398528
M_ 20:46:41.0000 6 1 4858576 5398528
M_ 20:46:42.0000 6 1 4860400 5398528
M_ 20:46:43.0000 6 1 4862528 5398528
M_ 20:46:45.0000 2 1 4710784 5267456
M_ 20:46:46.0000 2 1 4710784 5267456
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38393130
Фотография Exteris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисУтечка вероятно всё же есть. Потребляемая память растёт медленно, но верно
Судя по последним двум записям лога это не совсем так.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38393200
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exteris,

Последние две записи лога были сделаны уже после того как Tester.bat остановлен. Так что там освобождение памяти происходит из-за отсоединения одного из соединений.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38393224
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
по этому куску лога память в конце таки освобождается; хотя и не очень понятно, почему она вообще растет. На моих тестах, если утечки не было, то все значения шли неизменными. А если вернуть ХП, ситуация изменится?

Вообще есть какие-то средства отследить утечку в сервере? Debug версия, насколько я понял, только для получения имен функций.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38393227
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисExteris,

Последние две записи лога были сделаны уже после того как Tester.bat остановлен. Так что там освобождение памяти происходит из-за отсоединения одного из соединений.
А, тогда да, есть утечка. Уф. Значит, не в моем конфиге проблема :)
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38393263
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

там за 10 минут памяти на ~1 Мб утекает. Просто я привел довольно короткий лог минуты на 2
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38394125
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

В трекере запись будет?
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38395200
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38395222
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

Ты бы файлы скриптов к тикету прицепил.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38395552
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я подумал, что у разрабов есть свои, проверенные методы тестирования, и куда я буду со своими наколенными скриптами соваться :)
Тем не менее, добавил. Однако что-то реакции пока ноль. Да и в этой теме только ты заинтересовался, остальные, похоже, забили...
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38395576
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

а ты ожидал освещения этого тикета в CNN\BBC\PTP\1+1 ?

PS Всему своё время
PPS Мы высоко сидим, далеко глядим. Всё видим, никто не уйдёт :)
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38395702
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladа ты ожидал освещения этого тикета в CNN\BBC\PTP\1+1 ?
ага, и еще изменения текущего лого Гугла в честь этого знаменательного события :)

Хорошо, тогда я спокоен. Ждем фикса :)
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38397884
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalХорошо, тогда я спокоен. Ждем фикса :)Проверь на завтрашнем снапшоте, пожалуйста.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38399392
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, Fr0sT-Brutal,

Вроде всё нормально.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...............
M_ 21:37:14.0000                                                            2       1               4711336               5267456 
M_ 21:37:15.0000                                                            2       1               4711336               5267456 
M_ 21:37:16.0000                                                            2       1               4711336               5267456 
M_ 21:37:17.0000                                                            2       1               4711336               5267456 
M_ 21:37:19.0000                                                            2       1               4711336               5267456 
M_ 21:37:20.0000                                                            2       1               4711336               5267456 
M_ 21:37:21.0000                                                            2       1               4711336               5267456 
M_ 21:37:22.0000                                                            2       1               4711336               5267456 
M_ 21:37:23.0000                                                            2       1               4711336               5267456 
M_ 21:37:25.0000                                                            2       1               4711336               5267456 
M_ 21:37:26.0000                                                            2       1               4711336               5267456 
M_ 21:37:27.0000                                                            2       1               4711336               5267456 
M_ 21:37:28.0000                                                            2       1               4711336               5267456 
...............
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38399424
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

спасибо.
...
Рейтинг: 0 / 0
Утечка памяти (возм., из-за trigger after commit)
    #38415092
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за задержку - был в отпуске :)
Действительно, глюк побежден, на х32 и х64 версиях. Спасибо!
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Утечка памяти (возм., из-за trigger after commit)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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