powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
270 сообщений из 270, показаны все 11 страниц
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425830
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем

Решил добавить возможность рубануть выполняющийся запрос через MON$STATEMENTS.
Открываю, а в полях MON$TRANSACTION_ID, MON$TIMESTAMP null-ы
в таблице транзакций
Код: plsql
1.
2.
3.
4.
5.
MON$TRANSACTION_ID	MON$ATTACHMENT_ID	MON$STATE	MON$TIMESTAMP	MON$TOP_TRANSACTION	MON$OLDEST_TRANSACTION	MON$OLDEST_ACTIVE	MON$ISOLATION_MODE	MON$LOCK_TIMEOUT	MON$READ_ONLY	MON$AUTO_COMMIT	MON$AUTO_UNDO	MON$STAT_ID
25588	671	1	13.10.13 23:37:43	25588	16567	25577	2	0	0	0	1	3
25583	671	1	13.10.13 23:37:43	25583	16567	25577	2	0	0	0	1	4
25577	670	1	13.10.13 23:37:39	25577	16567	25553	3	-1	0	0	1	9
25570	670	1	13.10.13 23:37:23	25570	16567	25553	2	-1	1	0	1	10



Это как так?

И как тогда определить какой STATEMENT грохнуть?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425831
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На последней сборке тоже самое Firebird-2.5.3.26709-0_Win32.7z
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425850
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я неправильно понял. Разъясните

1.Стартую транзакцию
2.Выполняю запрос он возвращает всегда 1 строку
эмулирую зависание вывожу сообщение с кнопкой ОК
пока не нажму на ОК транзакция не завершится

Получается запрос выполнился и по этой причине в таблице NULL-ы?
Если да то тогда как остановить ту транзакцию на которую грешу, что она висит?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425851
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Транзакция - вещь пассивная, "висеть" она не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425861
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТранзакция - вещь пассивная, "висеть" она не может.


Ясен перец в ожидании. Вопрос как убить ее. В IB вроде как можно через таблицы tmp, в FB получаю

delete from MON$TRANSACTIONS where MON$TRANSACTION_ID ...

The INSERT, UPDATE, DELETE, DDL or authorization statement cannot be executed because the transaction is inquiry only.
Operation not supported.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425862
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикВопрос как убить ее.
Вместе с коннектом, иначе нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425870
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

вместо транзакции убивай оператор.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425873
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

вместо транзакции убивай оператор.

Это не оператор виноват, а сбербанк, со своим глючным ПО на терминалах банковских карт. Как всегда придется извращаться.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425874
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикКак всегда придется извращаться.
Тебе повторить как должна работать программа, чтобы глюки левого софта не создавали
проблем в базе?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425883
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикКак всегда придется извращаться.
Тебе повторить как должна работать программа, чтобы глюки левого софта не создавали
проблем в базе?..


Я тебя уже слышал в прошлый раз. У нас задачи и понятия разные. В некоторых местах мне надо именно через транзакцию делать. То что ты предложи я сто лет как использую.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425909
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикВопрос как убить ее.
Вместе с коннектом, иначе нельзя.


Случаем не в курсе, в тройке будет возможность, не весь коннект рубить, а только транзакцию?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425911
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

убить транзакцию нельзя. Её можно либо подтвердить, либо откатить.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425916
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

убить транзакцию нельзя. Её можно либо подтвердить, либо откатить.

"Убить" = "откатить", т.к. нельзя завершать то не зная что ;). Цель зависшие срубить быстро. Такое бывает редко но метко.

Ни кто из клиентов учить не хотят всякие настройки серверов и сетей, вот и извращаемся. К примеру дома у меня даже не получается сделать так чтобы процессы зависшие оставались, а клиенты умудряются. Только программу срублю в диспетчере на удаленном ПК тут же процесс сервера выгружается.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425948
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтикмне надо именно через транзакцию делать
Как же меня бесят такие заявления...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38425958
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик > мне надо именно через транзакцию делать

А для чего конкретно? Т.е. прикладная цель какая?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426002
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамприкладная цель какая?
Да рассказывал он уже в другом топике: нет никакой прикладной цели, он лучше выдумать не смог.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426008
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКак же меня бесят такие заявления...И это твоя слабость :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426045
Евгений БолтикРешил добавить возможность рубануть выполняющийся запрос через MON$STATEMENTS.
Открываю, а в полях MON$TRANSACTION_ID, MON$TIMESTAMP null-ы <...>
И как тогда определить какой STATEMENT грохнуть?Эти два поля (MON$TRANSACTION_ID, MON$TIMESTAMP) будут not-null только во время, пока выполняется стейтмент. Как только он заканчивается, они обNULLяются. Но тогда и уже срубать эту транзакцию "не за что": ведь она уже не грузит сервер, а простаивает.
Код: plaintext
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.
-- это результат запроса, когда в соседнем окне  еще идёт  "долгий стейтмент":
SQL> commit; select * from mon$statements s where s.mon$attachment_id<>current_connection;

MON$STATEMENT_ID                158
MON$ATTACHMENT_ID               15
 MON$TRANSACTION_ID              301
MON$STATE                       1
MON$TIMESTAMP                   2013-10-14 07:11:24.5460 
MON$SQL_TEXT                    0:4
insert into t select gen_id(g,1) from rdb$types,rdb$types,rdb$types
MON$STAT_ID                     9

MON$STATEMENT_ID                26
MON$ATTACHMENT_ID               15
MON$TRANSACTION_ID              <null>
MON$STATE                       0
MON$TIMESTAMP                   <null>
MON$SQL_TEXT                    <null>
MON$STAT_ID                     10

-- а это - то же самое, но когда этот "долгий стейтмент"  уже завершился  (но транзакция его еще не зафиксирована):
SQL> commit; select * from mon$statements s where s.mon$attachment_id<>current_connection;

MON$STATEMENT_ID                158
MON$ATTACHMENT_ID               15
MON$TRANSACTION_ID              <null>
MON$STATE                        0 
MON$TIMESTAMP                   <null>
MON$SQL_TEXT                    0:4
insert into t select gen_id(g,1) from rdb$types,rdb$types,rdb$types
MON$STAT_ID                     9

MON$STATEMENT_ID                26
MON$ATTACHMENT_ID               15
 MON$TRANSACTION_ID              <null>
MON$STATE                       0
MON$TIMESTAMP                   <null> 
MON$SQL_TEXT                    <null>
MON$STAT_ID                     10
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426173
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

Про откат транзакций через mon$transactions. Вроде бы изначально при проектировании mon таблиц рассматривалась такая функциональность, но потом по каким-то причинам было решено её не делать. Старожилы или разработчики могут ответить подробнее отчего так.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426227
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, если кто-либо сможет рассказать, чем оно принципиально лучше отстрела активного запроса (что в большинстве вменяемых приложений автоматически приводит к роллбеку активной транзакции)...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426234
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

я могу придумать только убиение тр-ций, потерянных кривым приложением, без отстрела собственно коннекта такого приложения. Дабы не удерживать OIT\OST.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426250
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

зачитывается. Хотя таким приложениям для профилактики лучше сразу коннект отстреливать, мало ли что там еще "теряется" :-)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426261
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но для этого, наверное, лучше (?) сделать таймаут для неактивных тр-ций (а так же для выполняющихся запросов и неактивных коннектов).

Например ввести такие таймауты и действия по их истечению:
- таймаут для выполняющегося запроса
по его истечению запрос останавливается, его изменения откатываются

- таймаут для неактивной тр-ции (т.е. такой тр-ции, в которой нет выполняющихся запросов)
по его истечению тр-ция откатывается (или подтверждается ?)

- таймаут для неактивного коннекта (т.е. такого коннекта, в котором нет выполняющихся запросов)
по его истечению все тр-ции коннекта откатываются (или подтверждаются ?) и сам коннект удаляется
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426268
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

А это разве для тройки не запланировано?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426289
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

запланировано, но сначала нужно об этом подумать. Почему не сейчас ? :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426314
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Если это можно будет конфигурировать на уровне БД (database.conf) или даже на уровне подключения, то почему бы и нет. Насчёт автоматического подтверждения транзакции вопрос спорный. Про откат согласен.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426322
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНасчёт автоматического подтверждения транзакции вопрос спорный
транзакция изначально задумана как атомарный набор изменений. В том, что админ сможет коммитить лишь ее часть, есть что-то глубоко неправильное, хотя возможно и в каких-либо случаях допустимое. Пока что я против автоматического подтверждения. А в целом Влад все правильно описал, примерно так оно и предполагалось.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426347
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как по мне, так примерно так было бы хорошо:hvladНапример ввести такие таймауты и действия по их истечению:
- таймаут для выполняющегося запроса
по его истечению запрос останавливается, его изменения откатываются+1
Еще бы до пары к этому таймауту в конфиге возможность передать таймаут прямо в параметрах транзакции, например я зажимаю параметр в конфиге в несколько секунд, а для особых случаев указываю явно, скажем пару минут.
hvlad- таймаут для неактивной тр-ции (т.е. такой тр-ции, в которой нет выполняющихся запросов)
по его истечению тр-ция откатывается (или подтверждается ?)выполняется дефолт экшн из конфига, который по-умолчанию роллбек. Опять таки возможность указать в параметрах транзакции, что "меня отстреливать не надо" была бы не лишней.
С коннектами аналогично.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426383
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

Кстати, да - хороший вопрос - как эти таймауты должны задаваться, и чья установка главнее - админа (в конфиге) или прикладного разработчика (в dpb\tpb\etc)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426391
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyКак по мне, так примерно так было бы хорошо:hvladНапример ввести такие таймауты и действия по их истечению:
- таймаут для выполняющегося запроса
по его истечению запрос останавливается, его изменения откатываются+1
Еще бы до пары к этому таймауту в конфиге возможность передать таймаут прямо в параметрах транзакции, например я зажимаю параметр в конфиге в несколько секунд, а для особых случаев указываю явно, скажем пару минут.


А мы не напоремся на труднопонимаемые ситуации несвоевременным отстрелом? Ну когда долгий отчет формируется за 10 минут. Потом мы вливаем туда порцию данных, ломаем индекс или еще чего и отчет начинает формироваться 15 минут. При вводе ограничения например на 12 минут мы утром обнаруживаем, что отчет не сфомировался, т.к. нас "отстрелили". Причем это сервером считается как штатная ситуация и в логах мы по идее фиг что увидим.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426396
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

а кто запрещает это логировать. Я имею ввиду что сервер должен логировать такие вещи. Тогда можно будет узнать кто виноват и что делать
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426403
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterА мы не напоремся на труднопонимаемые ситуации несвоевременным отстрелом? Ну когда долгий отчет формируется за 10 минут. Потом мы вливаем туда порцию данных, ломаем индекс или еще чего и отчет начинает формироваться 15 минут. При вводе ограничения например на 12 минут мы утром обнаруживаем, что отчет не сфомировался, т.к. нас "отстрелили". А что не понятного в этой ситуации ?
Тут даже есть плюс - ты своевременно узнаешь о том, что отчёт стал формироваться слишком долго.

DarkMasterПричем это сервером считается как штатная ситуация и в логах мы по идее фиг что увидим.А почему тот, кто формировал отчёт, не сохранил сообщение об ошибке ? Это ведь может быть не только таймаут, а что угодно. Причём же тут серверные логи ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426404
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDarkMaster,

а кто запрещает это логировать. Я имею ввиду что сервер должен логировать такие вещи. Тогда можно будет узнать кто виноват и что делать

Ну серверу явно сказали - отстрели нас через 5 минут. Что он и сделал - т.е. все штатно, без ошибок - зачем логировать?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426410
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

он ведь логирует начало и завершение свипа. Почему бы и не логировать эти вещи. К тому же ситуация не совсем штатная. Это своего рода предупреждение о проблемах.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426412
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я конечно имею ввиду логировать только то, что отвалилось по таймауту
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426424
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDarkMasterПричем это сервером считается как штатная ситуация и в логах мы по идее фиг что увидим.А почему тот, кто формировал отчёт, не сохранил сообщение об ошибке ? Это ведь может быть не только таймаут, а что угодно. Причём же тут серверные логи ?

1) Отчет может формироваться роботом. У которого одна задача - на приход часа Х запустить процедуру У.
2) Отстрел по таймауту - это ошибка? Ну я же вроде задаю интервал, значит закладываюсь на какие-то временные рамки.

P.S. Кстати, а в серверном коде такие ситуации можно будет обработать? Ну типа блоков WHEN...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426438
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

кто тебе мешает для твоего робота убрать таймаут. Это же вроде необязательный параметр. Моё мнение параметры заданные приложение при подключении должны иметь более высокий приоритет над теми что заданы в databases.conf
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426442
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денися конечно имею ввиду логировать только то, что отвалилось по таймаутуДавайте не будем впадать в маразм. Ибо так легко получить логгирование вообще всех запросов.
Кому надо логгировать таймауты - трейс в зубы.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426447
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster1) Отчет может формироваться роботом. У которого одна задача - на приход часа Х запустить процедуру У.
2) Отстрел по таймауту - это ошибка? Ну я же вроде задаю интервал, значит закладываюсь на какие-то временные рамки.1. Если он не ведёт лог своей работы с протоколом полученных ошибок - это плохой робот, бесполезный.
2. Для клиента - конечно ошибка, так же как и отмена запроса\аттача.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426451
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

в принципе нормально если это можно будет отследить в аудите. Но только мне кажется нужен отдельный переключатель или фильтр чтобы отследить только то, что отвалилось по таймауту, а не все откаченные транзакции.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426454
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

ну так это уже другой вопрос :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426461
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, еще транзакции бывают разные, например, для "read read_commited nowait" можно воткнуть часок-другой, для ридонли снапшота десяток минут, для райт снапшота вообще десяток секунд.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426464
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad2. Для клиента - конечно ошибка, так же как и отмена запроса\аттача.

Неоднозначно. Т.е. я как разработчик должен закладываться на какие-то среднепотолочные значения таймаутов "чтобы наверняка успеть", отдавать заказчику и молится, чтобы через Н-е время меня не начали задалбывать вопросами "а почему это наш супер пупер важный отчет не ушел на мыло директору?". Соответственно такую ситуацию даже воспроизвести толком нельзя будет без доступа к тому набору данных, который у заказчика. Доступ к которым могут и не дать. Да и для админом начнется тихий ужас с захардкоженными в коде таймаутами (по закону подлости его начнуть пихать куда можно и куда нельзя)...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426465
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще с таймаутами не всё так просто, как кажется на первый взгляд.

Один из приципиальных вопросов : кто должен отсчитывать время - клиент или сервер ?
Ответ в лоб - конечно сервер, т.к. клиент может отвалиться или зависнуть, а сервер об этом не узнает.
Однако может быть и обратная ситуация, когда клиент не обнаруживает потерю соединения или же сервер висит\слишком загружен чтобы вовремя информировать клиента о таймауте.
Таким образом мы приходим к необходимости отслеживать таймауты с обеих сторон.
И тут же возникает новый вопрос - нужно ли делать отдельные опции для клиента и сервера, или же ограничиться одним и тем же значением. Если идти по второму пути, то клиент должен как-то узнавать значение таймаута, заданное на сервере по-умолчанию.

Далее. Как считать таймаут для запроса ? Нужно ли начинать отсчёт времени заново после каждого фетча или выключать таймер сразу же после первого фетча ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426469
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterНеоднозначно. Т.е. я как разработчик должен закладываться на какие-то среднепотолочные значения таймаутов "чтобы наверняка успеть", отдавать заказчику и молится, чтобы через Н-е время меня не начали задалбывать вопросами "а почему это наш супер пупер важный отчет не ушел на мыло директору?".Всё однозначно, ты просто не даёшь себе подумать.
1. Отключай таймаут для своего проложения\БД, если ты не умеешь его готовить.
2. Для конкретного запроса выставляй заведомо большое значение таймаута.
3. Всегда все роботы обязаны реагировать на любые ошибки (кроме внезапного саморазрушения :) )
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladввести такие таймауты
IMHO - нах-нах. Геморроя много, пользы мало.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426477
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterДа и для админом начнется тихий ужас с захардкоженными в коде таймаутами (по закону подлости его начнуть пихать куда можно и куда нельзя)...А вот тут см. 14966027

PS И не надо бояться, в других серверах давно есть таймауты и никто о них не плачет :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426479
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladДалее. Как считать таймаут для запроса ? Нужно ли начинать отсчёт времени заново после каждого фетча или выключать таймер сразу же после первого фетча ?

Зовем какие-то хитросделанные УДФ`ы, которые могут бог знает что делать - получаем непонятное поведение. Никаких фетчей, а время тю-тю...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426483
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovhvladввести такие таймауты
IMHO - нах-нах. Геморроя много, пользы мало.А ты с кем разговариваешь ?
Т.е. на что ты вообще отвечаешь ? Ты против любых таймаутов ? Аргументация, как обычно, блестяща и полна
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426489
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterЗовем какие-то хитросделанные УДФ`ы, которые могут бог знает что делать - получаем непонятное поведение. Никаких фетчей, а время тю-тю...Есс-но, самый первый раз таймер взводится в момент начала выполения запроса.
Ты может таки начнёшь хоть чуть-чуть думать, перед тем как писать ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426498
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТ.е. на что ты вообще отвечаешь ? Ты против любых таймаутов ?
Фразу, на которую я отвечаю, я всегда цитирую. Это как бы основы нетикета.

И таки да, я против любых таймаутов, предлагающихся в процитированном сообщении.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426501
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDarkMasterНеоднозначно. Т.е. я как разработчик должен закладываться на какие-то среднепотолочные значения таймаутов "чтобы наверняка успеть", отдавать заказчику и молится, чтобы через Н-е время меня не начали задалбывать вопросами "а почему это наш супер пупер важный отчет не ушел на мыло директору?".Всё однозначно, ты просто не даёшь себе подумать.
1. Отключай таймаут для своего проложения\БД, если ты не умеешь его готовить.
2. Для конкретного запроса выставляй заведомо большое значение таймаута.
3. Всегда все роботы обязаны реагировать на любые ошибки (кроме внезапного саморазрушения :) )

Та не, я не то, чтобы против, я - за взвешенное решение... А выставление заведомо большего значения - суть вещь импирическая и (иногда!) труднопрогнозируемая, ибо зависит от...

P.S. Мои-то роботы реагируют ;) Они даже друг за дружкой следят ;)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426504
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

ИХМО отсчёт таймера должен вестись от начала транзакции и не зависеть от того сколько там фетчей сделано. Единственное, что наверное для readonly RC транзакций его вообще не применять.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426514
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovФразу, на которую я отвечаю, я всегда цитируюЦитируй так, что бы было понятно, что же ты цитируешь.
"Это как бы основы нетикета" (c)

Dimitry SibiryakovИ таки да, я против любых таймаутов, предлагающихся в процитированном сообщении.Без аргументации лучше воздержись от дальнейшего участия в этой ветке.
Вот такая просьба.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426515
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕсс-но, самый первый раз таймер взводится в момент начала выполения запроса.
Ты может таки начнёшь хоть чуть-чуть думать, перед тем как писать ?

Гм... Я не могу со 100% уверенностью указать длину таймаута. Что непонятно-то? Все остальное - так, возможные сопутствующие проблемы.

P.S. А может завести отдельный процесс таймера, который бы что-то там обновлял в контекстных переменных?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426521
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисотсчёт таймера должен вестись от начала транзакции и не зависеть от того сколько там фетчей сделаноА давай подумаем немного: вот есть запрос, возвращающий резалтсет. Вот его жизненный цикл:
1. execute
2. fetch
...
N. fetch

Ты предлагаешь ставить таймер в момент (1) и, например, если 10 записей было успешно сфетчено, а 11-я не успела, то обламывать такой запрос. Так ?

А не будет ли правильнее сбрасывать и снова ставить таймер после каждого фетча ?
Представь себе запрос, который выдаёт по 1-ой записи в секунду (может сетка медленная, а может записи трудно вычисляются).
И ты предлагаешь его остановить после X записей, при таймауте в X секунд ? Даже если он вполне себе может выдать все 10X записей в том же темпе ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426524
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

это уже другая задача. Исполнение скриптов по встроенному таймеру. Хотя задачу отстрела и можно подвести под неё, но пока это вроде не планируется.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426532
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

вопрос конечно интересный. Т.е. ты как альтернативу предлагаешь вести отсчёт от последнего фетча. Тогда уж и в случаем набора модифицирующих запросов отсчёт надо вести от последнего активного запроса.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426533
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Таблоида на вас нету с его 100500 одновременно запущенными окнами и с тяжелыми запросами ;)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426535
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

а вот его тоже ждём в этой ветке. Он сейчас 100500 примеров придумает в обосновании того когда это нужно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426539
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladБез аргументации лучше воздержись от дальнейшего участия в этой ветке.

Ну, моя проскопия для тебя, может, и не аргумент, но лично я привык на неё полагаться.
Предложенные тобой таймауты это лечение симптомов, не проблем. При их применении будут
игнорироваться баги в приложениях, которые иначе были бы пофикшены.

Таймаут для выполняющегося запроса? Ага, это же гораздо проще чем ускорять выполнение запроса.
Таймаут для неактивной транзакции? Ага, это ведь гораздо проще чем устранить негативное
влияние этой транзакции.
Таймаут неактивного коннекта? Ага, наплевать, что этот коннект ждёт событий из базы или
откуда-то снаружи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426554
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

это всё в идеальном мире. На практике как раз бывает всё это очень нужным. Разработчик может пользоваться какой-нибудь CRM системой, где ему не доступен её исходный код, а есть только возможность делать настройки из весьма ограниченного набора.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426569
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА не будет ли правильнее сбрасывать и снова ставить таймер после каждого фетча ?


Если я допущу алгоритмический или еще какой косяк в примерно таком коде:

Код: plsql
1.
2.
3.
4.
5.
6.
  while X<10 do
    begin
       if (X=5) then Y=very_very_slow_ufd_if_x_equal_5(:X); -- не дай бог этот IF еще как-то вычислиется в зависимости от фазы Луны
       else Y=X;
       suspend;
    end


и таки решу использовать таймауты (мы же все на 100% непогрешимы ;) - то причину отлета по таймауту фиг быстро найду... Такой подводный камень имеет место быть, или я опять "не умею готовить"?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426573
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

На вечный цикл внимание можно не обращать ;)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426592
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Ну вообще-то если мы не говорим о CRM-системах - нам вообще-то пофигу, что отчет генерится 12 минут вместо 10. Тут более приоритетным является именно факт генерации отчета. А вот если отчет перестает генерироваться из-за того, что где-то кто-то ошибся со временем - это упс. Т.е. я в принципе не должнен заморачиваться, что если мой запрос нормально переваривает 10 млн. записей - он когда-то может отказаться переварить 30 млн, так как у него может просто не хватить времени.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426598
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

если разработчик/админ имеет такие запросы/ХП и выставил таймаут - то он ССЗБ. По умолчанию вроде как таймауты будут выставлены в 0 (т.е. работать не будут). Кроме того, при отстреле по таймауту клиенту можно кинуть ошибку "Ваша транзакция была откачена, поскольку был превышен таймаут 10 секунд".
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто всё в идеальном мире.
А на практике вместо того, чтобы дерьмо вычищать, его надо просто засунуть под ковёр, да...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426603
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

ну и что. Поймает твой робот такую ошибку (выше указано), которую залогирует. Будет повод админу разобраться с неправильным значением таймаута или запросом.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426607
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я же сказал, что откат не должен быть молчаливым. Тогда будет повод исправить ошибки.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426617
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovбыли бы пофикшеныС чего бы это ?

PS я пользую твой способ цитирования, правда хорошо получилось ? Вот только не дождался, пока цитируемое на пару страниц назад уйдёт. Ничё, в следующий раз...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426621
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Ага, конечно. Сейчас наблюдаем кучку поделок на ФБ, которые вытворяют бог знает что (в соседний форум по Дельфям иногда страшно заглядывать). Потом народ начнет активно пихать таймауты в свои произведения (как здорово - у меня любая транзакция живет не более 10 секунд). А потом админы сидят и не могут понять, почему это "ваша транзакция была откачена", если ПО отработало уже Н-е время без нареканий. И хто виноват? Данные? Сетка?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426623
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще есть, хоть и немного, хостеров предоставляющих хостинг для файрберда, им тоже нужны вменяемые рычаги для ограничение нагрузки на железку/виртуалку.
Если я работаю на своем сервере, то для меня имеют приоритет настройки, которые я передал серверу как разработчик, потом уже конфиги от админа/ДБА. А вот если я хостер, то у меня есть ненулевой интерес прижать хвосты арендаторам, чтоб не расслаблялись.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426626
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDarkMaster,

ну и что. Поймает твой робот такую ошибку (выше указано), которую залогирует. Будет повод админу разобраться с неправильным значением таймаута или запросом.

Денис - это в идеальном мире (с) Доступа к исходникам может не быть или быть набор очень ограниченных параметров ;)

Ничего, что я тебя процитировал? ;)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426636
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

и чего? Кто тебе помещает в конфиге отключить/увеличить таймаут. Туда то у тебя доступ есть.

Хотя согласен с приоритетом вопрос неоднозначен. Думаю там придётся ещё вводить параметр разрешить ли приложениям переопределять параметры таймаутов выставленных на БД.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426637
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladС чего бы это ?
С того, что у кривой софтины вообще-то есть два пути: быть пофикшенной или перестать
использоваться. Но эти таймауты, которые (вследствие того, что Firebird не является
системой реального времени) будут вылазить в самых непредсказуемых местах (и ещё не дай
бог с невнятной ошибкой "timeout happened", как вы это любите) затруднят продвижение
софтины по жизненному циклу. Она будет глючить слишком непонятно для того чтобы её
пофиксили и не слишком часто для того чтобы выбросили.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426639
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТ.е. ты как альтернативу предлагаешь вести отсчёт от последнего фетча. Да, я предлагаю подумать об этой альтернативе тоже. Перед тем, как делать.

Симонов ДенисТогда уж и в случаем набора модифицирующих запросов отсчёт надо вести от последнего активного запроса.Есс-но, а как же ещё ?
Или ты о запросах в PSQL модуле (процедуре\триггере\exec block'е) ?
Тогда не выйдет, весь модуль - это один запрос с точки зрения сервера
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426645
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИли ты о запросах в PSQL модуле (процедуре\триггере\exec block'е) ?

Не в коем разе.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426649
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterЕсли я допущу алгоритмический или еще какой косяк ...
и таки решу использовать таймауты (мы же все на 100% непогрешимы ;) - то причину отлета по таймауту фиг быстро найду... Такой подводный камень имеет место быть, или я опять "не умею готовить"?А причину тормозов ты быстро найдёшь ? А о том, что они вообще есть, ты как узнаешь ?

Я не могу понять причину твоего сопротивления таймаутам... Если с Сибиряковым всё ясно (он просто вредный, упёртый и любит противоречить из принципа), то тебя я пока понять не могу.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426651
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне видится, что основным применением все-таки должно быть админско-конфигурационное. Задавать таймауты в приложении придется разве что разработчикам псевдо-realtime-задач со временем реакции, прописанным в ТЗ к их софтине, ну или еще в каких-либо редких случаях. Причем разработчики зачастую имеют слабое представление о железе, на котором крутится сервер, поэтому приоритетным должно быть значение из конфига. Заодно это защитит админов от "крутых пацанов", зашивших в коде таймаут в 1 год и считающих, что всех обманули. Либо каким-либо образом надо учитывать оба таймаута (через MIN?)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426654
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovбудут вылазить в самых непредсказуемых местахНе включай их, кто тебя заставляет ? И вообще не переходи на новую версию ФБ, с такой кривой софтиной - в чём проблемы-то ? :)

Вот только другим не мешай
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426655
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladС чего бы это ?
С того, что у кривой софтины вообще-то есть два пути: быть пофикшенной или перестать
использоваться. Но эти таймауты, которые (вследствие того, что Firebird не является
системой реального времени) будут вылазить в самых непредсказуемых местах (и ещё не дай
бог с невнятной ошибкой "timeout happened", как вы это любите) затруднят продвижение
софтины по жизненному циклу. Она будет глючить слишком непонятно для того чтобы её
пофиксили и не слишком часто для того чтобы выбросили.


+100
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426663
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster, Dimitry Sibiryakov

не вижу проблем. Ещё раз. Ну будет клиенту показана ошибка "Истёк таймаут". Это лишь означает, что либо его надо увеличить, либо отключить вовсе. Вот и всё.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426665
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

я пока вижу так
а) значение таймаута по-умолчанию, задано в в конфиге
б) значение таймаута, заданное в приложении
в) предельное значение таймаута, задано в конфиге

Эффективное значение вычисляется как MIN(в, COALESCE(б, а))
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426667
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ не могу понять причину твоего сопротивления таймаутам... Если с Сибиряковым всё ясно (он просто вредный, упёртый и любит противоречить из принципа), то тебя я пока понять не могу.

Я не сопротивляюсь. Я пытаюсь сказать, что непредвиденное проявление таймаутов в нормальных, долгоживущих проектах есть зло. В необходимости которого меня пока не убедили. Собственно DS это уже озвучил.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426673
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrЗадавать таймауты в приложении придется разве что разработчикам псевдо-realtime-задач со временем реакции, прописанным в ТЗ к их софтине, ну или еще в каких-либо редких случаях.Вот совсем не редкие случаи, когда таймаут можно\нужно задавать в приложении:
- инструменты вроде IBE
- тяжёлые отчёты, гарантированно не умещающиеся в умолчательные 30-60 сек
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426674
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterЯ пытаюсь сказать, что непредвиденное проявление таймаутовА в каком месте оно непредвиденное ? Они же в конфиге настраиваются, где проблемы ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426675
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

кто тебя заставляет их использовать?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426683
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDarkMasterЯ пытаюсь сказать, что непредвиденное проявление таймаутовА в каком месте оно непредвиденное ? Они же в конфиге настраиваются, где проблемы ?

Влад, ты читаешь, что я пишу или по диагонали? Вот решил я поиспользовать таймауты (да, такой ССЗБ). У меня есть 10 млн записей. Я что-то с ними делаю. Я укладываюсь в 10 минут. Для запаса ставлю 20 минут... Проходит время. Записей у меня становится 30 млн. Я перестаю укладываться - лезет таймаут. Т.е. вчера его не было, сейчас он есть. По факту. До тех пор, пока кто нить (я, админ, господь бог) не исправит эту ситуацию - система не работает. Вообще. При накладках (отпуска/болезни/другие города и страны) - система стоит не минуты, а часы и дни (заказчик теряет время и деньги, админы получают по шапке и бьют в колокола и т.п.).

И это вместо того, чтобы отработать не за 20, а за 21 минуту, что никак не критично.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426686
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисне вижу проблем. Ещё раз. Ну будет клиенту показана ошибка "Истёк
таймаут". Это лишь означает, что либо его надо увеличить, либо отключить вовсе. Вот и всё.

Т.е. либо запрос укладывается в таймаут и таким образом тот вообще не срабатывает, либо
запрос не укладывается и тогда таймаут надо увеличить, чтобы тот срабатывать перестал. В
чём смысл?

PS: Долгоиграющие запросы ловятся аудитом, там есть специальный фильтр для этого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426700
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterПроходит время. Записей у меня становится 30 млн. Я перестаю укладываться - лезет таймаут.Дык ить благо! Это как боль, она предупреждает.

У меня висит открытая заявка "оптимизировать отчеты собирающиеся более 5 минут", для этого я просил постановщика обежать народ, собрать данные, она что-то там насобирала, что-то я сделал, так или иначе (в основном вынос ресусожрущей хрени на вспомогательный сервер с односторонней репликацией), но тем не менее наблюдаем подтормаживание основного сервера по закрытию квартала. А тут бы я вкручиваю таймаут в 5 минут, и к концу рабочего дня получаю полную картину.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426703
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPS: Долгоиграющие запросы ловятся аудитом, там есть специальный фильтр для этого.Еще интересней не допустить тормозов, аудит оно постфактум.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426714
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

тут уже ответили. Прок от этого есть хотя бы хостерам. Чтобы один чудак написавший свою систему криво не ставил весь сервер раком.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426718
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЕще интересней не допустить тормозов, аудит оно постфактум.

Ну а таймауты это способ не допустить тормоза с помощью гильотины. Да, запросы перестают
выполняться медленно. Они вообще перестают выполняться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426721
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

Это если ты "сидишь" на системе и ее мониторишь. А если ты ее отдал заказчику год назад (вот только не надо говорить, что у всех заказчиков есть админы и техсаппорт) - начинается игра в рулетку - выстрелит али нет.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЧтобы один чудак написавший свою систему криво не ставил весь сервер
раком.
Для этого не нужны таймауты, для этого нужно SMP. И если верить бравурным заявлениям, в
тройке оно уже есть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426730
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovдля этого нужно SMP.
И квоты на процессор, диск, память и т.д.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426739
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

и чем спасет тебя SMP например от запроса насилующего HDD или поедающего немерено памяти?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426741
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDimitry Sibiryakovдля этого нужно SMP.
И квоты на процессор, диск, память и т.д.


Этого сразу не увидел. Согласен нужно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426754
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ксати. Я понимаю ещё квотировать диск по объёму, но вот как быть с IO?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426755
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterВлад, ты читаешь, что я пишу или по диагонали?Стараюсь.
DarkMasterВот решил я поиспользовать таймаутыТогда о какой непредвиденности идёт речь ?
Решил использовать ? Значит знаешь о потенциальных проблемах. Значит можешь их обработать.
Не можешь (не знаешь как) обработать ? Не используешь таймауты.
Не так ?

Чем "твой" апокалипсис с таймаутами отличается от "случайно" удалённого индекса ? Или от "вдруг" изменившегося плана ? Когда твой 20-минутный отчёт начинает колбасить полтора часа и никто другой вообще не может работать все эти полтора часа ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426770
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискак быть с IO?
Гугель утверждает, что для линуха есть способы:
http://www.cyberciti.biz/tips/linux-set-io-scheduling-class-priority.html
Как и для Windows: http://en.wikipedia.org/wiki/Windows_Vista_I/O_technologies
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426776
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Случайно отвалившийся индекс не приведет к отказу работы запроса. Он все равно "доколбасит". А отстреленный запрос приведет к угадайке - что случилось и необходимости править конфиги. Что по лености скроет проблему с отвалившимся индексом - поменяли таймаут и все заработало. Т.е. лечить будем не причину, а следствие.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426785
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

на мой вопрос ты не ответил, посему считаю ответ положительным.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426786
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу а таймауты это способ не допустить тормоза с помощью гильотины.Как в ПДД, если твое ТС не способно развить скорость в 40км/ч, ему нехрен делать на автомагистрали.
Так и тут, не уложился в пару минут, вэлкам на вспомогательный сервер.

Время исполнения довольно интегральный критерий, он уже вбирает в себя отчасти и дисковой ИО, и проц и память. Да, возможность рулись по отдельность тоже интересна, но не все сразу. :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426792
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть кто-нибудь видит хоть какой-нибудь смысл в продолжении обсуждения таймаутов тут на sql.ru ?
Хоть кто-нибудь видит хоть какой-нибудь смысл в попытке обсуждения любой новой фичи тут на sql.ru ?
Хоть кто-нибудь помнит предыдущую мою попытку обсудить новую фичу публично, и что из этого вышло ?
...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426794
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне интересно, я читаю весь топик. Если что могу проредить/причесать.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426795
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Мой "апокалипсис" отличается тем, что он закончится (когда-нить), и возлагаемая на запрос работа будет выполнена. При отстреле он даже не успеет начаться и работа выполнена не будет. Причем при отстреле обязательно нужно будет вмешательство со стороны. А первом случае - можно будет и погодить если что.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426797
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

успокойся. Не все такие как DS. Есть люди которым данный функционал действительно интересен. Он занимается репликатором, поэтому любые фичи к нему не относящиеся или затрудняющие его работу воспринимаются им в штыки.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426798
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterОн все равно "доколбасит".А если оператор тупо ошибся и получает отчет не за 1 крайний месяц, а, например, за 13 месяцев? Подумаешь 1 цифирь в годе, эка невидаль!
DarkMasterТ.е. лечить будем не причину, а следствие.Желающие могут лечить следствие. Мне интересней не образовывать заторы на рабочем сервере. Мы это и так делаем, но тут будет гарантированный превентивный механизм.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426802
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

боишься за корректность работы своего приложения не пользуйся таймаутами. Кто тебя заставляет их использовать?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426805
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladХоть кто-нибудь видит хоть какой-нибудь смысл в продолжении обсуждения таймаутов тут на sql.ru ?
Есть такие, кто мало пишет, но всё читает.
hvladХоть кто-нибудь видит хоть какой-нибудь смысл в попытке обсуждения любой новой фичи тут на sql.ru ?
А где ещё? В девеле на англицом?
hvladХоть кто-нибудь помнит предыдущую мою попытку обсудить новую фичу публично, и что из этого вышло ?
Риторический )
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426806
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladХоть кто-нибудь видит хоть какой-нибудь смысл в попытке обсуждения любой новой
фичи тут на sql.ru ?
Нет смысла обсуждать какую-либо фичу где угодно, потому что вы всё равно сделаете по-своему.
Последняя попытка обсудить что-то в firebird-devel закончилась полным молчанием. Те
попытки, что не закончились полным молчанием - см. абзац выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426807
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterМой "апокалипсис" отличается тем, что он закончится (когда-нить)Откуда такая уверенность ?
DarkMasterПри отстреле он даже не успеет начатьсяС чего бы это ? Или ты про таймаут в 0 сек говоришь ?

Ты забываешь, что движок СУБД в первую очередь заботится о выполнении всех запросов, а не о каком-то одном . Поэтому в случае с обломанным тяжёлым запросом общая производительность системы будет выше, чем если все будут тормозить неизвестное кол-во времени.

Ты упираешь на то, что нет возможности предсказать время выполнения этого запроса и настроить для него правильный таймаут, но это ничем не отличается от невозможности предсказать план выполнения запроса и кол-во инструкций процессора\дискового IO нужных для его выполнения.

Давай просто запретим параллельные коннекты, для того, чтобы отчёт гарантированно выполнился и никому не мешал ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426815
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЕсли что могу проредить/причесатьЯ о цензуре даже не думал, не надо :)

Симонов Денисуспокойся. Не все такие как DSЯ вроде спокоен. А на ДС я давно кладу, когда надо, и прислушиваюсь, когда надо :)

Меня просто расстраивает отсутствие конструктива и альтернативных разумных предложений.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426816
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Попробую прочистить ХШ Сибирякова :)

1. Таймауты для транзакций - в целом нужны.

2. В моих приложениях они должны задаваться при старте каждой конкретной транзакции. Если такой параметр не задан - из конфига сервера. По умолчанию - бесконечность.

Код: sql
1.
start transaction read_committed rec_version nowait timeout 200 (мс)



ибо у меня несколько сортов транзакций
- пользовательский интерфейс (хоть сто лет на чтении), до 2 сек на реакцию
- пакетная обработка (до нескольких часов)
- аналитические отчеты (до минут)
- оперативные отчеты до 2 сек
- OLTP - до 500 мс

один параметр в конфиге сервера ничего не решит, при этом на него уйдет уйма столь ценного меха времени разработчиков.

3. С клиентской стороны должен быть гарантированный вызов исключения.

4. Пришло время осенне-зимнего периода донаций. Как обычно, через Пешкова?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426820
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНет смысла обсуждать какую-либо фичу где угодно, потому что вы всё равно сделаете по-своему.Ты только это и способен сказать, я в курсе :)

Dimitry SibiryakovПоследняя попытка обсудить что-то в firebird-devel закончилась полным молчаниемТы про своё дурацкое не умное предложение грантовать GTT все права ? Я тебе сразу сказал, что оно дурацкое не умное.
И в трекере это подтвердили, не зависимо от меня.

Или ты про свой вопрос о правах UDR ? Так это не обсуждение, это вопрос, хочешь обсуждения - предложи что-нить не дурацкое умное
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426824
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это мы таким образом приходим что таймаут можно выставить в трёх местах
- на базу данных (database.conf)
- при подключении
- при старте транзакции

мне кажется либо второй либо третий пункт здесь лишний. Кстати может ли потребоваться установить лимит на автономную транзакцию?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426830
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТы упираешь на то, что нет возможности предсказать время выполнения этого запроса и настроить для него правильный таймаут, но это ничем не отличается от невозможности предсказать план выполнения запроса и кол-во инструкций процессора\дискового IO нужных для его выполнения.


Не, ну зачем передергивать? Я указываю на то, что время жизни выполняемого SQL запроса в системе может менятся. И что неправильная настройка приведет к тому, что запрос перестанет выполнятся. Т.е. не просто замедлится запрос, а прервется. Я могу предвидеть, что запрос выполняется от Н до Н+10 минут на текущих доступных данных/индексах и на текущем доступном железе. Любые подвижки в данных/индексах или в железе - и опять придется пересматривать, что и где поплыло.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426833
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor1. Таймауты для транзакций - в целом нужны.

2. В моих приложениях они должны задаваться при старте каждой конкретной транзакции. Если такой параметр не задан - из конфига сервера. По умолчанию - бесконечность.

Код: sql
1.
start transaction read_committed rec_version nowait timeout 200 (мс)


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

3. С клиентской стороны должен быть гарантированный вызов исключения.

4. Пришло время осенне-зимнего периода донаций. Как обычно, через Пешкова? 1. Ну так и я о том же :)

2. Именно это и предлагается. Разве что про кол-во меха переоценено :)
Ну и я не вижу реакции на 14967127 , мне этот путь пока что кажется оптимальным компромиссом между кол-вом настроек и функционалом.

3. Есс-но, обломанный запрос вернёт isc_cancelled (или какой-нить isc_query_timeout).
Обломанный аттач\тр-ция венут ошибку при попытке с ними работать.
Если сильно припечёт, можно подумать о клиентских колбеках для события таймаута.
Но тут же не хотят думать, тут хотят всё похерить не думая.

4. Это не ко мне :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426835
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИли ты про свой вопрос о правах UDR ? Так это не обсуждение, это вопрос,
хочешь обсуждения - предложи что-нить умное
Чтобы предложить что-нибудь умное, надо убедиться, что то, что есть - глупое.
<оптимизьм on>
Может, Адриано уже обо всём побеспокоился, поскольку та тема уже поднималась два года
назад. Но, поскольку обсуждение как обычно было невнятное, его результата я не помню.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426841
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто мы таким образом приходим что таймаут можно выставить в трёх местах
- на базу данных (database.conf)
- при подключении
- при старте транзакцииНе забываем, что самих таймаутов тоже предлагается (пока ещё) несколько видов.

Симонов ДенисКстати может ли потребоваться установить лимит на автономную транзакцию?Конечно может. Думаю этот вопрос будет решён так:
- значение по умолчанию
- значение из родительской тр-ции
- если введём полный синтаксис св-в тр-ции для автономок, то там и таймаут можно будет задать тоже
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426842
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну так прояви настойчивость. Хоть раз в полезном русле :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426846
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterНе, ну зачем передергивать?Веришь - я не передёргиваю, я пишу так, как я тебя понимаю.
Вот скажи - чем тебе вредят таймауты, отключенные по умолчанию ? Чем ?

DarkMasterЛюбые подвижки в данных/индексах или в железе - и опять придется пересматривать, что и где поплыло.Ну так при чём тут таймауты ? Поплыть может и без них :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426853
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис- на базу данных (database.conf)
- при подключении
- при старте транзакции

мне кажется либо второй либо третий пункт здесь лишний.
Не лишний. Для RO/RW транзакций логично задавать разные таймауты + деление на уровне конфига.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426856
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpastor1. Таймауты для транзакций - в целом нужны.

2. В моих приложениях они должны задаваться при старте каждой конкретной транзакции. Если такой параметр не задан - из конфига сервера. По умолчанию - бесконечность.

Код: sql
1.
start transaction read_committed rec_version nowait timeout 200 (мс)


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

3. С клиентской стороны должен быть гарантированный вызов исключения.

4. Пришло время осенне-зимнего периода донаций. Как обычно, через Пешкова? 1. Ну так и я о том же :)

2. Именно это и предлагается. Разве что про кол-во меха переоценено :)
Ну и я не вижу реакции на 14967127 , мне этот путь пока что кажется оптимальным компромиссом между кол-вом настроек и функционалом.

3. Есс-но, обломанный запрос вернёт isc_cancelled (или какой-нить isc_query_timeout).
Обломанный аттач\тр-ция венут ошибку при попытке с ними работать.
Если сильно припечёт, можно подумать о клиентских колбеках для события таймаута.
Но тут же не хотят думать, тут хотят всё похерить не думая.

4. Это не ко мне :)

По второму пункту полностью солидарен.
По третьему - возможно надо получать подтверждение из клиента, т.е. обработать как-то чтобы транзакция или запрос при желании могли быть продолжены. Если конечно он не на разрыв коннекта. Опять же регулировать можно в конфиге. Хотя возможно это уже перебор.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426863
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

не я имею ввиду что на уровне подключений тогда лишний. Раз мы задаём длительность на уровне транзакций.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426868
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad3. Есс-но, обломанный запрос вернёт isc_cancelled (или какой-нить
isc_query_timeout).
Обломанный аттач\тр-ция венут ошибку при попытке с ними работать.
Обычный способ работы с ошибками в транзакции это
[src Delphi]StartTransaction
try
...
Commit;
except
Rollback;
raise;
end;[/quot]
Я очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из
isc_rollback_transaction() при попытке отката уже убитой транзакции.

PS: Тех чудаков, которые ставят Commit в finally (привет, IBSurgeon) мне искренне не жаль.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426885
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

сходу не могу придумать аргументов. Так что звучит разумно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426907
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПо третьему - возможно надо получать подтверждение из клиента, т.е. обработать как-то чтобы транзакция или запрос при желании могли быть продолжены. Если конечно он не на разрыв коннектаЕсли инициатор отмены - клиент, то, технически, можно сделать колбеки до и после отмены.
Симонов ДенисХотя возможно это уже переборВот-вот :)

Если же отмена возникает на сервере, то я не думаю, что он должен консультироваться с клиентом.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426912
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЯ очень сильно надеюсь, что никому не придёт в голову возвращать
ошибку из isc_rollback_transaction() при попытке отката уже убитой транзакции.
И, кстати: использовать bad_trans_handle в качестве ошибки, возвращаемой при попытке
использования убитой транзакции - тоже плохая идея.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426915
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЯ очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из
isc_rollback_transaction() при попытке отката уже убитой транзакции.А почему, собственно ты так сильно на это надеешься ?
Как по мне, тут самое место ошибке isc_bad_tra_handle (ну или isc_cancelled, если это будет возможно).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426928
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА почему, собственно ты так сильно на это надеешься ?
Потому что в документации по IB API недвусмысленно написано "isc_rollback_transaction()
никогда не обламывается и гарантированно завершает транзакцию". И это правильно (в чём я
имел возможность убедиться на обратном примере с ODBC).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426942
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hvlad]Симонов Денисэто мы таким образом приходим что таймаут можно выставить в трёх местах
- на базу данных (database.conf)
- при подключении
- при старте транзакцииНе забываем, что самих таймаутов тоже предлагается (пока ещё) несколько видов.
[quot]

для разрыва коннекта можно указывать в 1 и 2
для отмены транзакции в 1 и 3
для отмены оператора 1 и ?

hvladСимонов ДенисКстати может ли потребоваться установить лимит на автономную транзакцию?Конечно может. Думаю этот вопрос будет решён так:
- значение по умолчанию
- значение из родительской тр-ции
- если введём полный синтаксис св-в тр-ции для автономок, то там и таймаут можно будет задать тоже

как по мне так нужны все варианты. Из родительской если явно ничего не указано. Первый вариант если только явно описан в синтаксисе (timeout default)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426949
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDarkMasterНе, ну зачем передергивать?Веришь - я не передёргиваю, я пишу так, как я тебя понимаю.
Вот скажи - чем тебе вредят таймауты, отключенные по умолчанию ? Чем ?

DarkMasterЛюбые подвижки в данных/индексах или в железе - и опять придется пересматривать, что и где поплыло.Ну так при чём тут таймауты ? Поплыть может и без них :)

Мне отключенные таймауты не мешают. Меня смущает необходимость обязательных телодвижений при штатном замедлении запроса.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426953
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

таймауты отключены - никаких телодвижений
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426961
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПотому что в документации по IB API недвусмысленно написано "isc_rollback_transaction()
никогда не обламывается и гарантированно завершает транзакцию". И это правильноЯ не говорю, что это не правильно.
Я хочу аргументов, а не бла-бла вроде:Dimitry Sibiryakovв чём я имел возможность убедиться на обратном примере с ODBC
Ибо завтра ты будешь утверждать обратное, а у меня не будет аргументов :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426979
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ хочу аргументов
Каких аргументов ты хочешь? У приложения есть два способа завершить транзакцию:
isc_commit_transaction() и isc_rollback_transaction(). Третьего не дано, а значит хотя бы
один из этих способов должен работать вне зависимости от текущего состояния транзакции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426994
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

и какие проблемы влечёт за собой isc_bad_trans при попытке сделать роллбек несуществующей тр-ции ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427032
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladкакие проблемы влечёт за собой isc_bad_trans при попытке сделать роллбек
несуществующей тр-ции ?
Сначала возникает недоумение: "и что мне теперь делать", ответом на которое служит "да и
забить на эту ошибку". Что, собственно, и равноценно вообще отсутствию ошибки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427039
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСначала возникает недоумение: "и что мне теперь делать"Обнулить своё хендл тр-ции и отпустить связанные с ней ресурсы.
Dimitry SibiryakovЧто, собственно, и равноценно вообще отсутствию ошибки.Тебе равноценно - игнорируй её. Но не заставляй других делать каку...

Dimitry SibiryakovЯ очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из
isc_rollback_transaction() при попытке отката уже убитой транзакции.Ну как, прошло ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427054
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladОбнулить своё хендл тр-ции и отпустить связанные с ней ресурсы.

Угу, это при ошибке. А что делать в случае отсутствия этой ошибки? Сэкономлю время,
поскольку ответ будет "обнулить своё хендл тр-ции и отпустить связанные с ней ресурсы".
Так в чём фишка?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427097
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТак в чём фишка?В том, что нельзя прятать ошибки\события от пользователя.
Если тебе по барабану, от чего и как закрылась твоя тр-ция, то есть другие люди, которые (моют руки) реагируют на ошибки.

Конструктив есть, или ты опять упёрся ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427110
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВ том, что нельзя прятать ошибки\события от пользователя.

Эта ошибка/событие произошло не здесь. Поведение Rollback в данном случае уже будет
"снежный ком", который как раз обычно и прячет ошибки от пользователя. В вышеприведённом
коде если обработать ошибку и выкинуть исключение из Rollback, оно перекроет оригинальный
eхception и пользователь уже никогда не узнает что там было. Если ты никогда на эти грабли
не наступал, то... уж не знаю - завидовать или сочувствовать.

hvladКонструктив есть, или ты опять упёрся ?
Я высказал своё мнение "rollback не должен возвращать ошибок". Оно отлично от твоего. Что
ты посчитаешь в данном случае "конструктивом"? Что я изменю своё мнение? Или приведу ещё
десяток граблей на которые наступал в дополнение к уже названным?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427134
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с
базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы
собираетесь пихать ошибку таймаута? Подождёте следующего обращения к базе? Которым может
быть как раз дисконнект?..

Чуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там
себе делает. К базе опять же не обращается . Собираетесь ему обломать всю
малину или только первичный коннект?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427140
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с
базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы
собираетесь пихать ошибку таймаута? Подождёте следующего обращения к базе? Которым может
быть как раз дисконнект?..

Чуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там
себе делает. К базе опять же не обращается . Собираетесь ему обломать всю
малину или только первичный коннект?

конечно при обращении когда же ещё. А как сейчас делается при отмене оператора или срубании коннекта через таблицы мониторинга? В чём проблема?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427142
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВ вышеприведённом
коде если обработать ошибку и выкинуть исключение из RollbackТ.е. ты озаботился вод таким вот кодом (с IBX\FIB+\etc)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
  ...
  Commit;
except
  Rolback;
  raise;
end;

Да ?

1. Этот код изначально не полон, т.к., тут не определена реакция на исключение в Rollback.
Например, IBTransaction.Rolback может вызвать исключение даже до самого роллбека, ибо он вызывает кучу пользовательских событий (BeforeTransactionEnd).
Но даже если мы забьём на вышесказанное и поклянёмся никода не кидать исключения в BeforeTransactionEnd, то

2. Кто заставляет метод Rollback высокоуровневой (!) компоненты кидать исключение при обнаружении isc_bad_trans, а не обработать его более цивилизованно ?

В моей очень старой копии IBDatabase.pas, например, есть обработка ошибки isc_network_error с вызовом DefaultDatabase.ForceClose (я уже сам успел забыть об этом и немало удивился, когда это сейчас обнаружил)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427150
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с
базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы
собираетесь пихать ошибку таймаута?Коннект разорвётся по истечении таймаута. А вот приложение узнает об этом
- при попытке что-то сделать в коннекте
- если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу


Dimitry SibiryakovЧуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там
себе делает. К базе опять же не обращается . Собираетесь ему обломать всю
малину или только первичный коннект?Это можно обсудить.
Сходу - я бы не стал для обрубать коннект во время ожидания ивентов.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427151
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в какой-то степени я согласен с камрадом Сибиряковым. Ибо у нас уже есть асинхронный обрыв коннекта, через мониторинг. В результате которого клиент для всех операций с данным хендлом получает isc_att_shutdown, кроме дисконнекта, который проходит без ошибок. Я это делал сознательно, ибо так оно казалось правильным. Не вижу принципиальной разницы для транзакций, кроме нюансов реализации.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427159
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

одно дело категорично кричать что нужно сделать только так и никак иначе, а другое обсуждать с аргументированием своей позиции (что камрад Сибиряков начал делать со скрипом и только из-под палки :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427185
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

он таки поддается дрессировке!
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427187
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladКоннект разорвётся по истечении таймаута. А вот приложение узнает об этом
- при попытке что-то сделать в коннекте
- если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу

Уточни как именно разорвётся коннект и как сообщение о коллбэке попадёт на клиента. Для
этого нужно чтобы клиентская сторона вызвала select/recv, нет?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427208
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЭтот код изначально не полон, т.к., тут не определена реакция на исключение в
Rollback.
Этот код - результат многолетнего хождения по граблям. И я на данный момент считаю его
правильным, просто потому, что все другие варианты облажались. Я не настаиваю, что этот
код абсолютно правильный, но, повторюсь, на данный момент я не изобрёл ничего лучшего. И
таки нет, это не код конкретных IBX/FIB+, это код использует мою собственную обёртку, в
которой Rollback гарантированно ничего не выкидывает. Именно потому, что мне никогда в
голову не пришла ни одна идея как можно "обработать его более цивилизованно". О чём я,
впрочем, уже сказал выше.

В-общем, я всё уже сказал. Повторять по несколько раз только потому, что до некоторых
аргументация не доходит с первой попытки, не собираюсь. В конце концов, это же вам потом
отвечать на вопросы в firebird-support, не мне.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427213
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladКоннект разорвётся по истечении таймаута. А вот приложение узнает об этом
- при попытке что-то сделать в коннекте
- если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу

Уточни как именно разорвётся коннект и как сообщение о коллбэке попадёт на клиента. Для
этого нужно чтобы клиентская сторона вызвала select/recv, нет?..Я выше писал о том, что таймауты могут отслеживаться как на клиенте, так и на сервере.
В случае клиентского таймаута всё тривиально - как только таймер таймаута на клиенте сработал, он вызывает колбек и рвёт соединение (закрывает сокет, если это tcp).
В случае серверного таймаута всё происходит так же, как и при отмене через мониторинг\шатдауне БД, т.е. клиент ничего не узнает, пока не см. п1 выше
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427229
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВ случае серверного таймаута всё происходит так же, как и при отмене через
мониторинг\шатдауне БД, т.е. клиент ничего не узнает, пока не см. п1 выше
И тут возникает логичный вопрос к авторам этого предложения: в чём вообще смысл таймаута
на коннект? Сократить число подключений? Ну так см. п1 выше почему это не будет работать
без поддержки со стороны клиентского приложения. А при наличии таймаута в приложении оно
всё может сделать и само, без модификаций в сервере. Так в чём фишка?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427253
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladВ случае серверного таймаута всё происходит так же, как и при отмене через
мониторинг\шатдауне БД, т.е. клиент ничего не узнает, пока не см. п1 выше
И тут возникает логичный вопрос к авторам этого предложения: в чём вообще смысл таймаута
на коннект? Сократить число подключений? Ну так см. п1 выше почему это не будет работать
без поддержки со стороны клиентского приложения. А при наличии таймаута в приложении оно
всё может сделать и само, без модификаций в сервере. Так в чём фишка?..


при реалтайме я должен пристрелить поток вместе с коннектом, если ответа нет более N сек.
станет намного легче следить за пулом коннектов, вовремя переключаться на другие источники данных.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427260
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorя должен пристрелить поток вместе с коннектом, если ответа нет более N сек.

А теперь повторяю вопрос медленно: зачем нужен таймаут на неактивность коннекта?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427271
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovв чём вообще смысл таймаута на коннект? Сократить число подключений? Ну так см. п1 выше почему это не будет работать без поддержки со стороны клиентского приложения
будет работать на 95%. Сервер сам освободит все ресурсы ядра, живыми останутся лишь сокет и клиентские хендлы. Для многих целей этого вполне достаточно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427294
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovэто не будет работать
без поддержки со стороны клиентского приложенияКогда я говорю "клиент" - речь о fbclient'е.
Не думал, что и это надо расжёвывать.

Dimitry SibiryakovА при наличии таймаута в приложении оно
всё может сделать и само, без модификаций в сервереЕщё раз - таймаут не в приложении, он в клиенте. Серверный таймаут к этому не относится.

Dimitry SibiryakovТак в чём фишка?..Сделать то, что тебе самому делать лениво. Сделать это правильно и для всех.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427299
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladКогда я говорю "клиент" - речь о fbclient'е.
Не думал, что и это надо расжёвывать.
Не это надо разжёвывать, а реализацию. Как будешь таймаута ждать? Создавать отдельный
поток при каждом коннекте?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427339
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а) нет никакой реализации на данный момент, есть обсуждение
б) не надо меня держать за дурачка
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427367
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladа) нет никакой реализации на данный момент, есть обсуждение
И это обсуждение не может включать в себя варианты реализации?.. Я вот вижу вариант
реализации с дополнительным потоком. А что у тебя на уме?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427376
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уффф.... я все-таки одолел этот топик.
Сначала порывался начать отвечать, недочитав до конца

Тема наболевшая, но я ее для себя решил.
да-да FBScanner я поэтому и начал писать.

Dimitry SibiryakovИ тут возникает логичный вопрос к авторам этого предложения: в чём вообще смысл таймаута
на коннект? Сократить число подключений?
зришь в корень. Да отстрелить к чм рукожопое приложение, которое держит OAT.
Выбросить его немогу уже который год, но с помощью таймаутов на активность коннекта могу продолжать работать и далее.
Постепенно изымаю у него функции, передавая их новым приложениям, к которым есть исходники.

И разумеется я ЗА 14967127 , чтобы админ сервера мог задать общую планку для разных приложений.
Не укладываешься - учи матчасть. Сервер общий, ты тут не один.

DarkMasterhvladЕсс-но, самый первый раз таймер взводится в момент начала выполения запроса.
Ты может таки начнёшь хоть чуть-чуть думать, перед тем как писать ?

Гм... Я не могу со 100% уверенностью указать длину таймаута. Что непонятно-то? Все остальное - так, возможные сопутствующие проблемы.
ну разумеется! Я тебе больше скажу: ты как разработчик и несможешь сказать, как на разных серверах разных заказчиков будет выполняться твой запрос. Какой там будет план, вследствие разного заполнения тех же таблиц.
И ведь (о ужас!), на сервере может быть не только твое приложение. И не только твое приложение может работать с твоей базой.
Поэтому таймауты, заданные из приложения - суть зло, которые админы всегда будут давить.
И будут правы.

У одного есть ресурсы на покупку приличного сервера (да, это про тебя IP ) , и он задаст для своего сервера одну планку.
А у другово - "чем богаты тем и рады". Админа нет, и таймаут выключен по умолчанию конфиге. Когда нибудь сделает - и ладно.

Так что считаю неразумными стенания "и куда потом податься бедному разработчику". Сначала огребет админ, за установленный в конфиге параметр таймаута.
А если админа нет - откуда отстрел по таймауту возникнет?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427517
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так все-таки таймауты точно будут делать или обсуждается необходимость этого? Из топика это не совсем понятно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427523
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

Судя вот по этому CORE-985 планируется. Но тут неожиданно объявились ярые противники.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427555
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал сегодня утром топик, и никак не могу сообразить, таймауты хорошо это или плохо. Взять тот же таймаут для коннекта. Если пользователь оставил программу подключенной к БД и ушел до утра, то утром он должен прийти и продолжить работать. Принудительно его отключать не считаю правильным (либо делать дисконнект уже из программы). Если же кто-то подключился и ушел в отпуск - тут не знаю, отключать ли его. А вот если кто-то подключился, запустил обработку в снапшот-транзакции и и свалил в отпуск - тут коннект грохать надо, так как скоро будут проблемы. Таймаут для запроса - аналогично. Например, на базе одного филиала отчет будет делаться 1 минуту, на другом филиале - 10 минут. Или какая-то общая обработка - в крупном филиале она будет делаться полчаса (причем в снапшоте), в другом - менее минуты.
Возможно, имеет смысл завершать по таймауту конкретные ситуации - запущенные достаточно долгое время concurrency/consistency-транзакции, по которым нет активности, слишком тяжелые запросы (формирование 1 записи более 10 секунд). Но опять-таки, в высоконагруженной в текущий момент системе возможно значительное ухудшение скорости получения строки/общего времени выполнения запроса и будет отлуп на ровном месте.
Поэтому предлагаю свести в один список, где и для чего нужны различного рода таймауты, а так же где они наоборот, внесут негативный эффект. Это можно будет сразу указать в описании к их конфигурированию (если все-таки будут).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427590
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

прежде чем устанавливать значения таймаутов надо хорошенько подумать. В любом случае всегда можно вернуть дефолтное значение (отсутсвие таймаута)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427606
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтается.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427691
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспрежде чем устанавливать значения таймаутов надо хорошенько подумать. В любом случае всегда можно вернуть дефолтное значение (отсутсвие таймаута)
Дык обо что и речь. В какую сторону думать? Как думать? Что учитывать? И стоит ли оно того?

Добавлю еще два нюанса:
1.Выполнение запроса после массового удаления/апдейта, оно же проблема сборки мусора. Вот обозначили выполнение апдейта в 2 секунды (проплывала в топике такая цифра). Сегодня обновили много записей в разных таблицах (установили обновление версии). Апдейт начал выполняться (а это может быть и SP с селектами) и стал собирать мусор. В итоге вместо 1 секунды делался 5 секунд. То же самое может и с выборками произойти (журналы, отчеты).
2. У GTT есть противная вещь - нелинейная деградация времени селекта при вставке/удалении, когда движок проходит по всем версиям записей. То есть запрос (EB, SP, неважно), работающий с разным количеством строк в GTT, даст разное время выполнения, причем разница может отличаться на несколько порядков. Хотя сам запрос будет абсолютно корректным.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427719
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxВот обозначили выполнение апдейта в 2 секундыТаймаут в 2 сек - это полный маразм, давайте без фанатизма, плс

Таймауты, в первую очередь, предназначены для предотвращения ненужного потребления ресурсов (тот же застрявщий OST, толпа неактивных коннектов, жрущих память и т.п.) и
как страховка от граничных (форс-мажорных, если хотите) ситуаций (кривой запрос, выполняющийся слишком долго и т.д.)

Не нужно искать realtime в таймаутах
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427722
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxУ GTT есть противная вещь - нелинейная деградация времени селекта при вставке/удалении, когда движок проходит по всем версиям записей.Я так понимаю, что речь о многократных вставках и удалениях в одной тр-ции ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427728
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

просто не надо ставить таймаут когда это не требуется.

Вот моё мнение когда использование таймаутов оправдано:
- на хостинге (чтобы ограничить ресурсы)
- в целях отладки приложения (хотя можно воспользоваться и трейсом)
- для админов, например срубать забытый кем-то IBExpert на двое суток.

Пытаться предсказать что запрос отработает в течении 5 секунд однозначно не стоит. Если уж устанавливать таймаут, то как минимум с 10 кратным запасом.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427730
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ так понимаю, что речь о многократных вставках и удалениях в одной тр-ции ?
Да. Топик на эту тему создавал джва года назад. Насчет тикета в трекере не знаю, есть ли он.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427740
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

это уже оффтоп. Тут бедный Евгений Болтик и так потерял нить беседы. Задал один вопрос, а в итоге уже на 7 страниц обсуждение таймаутов идёт (хотя косвенно это имеет отношение к его вопросу). Но теперь отделять новый топик уже поздно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427754
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

ну так ещё тогда выяснилось, что GTT тут не причём и все возможные рецепты были даны.
Так что, да, завязываем с оффтопом :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427756
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисбедный Евгений Болтик и так потерял нить беседыЧитая его тексты, я ещё ни разу не видел в них нити. Скорее запутанные клубки из разных нитей. Так что либо ему это и так привычно, либо это такая месть с нашей (моей) стороны :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427820
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladCyberMaxВот обозначили выполнение апдейта в 2 секундыТаймаут в 2 сек - это полный маразм, давайте без фанатизма, плс
+1

Забыл сказать: у меня стоит таймаут 8часов. Люди больше не работают.
Обед нормально переждет, а на ночь надо программы закрывать.

У меня просто нет отчетов (или регламентых расчетов), которые надо запускать с вечера, чтобы они были готовы к утру. Избавился.

P.S. заодно отстреливаются коннекты от IBE, забытые программистами в терминале.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427830
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А будет ограничение по минимальному времени таймаутов? Я не спорю, что 2 секунды или 5 или 10 маразм, но найдутся же граждане...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427840
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут ещё в конфиге придётся вводить дополнительные единицы измерения s, m, h (наподобие k, m, g)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427972
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисCyberMax,

просто не надо ставить таймаут когда это не требуется.

Вот моё мнение когда использование таймаутов оправдано:
- на хостинге (чтобы ограничить ресурсы)
- в целях отладки приложения (хотя можно воспользоваться и трейсом)
- для админов, например срубать забытый кем-то IBExpert на двое суток.

Пытаться предсказать что запрос отработает в течении 5 секунд однозначно не стоит. Если уж устанавливать таймаут, то как минимум с 10 кратным запасом.

п-а-а-звольте!

5 сек - это уже 20-ти кратный запас.

2 сек - максимальное время ожидания, не приводящее к баттхерту дискомфорту пользователя

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

для многих других приложений такой таймаут, есс-но, неприменим.

поэтому я последовательно выступаю за явное указание таймаута для каждой транзакции (ну или коннекта).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427973
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_m,

по моему опыту для "неактивных транзакций" надо ставить таймаут 60 минут, а то и 30 минут. Неактивные коннекты пусть живут хоть 100 лет. И запросы пусть выполняются хоть по 5 часов, если их так написали, и такие данные.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427978
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorдля всяких многозвенок важно вовремя понять, что очередной сервер врезал дуба и попытаться переключиться на резервные источники.
в многозвенках обычно сложно понять, кто и где врезал дуба. Я имею в виду клиентскую сторону, от которой до БД слишком много звеньев со своими особенностями.

pastorпоэтому я последовательно выступаю за явное указание таймаута для каждой транзакции (ну или коннекта).
а я последовательно выступаю за таймауты по неактивности, и в первую очередь для транзакций. На текущий момент это массовая беда.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427980
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаймаут в 2 сек - это полный маразм, давайте без фанатизма, плс

Таки согласен на 5 сек.
hvladТаймауты, в первую очередь, предназначены для предотвращения ненужного потребления ресурсов (тот же застрявщий OST, толпа неактивных коннектов, жрущих память и т.п.) и
как страховка от граничных (форс-мажорных, если хотите) ситуаций (кривой запрос, выполняющийся слишком долго и т.д.)


Все перечисленные проблемы мне фиолетовы. Меня интересует только гарантированное время получения отклика, хотя бы для переключения на резервный источник данных.
Сейчас приходится прибивать ВЕСЬ поток вместе с коннектом. А это очень грязное дело.

hvladНе нужно искать realtime в таймаутах
И куда же тогда податься бедному еврею?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427987
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

таймауты здесь тебе не помогут.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428013
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ это обсуждение не может включать в себя варианты реализации?..
Я вот вижу вариант реализации с дополнительным потоком. А что у тебя на уме?
Вот так и кончаются все попытки обсудить варианты реализации.

Влад любит аргументы, поэтому приведу один в пользу своего варианта реализации: в
дополнительном потоке не обязательно доложен быть простой sleep/WaitFor, там можно крутить
цикл select-recv для приёма пакетов их сокета/трубы/ДЕ_знает_чего_у_ХНЕТа, что в свою
очередь даёт:
1) Возможность серверу в любой момент послать клиенту пакет "отвались, бездельник" после
чего серверные таймауты работают на 100% вместо 95.
2) Оперативный приём, ответ и посылка ватчдог пакетов, что решает проблему переполнения
системного буфера и оперативного обнаружения оборванной связи вне зависимости от настроек
keep alive.
3) Возможность доставлять события в том же коннекте, без установки дополнительного.
4) С незначительным изменением сетевого протокола можно реализовать асинхронное API или
реально параллельное использование одного коннекта разными потоками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428034
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисpastor,

таймауты здесь тебе не помогут.

нужно иметь отличное зрение, чтобы на таком расстоянии увидеть "не помогут" (с)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428045
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

просто таймауты никак не смогут обеспечить гарантированное время отклика. Думаю здесь вообще ничего не поможет.
Получить от программы отклик с сообщением таймаут истёк - это совсем не то чего ожидает увидеть пользователь.

Поэтому я и говорю что сфера их применения несколько иная.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428049
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot kdv]pastorдля всяких многозвенок важно вовремя понять, что очередной сервер врезал дуба и попытаться переключиться на резервные источники.
в многозвенках обычно сложно понять, кто и где врезал дуба. Я имею в виду клиентскую сторону, от которой до БД слишком много звеньев со своими особенностями.

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


как вариант - опциональный callback (с дефолтным "продолжайте до упора") для всех вызовов. в т.ч. commit
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428063
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov2) Оперативный приём, ответ и посылка ватчдог пакетов, что решает проблему переполнения системного буфера и оперативного обнаружения оборванной связи вне зависимости от настроек keep alive .


А вот ЭТО было бы весьма и весьма неплохо.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428082
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovhvladа) нет никакой реализации на данный момент, есть обсуждение
И это обсуждение не может включать в себя варианты реализации?.. Я вот вижу вариант
реализации с дополнительным потоком. А что у тебя на уме?Поток на коннект в клиенте - это маразм перебор. Есс-но, таймеры будут жить не в рабочем потоке приложения, но (на первый взгляд) достаточно одного служебного потока на все цели.
На уме у меня - получить наиболее полную спецификацию данной фичи до начала её реализации.
Тут уже прозвучали некоторые не самые очевидные нюансы, жду ещё :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428085
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladСимонов Денисбедный Евгений Болтик и так потерял нить беседыЧитая его тексты, я ещё ни разу не видел в них нити. Скорее запутанные клубки из разных нитей. Так что либо ему это и так привычно, либо это такая месть с нашей (моей) стороны :)

Хочется нити, то тогда выходи на контакт и обсуждай без посторонних. Потому что забросаете фигней не по теме и хотите нормальной беседы. Я готов по скайпу в живую нормально объяснить, если чтиво дурно пишу. И будет обсуждение не 2-3 дня, а 1 час т.к. твой ответ будет
1. "не понял я тебя, иди подумай"
2. "мы это делать не будем"
3. "это запланирована голосуй"

Я тут выше в этом балагане задал вопрос.
А почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтается
Мы тут не русский изучаем, чтобы придраться что знак вопроса не поставил. " почему бы " это то же знак вопроса.

По балагану на твоем месте я бы:
1.Раз понимаешь о чем речь, про тайматуты, сделал первый вариант и сказал желающим попробуйте. И потом давай корректировать под ситуации. Причем для тестирующих на первой паре можно было бы такое на основе RDB$SET_CONTEXT сделать. Стартанул транзакцию кодовое слова для таймаута и время. На тестируются тестеры, сделаете изменения в ODS.
2.или создал трекер(или как оно там) кому надо голосуйте. Т.к. сейчас нету времени. И тут как всегда, желающие ждут пока благодать на сею вещь не сойдет.


PS Собеседник был прав. На второй день когда проснулся глазам своим не поверил. Думал что не моя тема. С трудом прочитал... Я вообще не понимаю как можно еще и работать успевать, если столько тут писать. Или я один дурак чем старей, тем больше работаю и меньше общаюсь.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428099
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикХочется нитиЖеня, мне - не хочется. Не я задаю вопросы.
То, как ты пишешь, после первого прочтения вызывает недоумение, после второго - раздражение, после N лет игнорируемых просьб писать по-человечески приходит ощущение что ко мне обращается человек, которому глубоко наплевать на собеседника.

Так понятно ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428102
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикА почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтается

именно этот твой вопрос считаю вполне осмысленным.
Про RDB$SET_CONTEXT ты чушь говоришь. Так делать точно никто не будет. И про ODS тоже. Пока вообще не вижу как таймауты могут на ODS повлиять. Хотя может я и ошибаюсь.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428123
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВлад любит аргументы, поэтому приведу один в пользу своего варианта реализации: в
дополнительном потоке не обязательно доложен быть простой sleep/WaitFor, там можно крутить
цикл select-recv для приёма пакетов их сокетаТы предлагаешь вообще всю сетевую работу вынести в этот отдельный поток, или только служебные задачи ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428129
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorМеня интересует только гарантированное время получения отклика, хотя бы для переключения на резервный источник данных.
Сейчас приходится прибивать ВЕСЬ поток вместе с коннектом. А это очень грязное дело.Ну так есть же fb_cancel_operation.

pastorhvladНе нужно искать realtime в таймаутахИ куда же тогда податься бедному еврею?Для начала - в realtime OS :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428135
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladПоток на коннект в клиенте - это перебор.
Сейчас этот поток создаётся при использовании эвентов. Я предлагаю создавать его безусловно.

Среднее приложение устанавливает один, максимум два коннекта одновременно, так что
оптимизация в этом месте мне кажется излишней, поскольку усложнит код без реальной
потребности. Но, конечно, ты сможешь написать мегакод, который в одном дополнительном
потоке сможет обслужить все таймауты всех коннектов, а заодно и события, ватчдоги и прочие
пакеты. Я в тебя верю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428148
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕвгений БолтикХочется нитиЖеня, мне - не хочется. Не я задаю вопросы.
То, как ты пишешь, после первого прочтения вызывает недоумение, после второго - раздражение, после N лет игнорируемых просьб писать по-человечески приходит ощущение что ко мне обращается человек, которому глубоко наплевать на собеседника.

Так понятно ?

После того как с тобой общаются, по другому не получается. А особенно когда говоришь "N лет игнорируемых просьб". Это понятно?

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

Давай сделаем по другому я тебе предложу, что то без "игнора". Мы встретимся в скайпе, если будет у меня такое. Ты выслушаешь. И если предложу вроде как нужную мысль, ты ее на обсуждение. Якобы на вашем "человеческом" языке, мне даже не надо моего упоминания, что это мысль была моя. Лишь бы это появилось по возможности.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428153
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТы предлагаешь вообще всю сетевую работу вынести в этот отдельный поток, или
только служебные задачи ?
Если бы у меня хватало мозгов чтобы разобраться в современном коде птицы, то лично я бы
вынес туда весь приём пакетов от сервера и, возможно, их парсинг. (Надеюсь, для
тебя не будет сюрпризом, что принимать пакеты из сокета и посылать их в него могут разные
потоки. По крайней мере в Windows.) А отсылку пакетов оставил бы тем потокам, в которых
вызываются функции API. Естественно, с сериализацией этой отсылки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428164
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

тебя регулярно слушает Дмитрий Еманов, насколько я знаю.

Так что :
- про "N лет игнорируемых просьб" ты преувеличиваешь,
- вторую жертву ты не получишь :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428175
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикДавай сделаем по другому я тебе предложу, что то без "игнора". Мы встретимся в скайпе, если будет у меня такое. Ты выслушаешь.
извиняюсь, что влезаю, но если человек не может изложить мысль в письме, то и в скайпе он ее не изложит. Иногда даже и в очном разговоре мысль трудно понять. Мы, правда, тут уже давно работаем телепатами, но у этой способности есть предел.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428179
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений БолтикА почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтается

именно этот твой вопрос считаю вполне осмысленным.
Про RDB$SET_CONTEXT ты чушь говоришь. Так делать точно никто не будет. И про ODS тоже. Пока вообще не вижу как таймауты могут на ODS повлиять. Хотя может я и ошибаюсь.

Я про RDB$SET_CONTEXT сказал как временное решение, чтобы не расширять синтаксис до момента осознания, что нужно. То есть временно не документируемый код. Я бы так сделал. Так быстрей можно понять, что нужно и что происходит.

Про ODS это к тому, что я так понимаю могут добавиться команды. Если не повлияет то даже можно без RDB$SET_CONTEXT сразу реализовать расширение функционала для тестеров.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428192
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик
Я про RDB$SET_CONTEXT сказал как временное решение, чтобы не расширять синтаксис до момента осознания, что нужно. То есть временно не документируемый код. Я бы так сделал. Так быстрей можно понять, что нужно и что происходит.

Про ODS это к тому, что я так понимаю могут добавиться команды. Если не повлияет то даже можно без RDB$SET_CONTEXT сразу реализовать расширение функционала для тестеров.

Ты не думал, что пока это будет тестироваться через RDB$SET_CONTEXT кто-нибудь заложится на это решение. А потом бац, и всё поменялось - код стал неработоспособен.

К твоему сведению не каждая новая команда требует изменений ODS.

Ответьте ему уж на вопрос
Евгений БолтикА почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтается
чтобы дальше обсуждению ничего не мешало.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428200
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли бы у меня хватало мозгов чтобы разобраться в современном коде птицыДело исключительно в желании, хватит пенять на мозги. Про мозги лучше с ё беседуй, ему твои нравятся :)

Dimitry Sibiryakovя бы вынес туда весь приём пакетов от сервера и, возможно, их парсинг.
...
А отсылку пакетов оставил бы тем потокам, в которых
вызываются функции API. Естественно, с сериализацией этой отсылки.Берём любую ф-цию АПИ. Она пакует параметры, вызывает send и .... что дальше ? Ждёт ответа ? Но ведь recv вызывается в другом потоке. Тогда что же она ждёт ? Сигнала от этого другого потока ? А чем это лучше ожидания в recv ?

Ок, получила она сигнал, что дальше ? Откуда-то выгребает пришедший пакет ? Т.е. опять ждёт на доступе к очереди с принятыми пакетами ?

А, ты же предлагаешь чтобы доп. поток сам парсил принятые пакеты ! А что он делает с полученными данными ? С резалтсетами, статус-векторами, хендлами объектов ? Их ведь нужно предоставить рабочему потоку клиента. Кладём это всё в другой пакет и добавляем его в очередь ? :)

Берём сервер приложений. Да, есть такие приложения, у которых вполне легально могут быть десятки и даже сотни хорошо нагруженных коннектов. Единый поток, работающий с сетью, сразу станет бутылочным горлышком.


ЗЫ На самом деле центральный сетевой диспетчер (пусть и не в одном потоке) - это вполне рабочий подход. Но реализуется он не так, как ты написал. Но у нас есть дополнительные сложности на пути к нему:
- в каждой ОСи соотв. АПИ не просто разное, а кардинально разное (по памяти - IOCP, epoll, kqueue)
- в некоторых ОСях такого АПИ вообще нет
- сочетать разные транспорты (протоколы) в едином диспетчере тоже не так просто
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428209
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисОтветьте ему уж на вопрос
Евгений БолтикА почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтаетсяdimitr появится, ответит. Если посчитает нужным.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428250
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕвгений Болтик,

тебя регулярно слушает Дмитрий Еманов, насколько я знаю.

Так что :
- про "N лет игнорируемых просьб" ты преувеличиваешь,
- вторую жертву ты не получишь :)

За упомянутые "N лет", если ты игнорил ты был не прав. Ничего нового я вроде не предлагал. Только при попадание в ступор с сервером писал вам обоим. Были и мои ошибки и ваши(ну у тех кто до вас был). Я тоже не бог и бывает ошибки допускаю, но если я их нахожу, я тут же отписываюсь, мол сам дурак. Не успел намотал на ус "то что сказали" и сижу в норке.

Если у тебя есть время, то мог бы и выслушать. А я не дурак чтобы кому то надоедать до игноров. Мог бы давно сказать мне не пиши, вместо игнора. Мне казалось, что либо ты либо он поможете при беде с сервером. Сейчас получается только он.
Диме респект за то, что он меня хоть как то понимает и выслушивает. Но он не всесилен и сейчас такое впечатление в запарках по боле моих. Ответы долгие, это сказывается ..., т.к. поток данных у меня большой последнее время и могу забыть про что речь.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428257
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЗа упомянутые "N лет", если ты игнорил ты был не прав.Не вижу смысла это тут обсуждать.
Добавлю только:
- тебе спасибо за найденные проблемы в оптимизаторе
- то, что ты мне писал, было в основном не по "моей" части, поэтому оно всё равно уходило к ДЕ
- я не могу разорваться на части, тем более когда твой поток слов нужно сначала полдня расшифровывать

Закончим на этом
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428267
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladБерём любую ф-цию АПИ. Она пакует параметры, вызывает send и .... что дальше ?
Ждёт ответа ? Но ведь recv вызывается в другом потоке. Тогда что же она ждёт ? Сигнала от
этого другого потока ? А чем это лучше ожидания в recv ?
Ну, закладываясь на максимальный случай: эта функция помещает некоторый блок в некоторый
список, в этом блоке есть хэндл event-а или адрес callback-функции, который и используется
принимающим потоком после того как он положил в этот же блок адрес буфера с пришедшим
пакетом (как есть или уже распарсенным). После создания этого блока и отсылки пакета
функция может заниматься чем хочет, включая ожидание с таймаутом (буде какой-нибудь чудик
таковой запросит), немедленный возврат в вызывающий код (буде она из пока не существующего
асинхронного API) или что фантазия позволит. Получила сигнал - берёт из блока пришедший
пакет, удаляет блок из списка и завершается, все счастливы. (ЕМНИП, именно так и работает
лок-менеджер, только тот ждёт совсем не сетевые пакеты.)

hvladБерём сервер приложений. Да, есть такие приложения, у которых вполне легально
могут быть десятки и даже сотни хорошо нагруженных коннектов. Единый поток, работающий с
сетью, сразу станет бутылочным горлышком.
Ну, поздравляю, ты сам нашёл аргумент за создание отдельного потока на каждый коннект.
(Что я и предлагал.)

hvladНо у нас есть дополнительные сложности на пути к нему:
- в каждой ОСи соотв. АПИ не просто разное, а кардинально разное (по памяти - IOCP, epoll,
kqueue)

- По счастью код этого потока не обязан собираться для всех ОСей из одного исходника
- Старый добрый, имеющийся везде, select() имеет проблему с производительностью только
если ему пихают много хэндлов, чего при системе "выделенный поток на каждый коннект" нет.

hvlad- в некоторых ОСях такого АПИ вообще нет
Назови OS где нет select().

hvlad- сочетать разные транспорты (протоколы) в едином диспетчере тоже не так
просто
И по счастью не нужно. Дело диспетчера - унифицировать список блоков ожидания. Каждый
транспорт может обрабатываться разными функциями, благо коннект (и связанный с ним
служебный поток) использует только один транспорт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428272
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

в большинстве случаев тебе могли бы помочь и другие форумчане, а не только разработчики FB. Но ты не умеешь правильно формулировать вопросы. Последний раз когда мы с тобой беседовали после долгого количества часов всё таки выяснилось, что ты хочешь материлизованные представления. Ты же поначалу писал какую то чушь про супер мега индекс. Отсюда и такое отношение.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428304
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу, поздравляю, ты сам нашёл аргумент за создание отдельного потока на каждый коннект.Конечно нет.

Dimitry SibiryakovПо счастью код этого потока не обязан собираться для всех ОСей из одного исходникаСпасибо тебе, добрый человек. Отлаживать 100500 реализаций одного и того же ведь ты будешь, правда ?

Dimitry SibiryakovСтарый добрый, имеющийся везде, select() имеет проблему с производительностью только
если ему пихают много хэндлов, чего при системе "выделенный поток на каждый коннект" нет.Поток на коннект - это последнее, что я буду рассматривать.
Ну и подумай ещё о том, что 100 потоков, сидящих в select - это 100 вызовов ядра и 200 переключений контекста (если ты понимаешь, о чём я).

На остальные "аргументы" я уже ответил выше.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428305
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЕвгений БолтикДавай сделаем по другому я тебе предложу, что то без "игнора". Мы встретимся в скайпе, если будет у меня такое. Ты выслушаешь.
извиняюсь, что влезаю, но если человек не может изложить мысль в письме, то и в скайпе он ее не изложит. Иногда даже и в очном разговоре мысль трудно понять. Мы, правда, тут уже давно работаем телепатами, но у этой способности есть предел.

Все нормально.

Просто иногда проще по скайпу объяснить чем на пальцах "которые описываешь в тексте". Нарисовать картинку по быстрому. Да-да нет-нет. И весь разговор, а так день два три переписки не о чем. Еще и огребешь.
Это к тому что http://www.sql.ru/forum/1042010/obsuzhdenie-a-mozhet-multi-indeks было на "19 авг 13, 20:10" и что узнали на "20 авг 13, 20:01" "материализованного представления".

2. про многотабличные индексы я тебе уже пару лет назад говорил что в сад Это не ответ. Это отговорка, а вось когда нить дойдет до мальчика. Дошло давно только называли по разному. Что было трудно отправить почитать.

Я вот не понимаю как это можно было не понять знатокам про "материализованного представления". Я только увидел бы такую тему и по тексту сразу определил, что мол мальчик хочет вот это и отправил почитать. Без ругани и лишних вопросов.

А по скайпу, только заикнулся бы, что типа сводные таблицы в индексе, меня бы сразу знаток на место поставил и сказал это вот это.

А вообще я выше писал про общение по скайпу 3 варианта ответа. И будет продуктив.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428319
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladПоток на коннект - это последнее, что я буду рассматривать.
А зря, поскольку это простейший (а стало быть надёжнейший) вариант и рассматривать любые
другие стоит только после того, как будет доказано, что он не справится. KISS. Не будешь
усложнять задачу - не придётся ломать голову над решением.

hvladНу и подумай ещё о том, что 100 потоков, сидящих в select - это 100 вызовов
ядра и 200 переключений контекста (если ты понимаешь, о чём я).

Это переключения в один конец. Вызовы не вернутся, пока не будет необходимости. Надеюсь,
тебе не придёт в голову дурная идея для ожидания таймаута коннекта поставить таймаут у
select в сотую долю секунды и каждый раз когда оно вернётся проверять текущее время...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428327
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕвгений БолтикЗа упомянутые "N лет", если ты игнорил ты был не прав.Не вижу смысла это тут обсуждать.
Добавлю только:
- тебе спасибо за найденные проблемы в оптимизаторе
- то, что ты мне писал, было в основном не по "моей" части, поэтому оно всё равно уходило к ДЕ
- я не могу разорваться на части, тем более когда твой поток слов нужно сначала полдня расшифровывать

Закончим на этом

- не надо благодарить, я там бежал чуть раньше кого то другого. Ваша благодарность это ваша работа и своевременный отклик. :) моя забота ошарашить вас багом или получить пендаля, если сам виноват.
- тогда извиняюсь, что тревожил тебя. Мне по почте, если не сложно по каким вопросам тебе отправлять. Не охота лишний раз надоедать. Можешь просто не за раз, а переодически постить мол по этой теме, я это отфильтрую и потом буду писать только по теме.
- да ладно последнии репорты были максимально просты несколько запросов и статистика. Хотя если не ты их смотришь тогда ты не знаешь.

PS Если бы у Embarcadero были разработчики как вы, то была бы благодать в Delphi в плане правленых багов.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428337
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

в большинстве случаев тебе могли бы помочь и другие форумчане, а не только разработчики FB. Но ты не умеешь правильно формулировать вопросы. Последний раз когда мы с тобой беседовали после долгого количества часов всё таки выяснилось, что ты хочешь материлизованные представления. Ты же поначалу писал какую то чушь про супер мега индекс. Отсюда и такое отношение.

Согласен. Кстати есть одна мысль могу по скайпу рассказать, а ты скажешь стоящая иль нет. А потом переварив предложишь здесь. Т.к. может такое где то есть и проще будет ткнуть в ту сторону. ;)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428347
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

завязывай с флудом. Если хочешь чего спросить лучше создай отдельный топик. Обещаю не издеваться как прошлый раз. По скайпу мне общаться некогда. Я ещё и работаю. Сюда пишу в перерывах и чтобы мозги отвлечь.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428350
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladПоток на коннект - это последнее, что я буду рассматривать.
А зря, поскольку это простейшийПростейший вариант мы уже имеем сейчас.

Dimitry SibiryakovhvladНу и подумай ещё о том, что 100 потоков, сидящих в select - это 100 вызовов
ядра и 200 переключений контекста (если ты понимаешь, о чём я).

Это переключения в один конец. Вызовы не вернутся, пока не будет необходимости.Не, ты меня не понимаешь.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428388
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕвгений Болтик,

завязывай с флудом. Если хочешь чего спросить лучше создай отдельный топик. Обещаю не издеваться как прошлый раз. По скайпу мне общаться некогда. Я ещё и работаю. Сюда пишу в перерывах и чтобы мозги отвлечь.

Лучше тогда в почту тут начнется длинный офф сначала непонимания меня и т.д. Моя почта не скрыта.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428389
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladПростейший вариант мы уже имеем сейчас.
Правильно. И поскольку он не работает так как хочется, время рассмотреть простейший среди
оставшихся.

hvladНе, ты меня не понимаешь.
Естественно не понимаю: твои намёки слишком мудрёны. Насколько я знаю, потоки, висящие в
функциях ожидания, шедулером ОСи игнорируются и никаких переключений между контекстами не
происходит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428449
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕстественно не понимаюНадоело.
Если есть что по таймаутам, не трогая реализацию, давай. Остальное - без меня.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428456
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕсли есть что по таймаутам
По ним я уже
всё
сказал
.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428490
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про таймаут на запрос. Он может указываться для всех в database.conf или непосредственно в вызове stsm.execute(sql, 10000), где 10000 необязательный параметр таймаута в секундах. Точный вызов API не помню поэтому извиняйте если что не так. Других мест вроде как придумать не могу.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38428766
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таймауты нужны, как минимум на длительность транзакции и время выполнения запроса.
Но не должны ли они относиться к БД, а не к серверу? Ведь необходимое (допустимое) время реакции для для разных БД может быть разным.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429060
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhin,

на какой-то конференции Корпоративные базы данных (увы, не нашел, было лет 5 назад точно), Бартунов из PostgreSQL или кто-то еще на тему таймаутов делал специальный доклад. Рассказывали, насколько сложно в многопользовательской среде соблюдать эти самые таймауты, и для каких военных применений они позарез нужны.

У нас, пока, есть проблема вообще со срубанием длительного запроса, от Execute до первого Fetch. В том числе и в InterBase (насколько я в курсе), где в tmp$statements можно отрубать запросы (т.е. функционала по срубанию запросов, транзакций и коннектов там поболее есть через tmp$, чем у Firebird в mon$, как минимум потому, что у IB есть только SuperServer).
Поэтому особо на тему "ах, что же делать при большой нагрузке с таймаутами запросов" предлагаю просто не париться. Если задано, что запрос не должен выполняться более 5 минут, значит амба, эти 5 минут должны работать при любых условиях.

Что касается таймаута транзакции, то я уже говорил, что такой таймаут нужен только по неактивности в транзакции. Я считаю, что никто не имеет права срубать транзакцию, если она длится 5 часов, и каждую минуту в ней выполняются какие-то действия. Если и вводить для этого таймаут, то исключением должна быть read read_committed, разумеется. Впрочем, реализацию такого рода таймаута я ожидаю в последнюю очередь.

Таймаут коннекта - по вкусу. Он и так сейчас есть, в виде keepalive. И насколько я знаю, разработчики с ним борются методическими запросами типа select * from rdb$database.

В общем, по таймаутам я в первую очередь послушал бы админов, отделенных от разработчиков, и всех, у кого legacy applications с никаким управлением транзакциями и коннектами. Впрочем, их мнение я тут и излагаю.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429122
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvТаймаут коннекта - по вкусу. Он и так сейчас есть, в виде keepalive. И насколько я знаю, разработчики с ним борются методическими запросами типа select * from rdb$database.Кто с кем борется? У нас кипалайв зажат до примерно 2-3 минут, коннекты в большинстве своем висят весь рабочий день, никто ни с кем бороться не собирается. Со слишком длительными коннектами обращаемся просто, в 23.30 все срубаются принудительно, далее сервер переходит в "ночной режим", чтобы "человеческие" юзеры не мешали.

Как по мне так таймаут на коннект если и нужен, то с самым низким приоритетом.

Таймаут на транзакцию должен иметь возможность зависеть от параметров "чтение-запись","снапшот-ридкоммитед-консистенси", приоритет между "конфиг сервера" и "передано разработчиком" должен иметь рычаги настройки (например параметрт Priority_level database server developer или Priority_level developer database server ), чем завершать коммитом или роллбеком тоже самое, по-умолчанию роллбек.

Самый интересный, безусловно таймаут на оператор, лично я бы им пользовался. Приоритезация по аналогии с транзакциями, абзацем выше. Как вариант для разработчика возможность (опционально) передать таймауты в параметрах транзакции отдельно для самой транзакции , отдельно для стейтментов внутри оной.

Вариант подглядеть у постгресовцав не лишен смысла. ;)
Как минимум с доками/презентациями ознакомиться стОит!
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429147
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу таймаутов на коннекты и транзакции я пожалуй соглашусь с Владом. Т.е. время должно отсчитываться от последней активности.
А вот по поводу запросов вопрос спорный. С одной стороны для SELECT можно смотреть на время последнего фетча и от него отсчитывать время неактивности. С другой - для операторов DML, как мне кажется, всё таки важно начинать отсчёт от начала этого оператора. Не уверен что эти параметры есть одно и то же.

Добавлю к сказанному, что если введут таймауты на подключения, транзакции и запросы, то эти таймауты по идее должны отображаться в MON$ таблицах, так же в них должно отображаться время неактивности.

По поводу мониторинга у меня ещё одна хотелка. Нужна отдельная таблица мониторинга в которой была бы видна вся конфигурации как на уровне сервера, так и на уровне базы данных. Особенно важно это на хостингах, когда файл конфигурации скрыт от конечного разработчика, а ему нужно как то оценить выделяемые ресурсы.

<имя параметра> <значение> <уровень>, где
<тип конфигурации> - на уровне сервера, на уровне БД, на уровне подключения
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429153
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА вот по поводу запросов вопрос спорный. С одной стороны для SELECT можно смотреть на время последнего фетча и от него отсчитывать время неактивности
может, наоборот, активности? Насколько я понял, в этой ветке обсуждаем таймаут неактивности для коннектов и транзакций и таймаут активности для запросов.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429161
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,
hvladСимонов Денисотсчёт таймера должен вестись от начала транзакции и не зависеть от того сколько там фетчей сделаноА давай подумаем немного: вот есть запрос, возвращающий резалтсет. Вот его жизненный цикл:
1. execute
2. fetch
...
N. fetch

Ты предлагаешь ставить таймер в момент (1) и, например, если 10 записей было успешно сфетчено, а 11-я не успела, то обламывать такой запрос. Так ?

А не будет ли правильнее сбрасывать и снова ставить таймер после каждого фетча ?
Представь себе запрос, который выдаёт по 1-ой записи в секунду (может сетка медленная, а может записи трудно вычисляются).
И ты предлагаешь его остановить после X записей, при таймауте в X секунд ? Даже если он вполне себе может выдать все 10X записей в том же темпе ?

Если это качается только транзакций/коннектов. Тогда мой вопрос снят. Если же же нет, то он остаётся в силе.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429173
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть предложение по такой фиче. При реализации таймаутов, предусмотреть в конфиге настройку для них трех видов:
1. Отключить.
2. Включить с прерыванием.
3. Включить с логированием.

Первый пункт очевиден. Второй - при наступлении таймаута, сервер выполняет обычное действие (дропает коннект, завершает транзакцию и т.д.).
Третий пункт вот для чего. При его активации, сервер в случае таймаутов пишет в специальный файл лог об этом:
База данных;
Дата/время;
Пользователь;
Тип таймаута (коннект, транзакция, запрос);
Время старта;
Для запросов имеет смысл писать сам запрос, параметры и план.

Таким образом, администратор/разработчик может в любое время, прозрачно для пользователя, посмотреть, все ли нормально - были ли зависшие транзакции, долго выполняющие запросы и прочее. Можно даже добавить еще режим:
4. Включить с прерыванием и логированием.

Таким образом, убиваются несколько зайцев:
1. Диагностика проблем с долгими запросами.
2. Диагностика плохого управления транзакциями.
3. Прозрачность для любых клиентов. При использовании чужого ПО, можно видеть проблемы и сообщить о них разработчику.
4. Отсутствие необходимости логировать эти таймауты через приложение.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429178
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю - при третьем пункте, сервер не прерывает коннект/транзакцию/запрос, а оставляет как есть, уже не возвращаясь к нему. Только пишет в лог о сработке таймаута.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429183
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

по третьему пункту Влад сказал, что это задача трейса/аудита (долгие запросы там и сейчас можно отследить, коннекты и транзакции пока нет).
1 пункт очевиден. Скорее всего выключаться будет установкой времени таймаута в 0.
Если таймаут будет установлен прерывание будет всегда. А вот лог можно будет получить если есть настройка в аудите.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429206
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспо третьему пункту Влад сказал, что это задача трейса/аудита (долгие запросы там и сейчас можно отследить, коннекты и транзакции пока нет).
1 пункт очевиден. Скорее всего выключаться будет установкой времени таймаута в 0.
Если таймаут будет установлен прерывание будет всегда. А вот лог можно будет получить если есть настройка в аудите.
Я не хочу стрелять из пушки по воробьям. Я хочу настроить:
1. Для всех баз (в конфиге) таймаут для неподтвержденной пишущей транзакции - 5 минут с прерыванием и логом. Это для отлова забытых в IBE обработок или слишком уж долгих обработок БД.
2. Для указанной транзакции таймаут в 1 минуту с логом без прерывания. Это для отлова слишком долго выполняющихся отчетов. На крайний случай, можно будет приделать к каждому отчету его граничное время выполнения. Что сведет ложное срабатывание и проблемы с отчетами к нолю.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429222
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

я тоже примерно тоже самое сначала хотел. Потом после объяснений Влада подумал и согласился с ним.

Вместо таймаута с логом без прерывания предлагаю отдельный фильтр для трейса/аудита позволяющий поймать длительные неактивные коннекты/транзакции. Это кстати может быть сделано и в рамках 2.5, если конечно Влад не найдёт аргументов против этого.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429317
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА не будет ли правильнее сбрасывать и снова ставить таймер после каждого фетча ?Вопрос как минимум интересный, у меня, например, на него нет однозначного ответа.
<хотелка ОН>Сделать оба и вывести рычаги управления в конфиг?</хотелка ОФФ>
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429577
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВместо таймаута с логом без прерывания предлагаю отдельный фильтр для трейса/аудита позволяющий поймать длительные неактивные коннекты/транзакции. Это кстати может быть сделано и в рамках 2.5, если конечно Влад не найдёт аргументов против этого.1. Это в рамках 2.х можно смотреть и обрывать используя мониторинг.
2. В трейсе я предлагал писать события убиения запроса\тр-ции\коннекта по таймауту. Это не то же самое, что обнаружение простаивающих тр-ций\коннектов (или тормозящих запросов) по истечение некоторого таймаута.
И опять же, таковое обнаружение уже сейчас можно делать самостоятельно через мониторинг.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429581
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyhvladА не будет ли правильнее сбрасывать и снова ставить таймер после каждого фетча ?Вопрос как минимум интересный, у меня, например, на него нет однозначного ответа.
<хотелка ОН>Сделать оба и вывести рычаги управления в конфиг?</хотелка ОФФ>Очень не хочется добавлять это в конфиг. Я пока что склоняюсь к варианту переустановки таймера на каждом фетче (группе фетчей).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429619
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ пока что склоняюсь к варианту переустановки таймера на каждом фетче (группе фетчей).Я рассматриваю житейскую ситуацию, когда юзер ошибся в параметрах отображения/фильтра и вынуждает программу фетчить мильон-другой записей на клиента. образно вылез на своем тихоходной тракторе на хайвей и загородил несколько полос собой.Мне он такой нахрен не нужен, ошибку по таймауту ему в зубы, чтоб дорогу не загораживал.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429633
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Пони бегает по кругу..."
Ivan_Pisarevskyвылез на своем тихоходной тракторе на хайвей и загородил несколько
полос собой
Так значит хайвей надо расширять, отдельные полосы сужать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429635
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

сейчас в мониторинге можно узнать время начала транзакции и её состояние. А вот время с которого она начала простаивать нельзя. Если можно тогда как?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429676
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениссейчас в мониторинге можно узнать время начала транзакции и её состояние. А вот время с которого она начала простаивать нельзя. Если можно тогда как?Согласен, напрямую никак. Только косвенно, по отсутствию активных запросов в этой тр-ции.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429681
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyhvladЯ пока что склоняюсь к варианту переустановки таймера на каждом фетче (группе фетчей).Я рассматриваю житейскую ситуацию, когда юзер ошибся в параметрах отображения/фильтра и вынуждает программу фетчить мильон-другой записей на клиента. образно вылез на своем тихоходной тракторе на хайвей и загородил несколько полос собой.Мне он такой нахрен не нужен, ошибку по таймауту ему в зубы, чтоб дорогу не загораживал.Ну так ты и на тех, кто в секунду 1000 мелких запросов выполняет, тоже запрет захочешь ставить...

Как по мне, "бороться" со слишком слабыми фильтрами\слишком большими резалтсетами должен не сервер, а прикладной разработчик. Возможно с помощью волшебного админского пенделя :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429693
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladСимонов Дениссейчас в мониторинге можно узнать время начала транзакции и её состояние. А вот время с которого она начала простаивать нельзя. Если можно тогда как?Согласен, напрямую никак. Только косвенно, по отсутствию активных запросов в этой тр-ции.

Косвенно мы узнаем лишь то что она не активна. А вот с какого времени неактивна...
Это важно. Просто когда транзакция неактивна 2 секунды, то и фиг с ней, а вот если полдня, то совсем другое дело.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429700
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТак значит хайвей надо расширять, отдельные полосы сужать.Дык рядом есть "проселок" (2 штуки), ползи сколь хошь. Тяжелая риодонли хрень методично выносится на зеркальный сервер на репликации. Легчает основному от этого весьма здорово.
hvladКак по мне, "бороться" со слишком слабыми фильтрами\слишком большими резалтсетами должен не сервер, а прикладной разработчик.Боремся, но заторы иногда все равно возникают, иногда. И превентивно боремся и разбором полетов.
hvladВозможно с помощью волшебного админского пенделя :)Вот его-то мы сейчас и обсуждаем! разве нет?
hvladНу так ты и на тех, кто в секунду 1000 мелких запросов выполняет, тоже запрет захочешь ставить...Дык это уже другой параметр, что знает, может и захочу.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38429760
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyВот его-то мы сейчас и обсуждаем! разве нет?
Нет, сейчас вы обсуждаете бомбу, которая разнесёт трактор к ЧМ вместо того, чтобы его с
хайвея аккуратно изъять и на просёлок пересадить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430064
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С кочки зрения сисадмина: кто тайм-аут выставил, тот и виноват, а разборки с тормозами приложения - прерогатива разработчика. Вне зависимости от того, что сам разработчик думает по этому поводу.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430133
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovего с хайвея аккуратно изъять и на просёлок пересадить.Изъять аккуратно можно только постфактум, когда пробка стала видна (например в логах трейса, в жалобах юзеров и т.п.). Да изъять именно "аккуратно", когда он уже выехал и все загородил нахрен, не уберешь или тупо ждать или взрывать.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430149
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyДа изъять именно "аккуратно", когда он уже выехал и все загородил
нахрен, не уберешь или тупо ждать или взрывать.
Отсюда поподробнее, пожалуйста: что именно он загородил? Read-латчи как и локи между собой
совместимы. Или этот запрос - DML?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430193
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpastorМеня интересует только гарантированное время получения отклика, хотя бы для переключения на резервный источник данных.
Сейчас приходится прибивать ВЕСЬ поток вместе с коннектом. А это очень грязное дело.Ну так есть же fb_cancel_operation.

pastorпропущено...
И куда же тогда податься бедному еврею?Для начала - в realtime OS :)

fb_cancel_operation. нужно вызывать из другого потока?

а туточки сразу - поставил 2 сек - выстрелил и забыл. через указанное время вернет или результат или отлуп.
это как Mutex.WaitFor( msec).

в управлении из другого потока есть беда - поток может таки выполнить команду, пока его приговаривают.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430480
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИ опять же, таковое обнаружение уже сейчас можно делать самостоятельно через мониторинг.
Проблема мониторинга в том что его нужно постоянно опрашивать, а опрос мониторинга операция затратная. Вот если бы можно было к мониторингу прицепить триггер, тогда да! :)
С аудитом вижу основную проблему в сложности машинной обработки (текстовый вывод и отсутствие стандарта).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430487
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TruhinС аудитом вижу основную проблему в сложности машинной обработки
(текстовый вывод и отсутствие стандарта).
Именно поэтому аудит делается плагином. Напиши такой, который будет его выводить в
машиночитаемом формате.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430499
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
во первых насколько я знаю на этот плагин нет ни какой документации. Разбираться по исходникам FB как минимум не мой уровень снания C++.
во вторых я не говорил что мне это необходимо, в этой теме обсуждаем что бы хотелось.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430504
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhinво первых насколько я знаю на этот плагин нет ни какой документации.

Парней из IBSurgeon это не остановило.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430505
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhinо вторых я не говорил что мне это необходимо, в этой теме обсуждаем что
бы хотелось.
Хотеть что-то ненужное обычно называется "блажь".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430508
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovХотеть что-то ненужное обычно называется "блажь".

Гвозди довольно неплохо заколачиваются булыжником, а гантелей так вообще... Но не думаю, что при этом хотеть иметь в хозяйстве, хороший молоток - "блажь".
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430526
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПарней из IBSurgeon это не остановило.
кстати, и правда, а то я про этот плагин забыл.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430577
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,
а что за плагин? Платный?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38430662
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhinkdv,
а что за плагин? Платный?
13160039
Плагин может выводить результат тремя вариантами:
- в файл текстовый, как стандартный
- в файлы структурные, которые затем можно подключить к FB как EXTERNAL TABLE
- в базу FB, подгрузив fbclient (или fbembed)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38431217
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это так для того кто та таймауты начнет писать.

Я прислушался к Вам и переделал все на короткие пишущие транзакции, ну я так думал, что все короткие будут. Смотрел на этот топик как вы тут таймауты обсуждаете. И тут позвонил клиент. Он сказал, что мол запустили функцию на открытие документов для изменений и начался коллапс в фирме "Deadlock" то там то там.

Я сразу сообразил в чем дело и побежал смотреть. В некоторых случаях не возможно вообще оказывается предположить сколько будет длиться транзакция.

Пришлось переписать это место так
Код: sql
1.
2.
3.
4.
EXECUTE BLOCK(
...
  EXECUTE STATEMENT (:sSQL) WITH AUTONOMOUS TRANSACTION;
...



И то по моим подсчетам 02:43:00 будут открываться 1 160 000 документов. У меня попутный вопрос 118 транзакций в секунду это нормально?

Вот статистика на 1 операцию
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Время подготовки "00:00:002", выполнения "00:00:002"
Plan:PLAN (DOCS DLOCK INDEX (PKDLOCK))
PLAN (DOCS I002 INDEX (II002_1))
PLAN (DOCS CONTR INDEX (PKCONTRACTOR))
PLAN (DOCS CONTR INDEX (PKCONTRACTOR))
PLAN (DOCS DLOCK INDEX (PKDLOCK))
PLAN (DOCS T003 INDEX (IT003_1))
MaxMemory: 478607684, CurrentMemory: 478593540, NumBuffers: 28192
Cache fetches 79, reads from disk 0, writes to disk 0
I002 backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 1, read_seq 0, update 0
TREE10 backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 1, read_seq 0, update 0
CONTR backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 2, read_seq 0, update 0
DLOCK backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 3, read_seq 0, update 1
T003 backout 0, delete 0, expunge 0, insert 0, purge 0, read_idx 2, read_seq 0, update 1
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38431253
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикУ меня попутный вопрос 118 транзакций в секунду это нормально?


на SSD получили 190 транзакций в секунду
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38434116
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сож-ю, не мог сразу подключиться к этой беседе, но пока топег не утонул, добавлю сюда свои 5 коп.

*. First of all. Для любого стейтмента должна быть возможность ограничить объем мусора, который он должен собирать. "Единицей измерения" в этом лимите должно быть всё таки время , потраченное на сборку мусора, а не число мусорных версий. До тех пор, пока этого не будет, один и тот же запрос на одних и тех же данных будет "нерегулярно обламываться" по таймауту, если ему пришлось после кого-то делать GC.

* При запуске user-трейса должна быть какая-то возможность указать движку, продолжать ли отслеживать таймауты. Потому что трейс грузит движок! и могут быть срубания вовсе не от того, что запрос тупой, а потому что трейс запущен и повлияло именно это .

* При старте системного GC отсчет таймаутов должен приостанавливаться. Не у всех GC запланирован на ночер или время минимальной активности, есть системы с круглосуточной работой. Этот GC - он тоже "небесплатен", насколько я могу понять

* При получении аттачем запроса заполнить mon$-таблицы - тоже самое, время таймаута для него должно быть увеличено на то число сек/минут, что он потратил на удовлетворение любопытного админа;

* Отсчет времени должен вести сервер. На клиенте системное время может глючить (глюки BIOS'a, отсутствие регулярной синхронизации времени в процессе работы и проч). Кроме того, когда прога сильно задумывается, юзер может переключиться в какую-нить полноэкранную игру и тогда что там будет со временем на рабочей станции - вообще неизвестно.

* Таймаутов должно быть несколько:
** на время выполнения отдельного стейтмента (отслежка - с момента его начала, а не момента фетча 105001-ой записи);
** на время отсутствия стейтментов в транзакции, если она имеет TIL <> (RO | RC). При наступлении таймаута в RW-транзакции, если она ничего не меняла, делать COMMIT вместо rollback'a;

* Неактивная транзакция, если её номер > OAT, не должна завершаться по таймауту;

* Таймаут ставить надо только в databases.conf, по разным базам - разный.

* Должна быть возможность "замораживания" таймаутов на ночное время. Если предприятие НЕ работает с 21 вечера до 9 утра, то всякие тугодумные отчеты, стартующие из-под крона, или просто запущенные усерами в 20 ч, должны спокойно доработать до утра. Их нельзя срубать. А вот днём - извините, но "ну вас нахрен, ждите вечера".

* Разработчик прикладухи НЕ должен иметь никакого способа влиять на таймаут. Никаких "хинтов", параметров в dpb\tpb\etc и проч. Этот гад разраб наваяет и свалит, а админу затем разгребать. А если еще и исходников нет, то вообще веселуха будет. К тому же, для тиражируемых продуктов очевидно, что железо будет разное и никто вообще не скажет, какой конкретно нужен таймаут там или сям.

* Очень правильным считаю предложение CybarMax'a: дать возможность разной реакции на срабатывание таймаута: а) оборвать с логированием; б) только залогировать этот факт; в) добавил бы еще и полное отсутствие логирования, но этот вариант объявить "опасным" или "вредным" и т.п.

* Админ должен иметь возможность указать в databases.conf в виде списка (как в конфиге трейса имена алиасов или баз):
** имена приложений, на которые таймауты НЕ распространяются. Тогда все остальные приложения будут подпадать под действие таймаутов;
** имена только тех приложений, на которые следует распространять таймауты. Тогда на все остальные приложения под действие таймаутов не подпадут;

И еще, хотя и 0xFF: помимо таймаутов, было бы классно иметь что-то типа квот на max число фетчей. Админ, зная данные и то, какие запросы к ним идут, всегда сможет внятно сказать: "в моей системе любой запрос, выполняющийся за 1 сек, но делающий более NNN млн фетчей - всё равно является дерьмом" :-). И такие запросы лучше узнать в лицо, хотя бы и однократно включив отсечку их.

PS. ("вновь закинул старик свой невод")
2 dimitr : дай пинка Кальтенбруннеру, плз. НЕ работает нормально его similar to с текстами среднего размера (>=1Mb) - и тупит, да и не реагирует на команду обруба через mon$. Я сигналил в трекере, и не единожды, да всё бестолку.
К чему это я, спросите ? А к тому, что пока в приложении есть стейтменты, содержащие SIMILAR TO и обрабатывающие большие тексты, вся эта затея с таймаутами будет не сильно эффективной. Надо сначала научить SIMILAR'ы хотя бы изредка "выглядывать" во внешний мир во время своей работы.

Ффух... пока вроде бы всё...
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38435723
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид* Отсчет времени должен вести сервер. На клиенте системное время может глючить (глюки BIOS'a, отсутствие регулярной синхронизации времени в процессе работы и проч). Кроме того, когда прога сильно задумывается, юзер может переключиться в какую-нить полноэкранную игру и тогда что там будет со временем на рабочей станции - вообще неизвестноЭто не аргумент: тайм-ауты - дельта. Небольшая.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38435770
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЭто не аргумент: тайм-ауты - дельта. Небольшая.какая именно "небольшая" ? ты уже промерял ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38435821
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидBasil A. SidorovЭто не аргумент: тайм-ауты - дельта. Небольшая.какая именно "небольшая" ? ты уже промерял ?Четыре миллиарда тиков это несколько более сорока суток.
Какая точность устроит лично вас на таких интервалах?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38435824
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТаблоидпропущено...
какая именно "небольшая" ? ты уже промерял ?Четыре миллиарда тиков это несколько более сорока суток.
Какая точность устроит лично вас на таких интервалах?А причём тут сутки с миллиардами тиков ? Достаточно, чтобы время на раб. станции отстало от времени сервера на 3-5 сек - и всё.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38435836
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА причём тут сутки с миллиардами тиков ? Достаточно, чтобы время на раб. станции отстало от времени сервера на 3-5 сек - и всё.Ещё раз - тайм-аут это дельта , даже если оно делается на системном времени.
Но, обычно, таймеры работают на таймерах. У которых есть длительность, но нет времени суток.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39164379
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

И чем все кончилось к 2016му году ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39231488
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkohvlad,

И чем все кончилось к 2016му году ?Всё только начинается :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39365505
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, просмотрел 11 страниц, не нашёл то, что нужно. Есть ли в FB3 параметр "время разрыва неактивного коннекта"?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39365510
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

пока нет, будет в ФБ 4 (типа того).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39365553
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Правильно понимаю, что и по умолчанию ничего нет, коннект висит вечно? Пока админ руками не отключит?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39365573
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIkdv,

Правильно понимаю, что и по умолчанию ничего нет, коннект висит вечно? Пока админ руками не отключит?
Есть таймаут неактивности для ТСР, зависит от настроек ОС.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39365666
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvбудет в ФБ 4 (типа того).
Лично я очень сильно надеюсь, что не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #39365668
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

если коннект жив - да. Используется keepalive, при котором ОС при неактивности в коннекте его пинает сама, и если он на какой-то стороне умер, отрубает. Не умер - не отрубает. Если коннект сам помер - другой стороне об этом сообщается, она соединение закрывает.
А серверу, сейчас, совершенно по барабану, делает что-то коннект, или нет.
...
Рейтинг: 0 / 0
270 сообщений из 270, показаны все 11 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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