On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение





Пост N: 200
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 15:50. Заголовок: Сборщик мусора / очистка памяти


Первые два рабочих дня "новой" программы помимо ожидаемых ошибок, связанных с "длинными" именами переменных/функций принесли пару-тройку ситуаций, в которых я ничего не могу понять.

Общий смысл таков, что в некоторых местах, связанных с интенсивными расчетами (напр. подгтовка прайс-листа на 5-6 тысяч наименований, сложная комбинированная работа с разными таблицами одновременно и тп) приводит к совершенно непредсказуемым результатам:
- пропадают надписи в SAY в панели с несколькими GET
- программа вылетает/виснет
- программа неожиданно начинает пытаться открыть документ Word/Excel а то и несколько...

Осмысленного объяснения этому процессу дать не могу, поскольку связи с кодом нет точно. Во всяком случае, Clipper в этих местах работал (но зато без звука вылетал в других и намного чаще).

На одной машине даже поймал вот такой отчет:
---
Application Internal Error - D:\tradewin.exe
Terminated at: 2013.08.23 12:12:31
Неисправимая ошибка 9009: hb_xrealloc ене может перераспределить память
Called from AADD(0)
Called from CRLIST(187) in trade206.prg
Called from ADDR2QUEUE(124) in trade206.prg
Called from SALE2QUEUE(209) in trade206.prg
Called from MAKESALEDOCS(1816) in trade224.prg
Called from SALECONT2(593) in trade224.prg
Called from DBVIEW2(4807) in trade225.prg
Called from DO(0)
Called from ACHOICE(0) in ../../../achoice.prg
Called from DBVIEW(4784) in trade225.prg
Called from SALECONTROL(272) in trade224.prg
Called from CHECK4DAMAGE(963) in trade.prg
Called from MAIN(234) in trade.prg
------------------------------------------------------------------------

в Clipper я использовал в критичных местах шаманства наподобие MEMORY(-1) и FT_IamIdle()
В Harbour я естественно их убрал - полагал, что там, где раньше почти хватало 16 мегов памяти, в 1-2 гигабайтах будет где развернуться без проблем.
Похоже, что это не так.

Что нужно использовать для Harbour и в каких случаях ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 67 , стр: 1 2 3 4 All [только новые]


администратор




Пост N: 3450
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 16:03. Заголовок: Сама задача сетевая ..


Сама задача сетевая ? Сколько юзеров сразу ее топчет ?
Свою задачу я перевел в конце апреля и глюки конечно были но они все мои , но что бы
происходило то что у тебя такого не было ни разу.

Sergy пишет:

 цитата:
Called from AADD(0)


Большой массив ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 201
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 16:16. Заголовок: 1) Задача разумеется..


1) Задача разумеется сетевая
2) в сети работает от 15 до 25 чел в среднем
3) массив копеечный - 20-30 элементов максимум - id заказов, которые будут погружены в автомобиль, осуществляющий доставку.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3451
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 16:20. Заголовок: Sergy пишет: 1) Зад..


Sergy пишет:

 цитата:
1) Задача разумеется сетевая
2) в сети работает от 15 до 25 чел в среднем


И это все без сервера баз данных типа ADS , LETO ?
Индексы видимо NTX ?

PS
Про ошибку вот тут есть терка
http://comments.gmane.org/gmane.comp.lang.harbour.devel/4708

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 202
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 16:24. Заголовок: Dima пишет: И это в..


Dima пишет:

 цитата:
И это все без сервера баз данных типа ADS , LETO ?
Индексы видимо NTX ?



ага
Но Clipper ведь работал. Кряхтел, но работал...

А тут просто все залетало, но вот эти необъяснимые вещи меня напрягают.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3452
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 16:28. Заголовок: 15 чел это шибко мно..


15 чел это шибко много без СБД. Ошибки и глюки будут 100 % и не потому что
твой код кривой. Сетка видать перегружена по самое не хочу отсюда и потеря данных
возможна и многое другое что ты сейчас и наблюдаешь

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3453
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 16:36. Заголовок: Темку листани (у чел..


Темку листани (у чела тормоза были уже при 2-х юзерах и индексами NTX)
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=27019

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 203
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 17:33. Заголовок: Dima пишет: 15 чел ..


Dima пишет:

 цитата:
15 чел это шибко много без СБД. Ошибки и глюки будут 100 % и не потому что
твой код кривой. Сетка видать перегружена по самое не хочу отсюда и потеря данных
возможна и многое другое что ты сейчас и наблюдаешь



Сетка 100 Mbit на 50% парка и 1Gbit на остальных. Проблем со скоростью нет. Логичное замедление некоторых операций пропорционально росту юзеров. Но в любом случае быстрее, чем Clipper.

Dima пишет:

 цитата:
Темку листани (у чела тормоза были уже при 2-х юзерах и индексами NTX)
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=27019



Понятное дело, что SQL архитектура лучше. До нее тоже дойдет дело. Вопрос на сегодня в том, что делать именно сейчас и именно с DBFNTX драйвером.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3454
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 17:36. Заголовок: Sergy пишет: и имен..


Sergy пишет:

 цитата:
и именно с DBFNTX драйвером


Чего так уперся в DBFNTX , нравятся "толстые" индекcы ? ;)

Сейчас можно попробовать сервер терминалов или все же заюзать СБД (LETO или ADS)

Базы индексировал после того как на Harbour пересел ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 204
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 17:41. Заголовок: Dima пишет: Чего та..


Dima пишет:

 цитата:
Чего так уперся в DBFNTX , нравится ?



Сильно завязано все на индексы и оптимизировано. Во многих местах разбросаны проверки наличия *.ntx файлов.
Перейти на CDX возможно, но нет уверенности, что это закроет вопросы.

Понятно, что радикально лучше будет перейти на SQL, но даже не представляю себе объем переписываемого кода. Чую, это будет полная Ж...


 цитата:
Сейчас можно попробовать сервер терминалов или все же заюзать СБД (LETO или ADS)



Под терминалом работают в среднем 5-10 клиентов. База получается локальной. Вообще красота.


 цитата:
Базы индексировал после того как на Harbour пересел ?



Разумеется. Harbour с Clipper ntx вообще не дружит никак - вылетает сразу на попытке открыть даже для чтения.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3455
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 17:43. Заголовок: Sergy пишет: Перейт..


Sergy пишет:

 цитата:
Перейти на CDX возможно


С CDX думается будет гиморойчик по началу.
Да впал тебе этот SQL , думаешь он быстрее будет чем LETO или ADS , врядли ?
Так что вариантов два вижу LETO+NTX , ADS+NTX

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 205
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 17:44. Заголовок: Dima пишет: Да впал..


Dima пишет:

 цитата:
С CDX думается будет гиморойчик по началу.


Вот поэтому и не очень охота заниматься сизифовым трудом. Хендлов файловых будет меньше ненамного - больше двух индексов к одной табоице у меня не бывает.
Итого 72шт DBF и 84шт NTX.
В среднем открыто 5-10 таблиц + индексы к ним.
Половина из этого - на локальном компе (справочники имен/цен/контрагентов, которые меняются редко).
Все временные файлы создаются тоже исключительно локально.



 цитата:
Да впал тебе этот SQL , думаешь он быстрее будет чем LETO или ADS , врядли ?



Под SQL я имел ввиду как раз LETO и ADS - клиент/серверные варианты.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3456
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 17:45. Заголовок: я думал ты о Microso..


я думал ты о Microsoft SQL серве и тд и тп ;)

По ходу не так много и переделывать что с LETO что с ADS.
Если нужен тупо "быстрый старт" то вся переделка это с 10-к строчек кода а
потом уже можно заниматься оптимизацией и наворачивать используя спец
функции из этих обоих серверов баз данных

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 206
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 17:49. Заголовок: Dima пишет: По ходу..


Dima пишет:

 цитата:
По ходу не так много и переделывать что с LETO что с ADS



Я понимаю их преимущества. И обязательно перейду на что-то из этого. Но сейчас - явно не то время.

Так что со сборкой мусора? Никто на Harbour ее не использует?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3457
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 17:49. Заголовок: Sergy пишет: Все вр..


Sergy пишет:

 цитата:
Все временные файлы создаются тоже исключительно локально


Их можно исключительно в памяти создавать юзая HBMEMIO

Sergy пишет:

 цитата:

Так что со сборкой мусора? Никто на Harbour ее не использует?


Да он сам чудно справляется с это задачей.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 229
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.08.13 17:51. Заголовок: Sergy На мой взгляд ..


Sergy
На мой взгляд проще LetoDb не будет.
LetoDb поддерживает NTX, базовые команды RDD NTX не изменятся, возможно поработать придется над проверками наличия файлов, вместо file(...) использовать leto_file(...), начать с этого, а потом, если надо перейти на CDX индексы в LetoDb

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 207
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 17:57. Заголовок: Dima пишет: Их можн..


Dima пишет:

 цитата:
Их можно исключительно в памяти создавать юзая HBMEMIO



Немного непонятно, что это даст ?
Есть код, который выводит, к примеру, отчет. Создается локально файл temp.dbf и в него загружаются данные на основе таблицы, к примеру, продаж и текущих остаков.
Анализируются, выводится документ, временный dbf стирается.

Или я чего-то не понял...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 208
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 17:58. Заголовок: SergKis пишет: На м..


SergKis пишет:

 цитата:
На мой взгляд проще LetoDb не будет.
LetoDb поддерживает NTX, базовые команды RDD NTX не изменятся, возможно поработать придется над проверками наличия файлов, вместо file(...) использовать leto_file(...), начать с этого, а потом, если надо перейти на CDX индексы в LetoDb



На выходных готов начать разбираться. Есть тема "для чайников" по переходу с DBFNTX на Leto ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3458
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.08.13 18:01. Заголовок: Sergy пишет: Есть т..


Sergy пишет:

 цитата:
Есть тема "для чайников" по переходу с DBFNTX на Leto ?


Нет , но если скачать сырцы то там все есть в readme_rus.txt.
Сча налью куда нить

Во http://zalil.ru/34691922

Sergy пишет:

 цитата:
Создается локально файл temp.dbf


А в случае с HBMEMIO этот файл создается в оперативной памяти

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 209
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 18:03. Заголовок: Dima пишет: Да он с..


Dima пишет:

 цитата:
Да он сам чудно справляется с это задачей.



Значит буду пока развязывать узелки.

Вот странная картина. При запуске на каждой машине увеличивается переменная err_count на единицу. При корректном завершении - уменьшается на единицу и сохраняется в mem-файле.
Т.е. я могу совершенно точно определить, на какой из машин большее кол-во проблем.

В сети есть три машины, на которых идет наиболее интенсивная и разнообразная работа. Счетчик ошибок на них за 2 полных рабочих дня увеличилися с 0 (при переходе на Harbour я обнулил) до 12...15.
Т.е. значит что 12-15 раз эти машины "вылетали" по тем или иным причинам.

В среднем это в 2 раза меньше чем в Clipper, но все равно имеет место быть... Вроде и архитектура изменилась и почти вся физическая память доступна, ан нет...
Не знаю, что делать, аж бесит блин...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 210
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 18:06. Заголовок: Dima пишет: Нет , н..


Dima пишет:

 цитата:
Нет , но если скачать сырцы то там все есть в readme_rus.txt.
Сча налью куда нить


Слил


 цитата:
А в случае с HBMEMIO этот файл создается в оперативной памяти


Но что это дает ?
Проблем со скоростью обработки локальных данных не было и в Clipper под NTVDM. Винда ведь кэширует все что можно и нельзя.

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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 67 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 27
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет