Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
Добрый день в Форум!

Сегодня на PB9.0 bild 5507 откомпилил тестовое приложение(два update одного поля в секунду commit тут же, база - Oracle 8.1.5) и даже рекомендации:

>Sergey Rijkov
>Рекомендуют:The fix is to put something in the DBParm property of the SQLCA >object. Something like "Application='MyApp'" or whatever. In the development >environment, edit the connection properties and make sure something is in the >Application Name or Workstation Name on the Network tab

не помогли.
За неполных 4 часа работы постепенно съедено 70 М, причём со странной картиной поедания памяти:
-после запуска ~14 M
-через минуты три ~ 4 M
- через минут пять ~ 20 M
- через минут десят ~ 12 M
....
- через 4 часа ~ 105 M
- через 4 часа и немного ~ 70 M
18 сен 03, 13:11    [344182]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Sergey Rijkov
Member

Откуда: Спб
Сообщений: 37
Шаманство какое - то :)
Тестовый код в студию.

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
18 сен 03, 13:41    [344245]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Ikar
Member

Откуда: Москва
Сообщений: 928
Согласен с Сергеем - чудес не бывает, нужно смотреть...

ЗЫ: а какое шаманство сдуло все предыдущие сообщения в этой ветке? До второй страницы вроде бы еще не добрались, да и ссылок перехода нету...
18 сен 03, 14:47    [344414]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
Даю код (по событию таймера, каждую секунду):
ii_tik_t++
If ii_tik_t > 100 Then ii_tik_t = 0
UPDATE rut.rut_control
SET control_value = :ii_tik_t
WHERE rut.rut_control.control_name = 'MONITORTABLE'
Using itr_Proc;
If itr_Proc.SqlCode <> 0 Then
RollBack Using itr_Proc;
Else
Commit Using itr_Proc;
End If
End If
18 сен 03, 15:09    [344458]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
совсем забыл: на ОС предел памяти 860 М (как позаывает XP),
кроме того после запуска приложения через ~5,5 часов уже съедено 115 M
18 сен 03, 15:34    [344519]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Sergey Rijkov
Member

Откуда: Спб
Сообщений: 37
Дааа.. странно, прогнал твой тестовый пример, PB 6.5.1 + Oracle 9.2 - никаких пожираний, втечение 3 часов !!!

Одно но..., я тестировал UPDATE ... без USING itr_transObject

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
18 сен 03, 16:54    [344742]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
>Sergey Rijkov
Дааа.. странно, прогнал твой тестовый пример, PB 6.5.1 + Oracle 9.2 - никаких пожираний, втечение 3 часов !!!

Одно но..., я тестировал UPDATE ... без USING itr_transObject



itr_Proc - instanse типа transaction.
Можно взглянуть на .DBParm ?
19 сен 03, 06:44    [345170]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Sergey Rijkov
Member

Откуда: Спб
Сообщений: 37
RE>itr_Proc - instanse типа transaction.
Ну это понятно

RE>Можно взглянуть на .DBParm ?
Нет его :), вот для чистоты эксп-а

SQLCA.DBMS = 'O73 ORACLE 7.3'
SQLCA.LogID = Trim(name.Text)
SQLCA.LogPass = Trim(password.Text)
SQLCA.ServerName = Trim(server.Text)

connect using SQLCA;

DO WHILE true
UPDATE GEO.TEST_TABLE SET TEST_TABLE_FIELD = 1 WHERE TEST_TABLE_UNID = 1;
COMMIT;
LOOP

И все в норме.

Твой код ?
19 сен 03, 09:53    [345295]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
SQLCA.DBParm = "CommitOnDisconnect='No',Date=' ''''dd.mm.yyyy'''' ',DateTime=' ''''dd.mm.yyyy hh:mm:ss'''' ',Time=' ''''hh:mm:ss'''' ',NumbersInternal=1,StaticBind=0,ObjectMode='No',FormatArgsAsExp='Yes'"

Интересно, имеет значение где конектится переменная в скрипте апликации или в скрипте окна?
19 сен 03, 10:58    [345407]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
Совсем забыл
SQLCA.DBMS = "O84 Oracle8/8i (8.x.4+)"
19 сен 03, 10:59    [345412]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Sergey Rijkov
Member

Откуда: Спб
Сообщений: 37
Совсем забыл
SQLCA.DBMS = "O84 Oracle8/8i (8.x.4+)"


Сразу бы так и говорил :), на самомо деле мы столько гиммора, извиняюсь, получили с этим O84 !!!
Хотя вроде, как я помню для Oracle 8.1.5 другого варианта нет :(, но скорее всего ошибаюсь.

Не к теме, а зачем тебе StaticBind=0 ? (просто интересно)


-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
19 сен 03, 11:24    [345463]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
Так это я так из-за Oracle 8.1.5. Может нужна другая длл, у меня pbo8490.dll версия 9.0.0.5507, размер 302592?
19 сен 03, 11:40    [345495]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Sergey Rijkov
Member

Откуда: Спб
Сообщений: 37
Честно говоря больше ничем не могу помочь :(.
Но на 99% уверен - дело в dll

У нас были проблемы с Pbo8460.dll [6.5.0.1173] [209 408]
Используем pbo7360.dll [6.5.1.620] [182 272], даже для Oracle 9.2 проблем не замечено !

И вообще где-то читал, что не рекомендуется использовать Pbo84XX


-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
19 сен 03, 12:06    [345551]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
У меня почему-то база не цепляется через pbo7390 (правда я пытаюсь на PB 9.0 bild 5507 - pbo7390.dll [9.0.0.5507] [246 272]). Говорит, что нету: unable to connect to destination, хотя в Net8 конектится (WinXP Prof sp 1).

А PB 6.5.1 с pbo7360.dll [6.5.1.620] [182 272] зовёт доктора Ватсона (WinNT 4.0 sp 6a)
19 сен 03, 12:37    [345630]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Sergey Rijkov
Member

Откуда: Спб
Сообщений: 37
Ну дык я ж говорил, что для Oracle 8.1.5 нужна именна эта длл, которая глючная. Так что ради билдера смени сервак или же не парься и напиши хранимую

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
19 сен 03, 13:07    [345694]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
Вот так!
Прийдётся писать контроллер памяти. Может кто знает как сдёрнуть занимаемую, свободную и тд память через API?
19 сен 03, 13:22    [345735]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Геннадич
Member

Откуда: Алматы
Сообщений: 640
Совершенно случайно, ради эксперимента и по совету Sergey Rijkov убрал SQLCA.DBParm, всмысле = "". И что-же: под WinNT 4.0 уже час стоит и память не жрёт! А вот под WinXP картина немного другая: Память постепенно сжирается примерно до 1/8 максимально возможной и падает до первоначального уровня.

Спасибо огромное за внимание! Тему, думаю, можно считать закрытой.
19 сен 03, 15:37    [346034]     Ответить | Цитировать Сообщить модератору
 Re: Память и PowerBuilder  [new]
Ermak
Member

Откуда: Tomsk
Сообщений: 811
Обращаю внимание почтенной публики, про то что начиная с версии 8.0.3 в PB используется другой менеджер памяти.

Читаем в readme.txt для PB 8.0.3 Build 9704

"Section III: Memory Usage Improvements
======================================
Heap manager changed
--------------------
In order to improve memory management, the SybHeap manager replaces
SmartHeap 6.0.2 as the memory manager in this release. When blocks of
memory are freed, the SybHeap manager does not return them to the
operating system. Instead it maintains them in a free list for reuse
.
The SybHeap manager generally uses less memory by more effectively
managing its free lists and reducing fragmentation."

Далее уже для PB 8.0.3 build 9850


Libjsybheap.dll - New file required for development and deployment
------------------------------------------------------------------
This PB 8.0.3 EBF build, includes a new DLL called libjsybheap.dll. This DLL must be installed into the Sybase\Shared\PowerBuilder folder along with the other PB DLLs (i.e., Pbdwe80.dll, etc.) or else the PB development environment will not start up.
This file provides the SybHeap memory manager, which replaces the SmartHeap 6.0.2 memory manager.

Теперь давайте посмотрим, что написано про менеджер памяти в файле PB901mr_fixes.htm

Change Request#: 289939 Priority: 0
Product Name: PB Enterprise - 8.0.2 OS: Microsoft Windows NT
Product Component: DW - Runtime

Fixed in Version #:
9.0.1

Description:
PowerBuilder 8 Build 9603 uses a new memory manager (versus SmartHeap), and with that build VERY LARGE allocations of memory for datastores are being reported and memory requirements SEEM to be 2x that of the SmartHeap builds.
19 сен 03, 16:04    [346119]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить