powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / использование памяти сервером
16 сообщений из 66, страница 3 из 3
использование памяти сервером
    #39266819
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitch,

смотрим mon$transaction, находим долгую транзакцию (самую старую). Если она не read read_committed, по коду аттачмента находим коннект в mon$attachments. Смотрим, что за приложение. Попутно, в соответствующих записях mon$statements смотрим, чего последнего делалось в этом коннекте или транзакции.
Идентифицируем, находим в приложении, исправляем.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266820
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitchпричина скорее всего в программе на delphi

Это ты из таблицы MON$TRANSACTIONS вывел или из пальца высосал?

petrovitchчто в ней может приводить к такому результату, я не понимаю, может кто подскажет?

Отсутствие вызова CommitTransaction. Которое, впрочем, компенсируется наличием вызова
Disconnect.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266824
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitch,

попутно смотрим видео
www.youtube.com/watch?v=9Th_14X6Ckg
www.youtube.com/watch?v=n35L7gdw51Q
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266827
petrovitch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
больше нечему, на сайте все обращения к базе выглядят так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public string GetLayer_admin()
{
string layer = "Не найдено";
            fb.Open();
FbCommand SelectSQL = new FbCommand("select LAYER from LAYERS", fb);
FbTransaction fbt = fb.BeginTransaction();
SelectSQL.Transaction = fbt;
FbDataReader reader = SelectSQL.ExecuteReader();
 
try
{
    while (reader.Read()) { layer = reader.GetString(0); }
}
finally
{
    fbt.Commit();
    reader.Close();
    SelectSQL.Dispose();
}
 
return layer;
}
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266828
petrovitch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,
спасибо, буду разбираться.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266832
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitchбольше нечему
То есть использовать мозг таблицы мониторинга ты отказываешься категорически? Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266834
petrovitch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
kdv,

разбираю таблицы, спасибо за подсказки.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266835
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitch ...но что в ней может приводить к такому результату, я не понимаю, может кто подскажет?
Читай у KDV на сайтике про "Управление транзакциями".
И ими, транзакциями, лучше управлять в "ручную", а не через свойство "автоСтарт".

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
try
   with query do
	begin
	  sql.Clear;
	  sql.Add('INSERT INTO Data' +'(поля таблицы )' + ' values ' + '(значения)');
	  ExecQuery;
	end;

except
	on E: Exception do
	  AddToLog('%d: Ошибка сохранения данных %s', [data^.DeviceID, E.Message]);
end;



нет явного указания на запуск транзакции.
В начале чё-нить типа "transaction.StartTransaction" и в конце "transaction.commit"...
Нафех не надо "sql.Clear;" и "sql.Add()", заменяется на "sql.Text:='Бла-бла-ба'".

В обобщенном виде должно быть что-нить типа:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
try
Fl:=true;
transaction.StartTransaction;
query.SQL.Text='Нука-сь всунь в таблю вот енто!';

try
query.ExecQuery;
except
  Fl:=false;
  transaction.Rollback;
  AddToLog('Ахтунг! Всовывают не впихуемое!');
  end;

finally
  if Fl then transaction.Commit;
  end;


(выдранный кусок, адаптированный, как сумел, под данный стиль Дельфи-кодинга)
Ну и напридумывать полезного и нужного можно еще.
Давить конфликта при Апдейтах, более подробный и расширенный лог и тд и тп.
:-)
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266840
petrovitch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо всем!
Похоже я нашел причину, у компонента TpFIBDataSet свойство AutoCommit было false, сменил на true, зависшие транзакции исчезли.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266843
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitchПохоже я нашел причину, у компонента TpFIBDataSet свойство AutoCommit было false, сменил на true, зависшие транзакции исчезли.
Вообще-то правильный стиль программирования под FB - раздельные транзакции: читающая и пишущая.
И в ФИБах оно есть изначально.
Читающая, в подавляющем большинстве случаев с параметрами "Пре_Коммит", а пишущая - по необходимости.
С ручным управлением каждой транзакцией по мере надобности в коде.
У KDV все это расписано подробно: что, как и почему по другому плохо.
:-)
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266844
petrovitch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рано обрадовался, когда писал предыдущее - зависших транзакций не было вообще, сейчас снова есть.
И появились ошибки:
02.07.2016 17:33:43 : ReloadCommandList не выполнилась т.к. frmActMain.dsCommandList.SelectQuery:
Can't format message 13:98 -- message file C:\Windows\firebird.msg not found.
Unable to complete network request to host "127.0.0.1".
Error writing data to the connection.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266845
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS: petrovitch , освой "парметрические запросы" и избавишь себя от кучи заморочек и не нужного топтания кнопок.
Особенно под WEB.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266847
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitch, ну так и положи файлик "firebird.msg" в каталог "C:\Windows\". :-)

Вопчем...
Пока не прочитаешь статью KDV - так и будешь тыркаться, как слепой кутёнок в собственные лужи.
Ты даже не видишь и не понимаешь, что реально происходит, а хочешь на косвенных это "вычислить".
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266848
petrovitch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LIne,
это не веб, программа, работает с базой.
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266850
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitchError writing data to the connection.
О... Уронить сервер - это нормальному человеку весьма сложно, но ты справился.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
использование памяти сервером
    #39266851
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovitch , немногим проще, так как можно прогнать под отладчиком.
Но сути это не меняет.
Пока не примешь правильную идеологию програманья под FB - так и будет.
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / использование памяти сервером
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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