Автор | Сообщение |
alkresin
|
| moderator
|
Пост N: 31
Зарегистрирован: 06.07.06
|
|
Отправлено: 31.01.08 11:36. Заголовок: Leto DB Server (продолжение)
Только что открыл на Sourceforge новый проект - Leto DB Server - https://sourceforge.net/projects/letodb Это мультиплатформенный ( Windows, Unix/Linux ) сервер баз данных, предоставляющий клиентским программам доступ к dbf/cdx файлам, находящимся на удаленном сервере ( можно и на локальном компьютере запускать - в отладочных целях ). В общем, как ADS :). Проект - на стадии разработки, не все даже базовые функции еще реализованы, до оптимизации дело еще не дошло. Но работает :). Крутится у меня на сервере несколько дней, подключал до 15 клиентов, пока не падает. Мои программы работают с ним нормально. Преимущества по сравнению с обычным файл-сервером: 1) Безопасность - базы могут быть в каталоге, недоступном для клиентских компьютеров - никто их случайно не удалит и не повредит. 2) Поскольку базы открываются серверной программой, а не клиентской, ее целостности ничего не грозит при случайном отключении клиентского компьютера. 3) значительное уменьшение сетевого траффика. 4) Должен быть, по идее, выигрыш в скорости. 5) Возможность контроля за пользователями с помощью утилиты manage ( можно придумать и другие формы контроля ). 6) Можно будет сделать транзакции, stored procedures на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 316
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
Pasha
|
| Администратор
|
Пост N: 1545
Зарегистрирован: 23.05.05
|
|
Отправлено: 29.06.10 13:37. Заголовок: На сервере где-то ес..
На сервере где-то есть утечка памяти. Если запустить letodb совместно с letodbtray, и понаблюдать над ним через диспетчер задач, то видно, что память, используемая letodb, увеличивается. Т.е. утечка возникает при вызове leto_connect() - leto_disconnect() Пересмотрел пары hb_xgrab - hb_xfree, malloc - free, утечки не нашел. А она есть
|
|
|
Pasha
|
| Администратор
|
Пост N: 1546
Зарегистрирован: 23.05.05
|
|
Отправлено: 29.06.10 16:04. Заголовок: А уж какая утечка па..
А уж какая утечка памяти в letodbtray... если из letodb едва сочится по капелькам, то из letodbtray хлещет вовсю
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 67
Зарегистрирован: 15.09.05
|
|
Отправлено: 29.06.10 20:34. Заголовок: А каким образом ее поймать
А каким образом ее поймать , где она я к сожалению не очень знаком со средствами выделения памяти и ее освобождения в Харборе Может ето потому что у меня Харбор не так собран , наверно надо с ключиками розобратся P.S. надо подучится
|
|
|
Pasha
|
| Администратор
|
Пост N: 1547
Зарегистрирован: 23.05.05
|
|
Отправлено: 29.06.10 21:12. Заголовок: Возможно, проблема в..
Возможно, проблема в Leto_connect() - Leto_disconnect() в клиентской части leto. Во всяком случае, когда letodb не запущен, утечки в letodbtray нет.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1548
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.06.10 11:20. Заголовок: Мне кажется, что дис..
Мне кажется, что диспетчер задач windows врет, и врет сильно. На winxp sp1 память, используемая letodbtray, за 3 часа выросла с 8М до 70М. На winxp sp2 осталась почти такой же. Я в сервере добавил для LETO_MGGETINFO() еще 2 элемента - обьем памяти, так что можно будет отслеживать утечки А для letodbtray можно проверить память, вызывая Memory(1001)
|
|
|
Dima
|
| |
Пост N: 1779
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.06.10 12:01. Заголовок: Pasha пишет: Мне к..
|
|
|
Pasha
|
| Администратор
|
Пост N: 1549
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.06.10 12:40. Заголовок: Dima пишет: Нужно п..
Dima пишет: цитата: | Нужно поюзать какую то альтернативную мерялку. |
| Поставил. Результат практически такой же, как у task manager Для xp sp1 у letodbtray память дошла уже почти до 100М, а для sp2 - почти тоже самое. Непонятно. это в самой windows трубы ржавые ? Может быть конечно, еще minigui протекает А использование Memory() показывает, что на клиенте при connect - disconnet утечки нет. На сервере при каких-то операциях есть утечка несколько сот байт, а в каких - надо выяснять
|
|
|
Dima
|
| |
Пост N: 1780
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.06.10 14:11. Заголовок: Pasha пишет: Непоня..
Pasha пишет: цитата: | Непонятно. это в самой windows трубы ржавые ? |
| Возможно ;) Не зря ведь был SP2 а затем SP3
|
|
|
AlexMyr
|
| |
Пост N: 5
Зарегистрирован: 11.06.10
|
|
Отправлено: 30.06.10 14:53. Заголовок: Сегодня локально зап..
Сегодня локально запускал и останавливал сервер. В letodb.log формат даты меняется: 06/30/10 08:28:14: Leto DB Server has been started. 06/30/10 08:34:24: Server has been closed. 06/30/10 09:16:34: Leto DB Server has been started. 30.06.2010 11:05:13: Server has been closed. 06/30/10 11:05:14: Leto DB Server has been started. 30.06.2010 12:54:07: Server has been closed. 06/30/10 12:54:14: Leto DB Server has been started. 06/30/10 12:54:35: Server has been closed. 06/30/10 12:54:39: Leto DB Server has been started. 06/30/10 12:55:27: Server has been closed. 06/30/10 12:55:36: Leto DB Server has been started. 30.06.2010 14:49:55: Server has been closed. 06/30/10 14:50:14: Leto DB Server has been started. 06/30/10 14:50:37: Server has been closed. 06/30/10 14:50:46: Leto DB Server has been started.
|
|
|
AlexMyr
|
| |
Пост N: 6
Зарегистрирован: 11.06.10
|
|
Отправлено: 30.06.10 15:06. Заголовок: В letodb.ini Pass_fo..
В letodb.ini Pass_for_Login = 1 Pass_for_Data = 1 Добавил пользователя с правами NNN В программе через HBROWSE (HWGUI) при попытке изменить данные вылазит ошибка Error LETO/1021 Помилка в тип? даних Called from DBUNLOCK(0) Called from HBROWSE:EDIT(3153) Called from HBROWSE:ONEVENT(551) Called from HWG_ACTIVATEMAINWINDOW(0) Called from HMAINWINDOW:ACTIVATE(355) Called from MAIN(107) HwGUI 2.17 Harbour 2.1.0beta2 (Rev. 14944) Date:30.06.2010 Time:14:56:39 При Pass_for_Data = 0 без ошибок т.к. права не проверяются. Что делать? Проверять локально права пользователя и давать (не давать) добро на редактирование в HBROWSE? Как правильно?
|
|
|
alkresin
|
| moderator
|
Пост N: 361
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 10:01. Заголовок: Pasha пишет: Я в се..
Pasha пишет: цитата: | Я в сервере добавил для LETO_MGGETINFO() еще 2 элемента - обьем памяти, так что можно будет отслеживать утечки |
| Вот это, IMHO, зря. Зачем нагружать сервер сбором и пересылкой не имеющей отношения к letodb информацией, зачем клиенту знать, что там с памятью на сервере ? У администратора есть и другие средства для этого. Что касается утечки при connect / disconnect ... В кодах leto вроде все чисто. Может, проблема, действительно, в недрах реализации ip в SP1. У меня серверы под Линуксом работают, там я такого не наблюдал.
|
|
|
|
Pasha
|
| Администратор
|
Пост N: 1550
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 10:02. Заголовок: По поводу утечки в l..
По поводу утечки в letodbtray, или подобной утилиты, в winxp sp1 Вызов Memory(1001) показывает, что память не увеличивается, остается постоянной, байт в байт. Сначала я попробовал вызывать hb_gcAll(.t.), результата это не дало Затем применил другую схему: вместо вызова connect - disconnect при старте соединяюсь с сервером, затем по таймеру опрашиваю его вызовом Leto_MgGetInfo(). Такой чопик помог, утечка практически прекратилась. Вернее, память в task manager увеличивается, но на самую малось
|
|
|
alkresin
|
| moderator
|
Пост N: 362
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 10:05. Заголовок: AlexMyr пишет: Сего..
AlexMyr пишет: цитата: | Сегодня локально запускал и останавливал сервер. В letodb.log формат даты меняется: |
| В промежутке между стартом /остановом, наверное, программы какие-то запускались. При подсоединении пользователя формат даты передается на сервер, хотя, конечно, он должен только для этого пользователя работать. Надо будет посмотреть ...
|
|
|
Pasha
|
| Администратор
|
Пост N: 1551
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 10:07. Заголовок: alkresin пишет: Вот..
alkresin пишет: цитата: | Вот это, IMHO, зря. Зачем нагружать сервер сбором и пересылкой не имеющей отношения к letodb информацией, зачем клиенту знать, что там с памятью на сервере ? У администратора есть и другие средства для этого. |
| Так у администратора сейчас единственное средство пощупать letodb - это утилита manage. Туда я и добавил этот вызов. Если сервер собирать без fmstat, то эта добавка на работу сервера никак не скажется, разве что клиенту будет пересылаться дополнительно 2 нуля, то есть 4 байта: "0;0;"
|
|
|
alkresin
|
| moderator
|
Пост N: 363
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 10:19. Заголовок: AlexMyr пишет: Что ..
AlexMyr пишет: цитата: | Что делать? Проверять локально права пользователя и давать (не давать) добро на редактирование в HBROWSE? |
| Тут подумать надо. Локально права пользователя вы так просто не проверите - ведь если у него админ прав нет, то он их не прочитает с сервера. Можно, конечно, не возвращать ошибку в такой ситуации, а, не изменяя данные, сказать что все Ок - но это, наверное, неправильно. Так что предлагайте варианты.
|
|
|
alkresin
|
| moderator
|
Пост N: 364
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 10:22. Заголовок: Так у администратора..
цитата: | Так у администратора сейчас единственное средство пощупать letodb - это утилита manage |
| Ну есть же всякие process explorer'ы ... Или у администратора физически нет доступа к сереверу ?
|
|
|
alkresin
|
| moderator
|
Пост N: 365
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 10:49. Заголовок: alkresin пишет: В п..
alkresin пишет: цитата: | В промежутке между стартом /остановом, наверное, программы какие-то запускались. При подсоединении пользователя формат даты передается на сервер, хотя, конечно, он должен только для этого пользователя работать. Надо будет посмотреть ... |
| В принципе, ничего опасного здесь нет. Перед выполнением любой операции формат даты устанавливается в значение для данного клиента. В лог пишется, соответственно, в формате, установленном для последнего клиента. На других это не влияет.
|
|
|
alkresin
|
| moderator
|
Пост N: 366
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 11:03. Заголовок: Наткнулся на одну ош..
Наткнулся на одну ошибку - seek по отфильтрованной базе неправильно работает, если фильтр выполняется на стороне клиента ( это когда в нем присутствуют переменные, user defined функции, алиасы ). Надо будет исправить, не знаю только когда - со временем туго.
|
|
|
AlexMyr
|
| |
Пост N: 7
Зарегистрирован: 11.06.10
|
|
Отправлено: 01.07.10 11:13. Заголовок: alkresin пишет: В п..
alkresin пишет: цитата: | В промежутке между стартом /остановом, наверное, программы какие-то запускались. При подсоединении пользователя формат даты передается на сервер, хотя, конечно, он должен только для этого пользователя работать. |
| Я игрался только с editable в HBROWSE и менял Pass_for_Data в letodb.ini, больше ничего не трогал в программе. Сервер не пересобирал, тоько останавливал и запускал. Как по мне то в letodb.log должно записываться с теми установками с какими собирался сервер, а юзеру то что хочет юзер (мое ИМХО).
|
|
|
AlexMyr
|
| |
Пост N: 8
Зарегистрирован: 11.06.10
|
|
Отправлено: 01.07.10 12:17. Заголовок: alkresin пишет: Тут..
alkresin пишет: цитата: | Тут подумать надо. Локально права пользователя вы так просто не проверите - ведь если у него админ прав нет, то он их не прочитает с сервера. Можно, конечно, не возвращать ошибку в такой ситуации, а, не изменяя данные, сказать что все Ок - но это, наверное, неправильно. Так что предлагайте варианты. |
| Сейчас получается, что юзер с правами NNN в HBROWSE заходит в режим редакирования (может случайно или нет по enter или двойному клику) и этим блоктрует запись, уходит пить кофе, чем не дает возможность править данные другим с правами NNY, что не есть правильно. И сервер не знает в каком режиме клиентская сторона с HBROWSE:acolumns:leditable равна true или false, и в других режимах редактирования данных. Получается, что юзера с правами NNN нужно сначала проверить, что он хочет делать (добавить, изменить, удалить), а потом серверу решить, что делать. На первых порах предлагается молча оставить данные как есть и не возвращать ошибки.
|
|
|
Ответов - 316
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|