|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladКоннект разорвётся по истечении таймаута. А вот приложение узнает об этом - при попытке что-то сделать в коннекте - если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу Уточни как именно разорвётся коннект и как сообщение о коллбэке попадёт на клиента. Для этого нужно чтобы клиентская сторона вызвала select/recv, нет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 19:42 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladЭтот код изначально не полон, т.к., тут не определена реакция на исключение в Rollback. Этот код - результат многолетнего хождения по граблям. И я на данный момент считаю его правильным, просто потому, что все другие варианты облажались. Я не настаиваю, что этот код абсолютно правильный, но, повторюсь, на данный момент я не изобрёл ничего лучшего. И таки нет, это не код конкретных IBX/FIB+, это код использует мою собственную обёртку, в которой Rollback гарантированно ничего не выкидывает. Именно потому, что мне никогда в голову не пришла ни одна идея как можно "обработать его более цивилизованно". О чём я, впрочем, уже сказал выше. В-общем, я всё уже сказал. Повторять по несколько раз только потому, что до некоторых аргументация не доходит с первой попытки, не собираюсь. В конце концов, это же вам потом отвечать на вопросы в firebird-support, не мне. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 20:10 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovhvladКоннект разорвётся по истечении таймаута. А вот приложение узнает об этом - при попытке что-то сделать в коннекте - если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу Уточни как именно разорвётся коннект и как сообщение о коллбэке попадёт на клиента. Для этого нужно чтобы клиентская сторона вызвала select/recv, нет?..Я выше писал о том, что таймауты могут отслеживаться как на клиенте, так и на сервере. В случае клиентского таймаута всё тривиально - как только таймер таймаута на клиенте сработал, он вызывает колбек и рвёт соединение (закрывает сокет, если это tcp). В случае серверного таймаута всё происходит так же, как и при отмене через мониторинг\шатдауне БД, т.е. клиент ничего не узнает, пока не см. п1 выше ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 20:15 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladВ случае серверного таймаута всё происходит так же, как и при отмене через мониторинг\шатдауне БД, т.е. клиент ничего не узнает, пока не см. п1 выше И тут возникает логичный вопрос к авторам этого предложения: в чём вообще смысл таймаута на коннект? Сократить число подключений? Ну так см. п1 выше почему это не будет работать без поддержки со стороны клиентского приложения. А при наличии таймаута в приложении оно всё может сделать и само, без модификаций в сервере. Так в чём фишка?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 20:33 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovhvladВ случае серверного таймаута всё происходит так же, как и при отмене через мониторинг\шатдауне БД, т.е. клиент ничего не узнает, пока не см. п1 выше И тут возникает логичный вопрос к авторам этого предложения: в чём вообще смысл таймаута на коннект? Сократить число подключений? Ну так см. п1 выше почему это не будет работать без поддержки со стороны клиентского приложения. А при наличии таймаута в приложении оно всё может сделать и само, без модификаций в сервере. Так в чём фишка?.. при реалтайме я должен пристрелить поток вместе с коннектом, если ответа нет более N сек. станет намного легче следить за пулом коннектов, вовремя переключаться на другие источники данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 21:03 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
pastorя должен пристрелить поток вместе с коннектом, если ответа нет более N сек. А теперь повторяю вопрос медленно: зачем нужен таймаут на неактивность коннекта? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 21:06 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovв чём вообще смысл таймаута на коннект? Сократить число подключений? Ну так см. п1 выше почему это не будет работать без поддержки со стороны клиентского приложения будет работать на 95%. Сервер сам освободит все ресурсы ядра, живыми останутся лишь сокет и клиентские хендлы. Для многих целей этого вполне достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 21:17 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэто не будет работать без поддержки со стороны клиентского приложенияКогда я говорю "клиент" - речь о fbclient'е. Не думал, что и это надо расжёвывать. Dimitry SibiryakovА при наличии таймаута в приложении оно всё может сделать и само, без модификаций в сервереЕщё раз - таймаут не в приложении, он в клиенте. Серверный таймаут к этому не относится. Dimitry SibiryakovТак в чём фишка?..Сделать то, что тебе самому делать лениво. Сделать это правильно и для всех. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 21:48 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladКогда я говорю "клиент" - речь о fbclient'е. Не думал, что и это надо расжёвывать. Не это надо разжёвывать, а реализацию. Как будешь таймаута ждать? Создавать отдельный поток при каждом коннекте? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 21:54 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а) нет никакой реализации на данный момент, есть обсуждение б) не надо меня держать за дурачка ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 22:30 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladа) нет никакой реализации на данный момент, есть обсуждение И это обсуждение не может включать в себя варианты реализации?.. Я вот вижу вариант реализации с дополнительным потоком. А что у тебя на уме? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 22:55 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Уффф.... я все-таки одолел этот топик. Сначала порывался начать отвечать, недочитав до конца Тема наболевшая, но я ее для себя решил. да-да FBScanner я поэтому и начал писать. Dimitry SibiryakovИ тут возникает логичный вопрос к авторам этого предложения: в чём вообще смысл таймаута на коннект? Сократить число подключений? зришь в корень. Да отстрелить к чм рукожопое приложение, которое держит OAT. Выбросить его немогу уже который год, но с помощью таймаутов на активность коннекта могу продолжать работать и далее. Постепенно изымаю у него функции, передавая их новым приложениям, к которым есть исходники. И разумеется я ЗА 14967127 , чтобы админ сервера мог задать общую планку для разных приложений. Не укладываешься - учи матчасть. Сервер общий, ты тут не один. DarkMasterhvladЕсс-но, самый первый раз таймер взводится в момент начала выполения запроса. Ты может таки начнёшь хоть чуть-чуть думать, перед тем как писать ? Гм... Я не могу со 100% уверенностью указать длину таймаута. Что непонятно-то? Все остальное - так, возможные сопутствующие проблемы. ну разумеется! Я тебе больше скажу: ты как разработчик и несможешь сказать, как на разных серверах разных заказчиков будет выполняться твой запрос. Какой там будет план, вследствие разного заполнения тех же таблиц. И ведь (о ужас!), на сервере может быть не только твое приложение. И не только твое приложение может работать с твоей базой. Поэтому таймауты, заданные из приложения - суть зло, которые админы всегда будут давить. И будут правы. У одного есть ресурсы на покупку приличного сервера (да, это про тебя IP ) , и он задаст для своего сервера одну планку. А у другово - "чем богаты тем и рады". Админа нет, и таймаут выключен по умолчанию конфиге. Когда нибудь сделает - и ладно. Так что считаю неразумными стенания "и куда потом податься бедному разработчику". Сначала огребет админ, за установленный в конфиге параметр таймаута. А если админа нет - откуда отстрел по таймауту возникнет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 23:04 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Так все-таки таймауты точно будут делать или обсуждается необходимость этого? Из топика это не совсем понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 07:46 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 07:54 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Почитал сегодня утром топик, и никак не могу сообразить, таймауты хорошо это или плохо. Взять тот же таймаут для коннекта. Если пользователь оставил программу подключенной к БД и ушел до утра, то утром он должен прийти и продолжить работать. Принудительно его отключать не считаю правильным (либо делать дисконнект уже из программы). Если же кто-то подключился и ушел в отпуск - тут не знаю, отключать ли его. А вот если кто-то подключился, запустил обработку в снапшот-транзакции и и свалил в отпуск - тут коннект грохать надо, так как скоро будут проблемы. Таймаут для запроса - аналогично. Например, на базе одного филиала отчет будет делаться 1 минуту, на другом филиале - 10 минут. Или какая-то общая обработка - в крупном филиале она будет делаться полчаса (причем в снапшоте), в другом - менее минуты. Возможно, имеет смысл завершать по таймауту конкретные ситуации - запущенные достаточно долгое время concurrency/consistency-транзакции, по которым нет активности, слишком тяжелые запросы (формирование 1 записи более 10 секунд). Но опять-таки, в высоконагруженной в текущий момент системе возможно значительное ухудшение скорости получения строки/общего времени выполнения запроса и будет отлуп на ровном месте. Поэтому предлагаю свести в один список, где и для чего нужны различного рода таймауты, а так же где они наоборот, внесут негативный эффект. Это можно будет сразу указать в описании к их конфигурированию (если все-таки будут). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 08:49 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
CyberMax, прежде чем устанавливать значения таймаутов надо хорошенько подумать. В любом случае всегда можно вернуть дефолтное значение (отсутсвие таймаута) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 09:35 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
А почему бы ИД транзакции не оставить хоть и выполнился запрос. Так хоть можно понять от какой транзакции это чудо. Транзакция то в списке болтается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 09:47 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Симонов Дениспрежде чем устанавливать значения таймаутов надо хорошенько подумать. В любом случае всегда можно вернуть дефолтное значение (отсутсвие таймаута) Дык обо что и речь. В какую сторону думать? Как думать? Что учитывать? И стоит ли оно того? Добавлю еще два нюанса: 1.Выполнение запроса после массового удаления/апдейта, оно же проблема сборки мусора. Вот обозначили выполнение апдейта в 2 секунды (проплывала в топике такая цифра). Сегодня обновили много записей в разных таблицах (установили обновление версии). Апдейт начал выполняться (а это может быть и SP с селектами) и стал собирать мусор. В итоге вместо 1 секунды делался 5 секунд. То же самое может и с выборками произойти (журналы, отчеты). 2. У GTT есть противная вещь - нелинейная деградация времени селекта при вставке/удалении, когда движок проходит по всем версиям записей. То есть запрос (EB, SP, неважно), работающий с разным количеством строк в GTT, даст разное время выполнения, причем разница может отличаться на несколько порядков. Хотя сам запрос будет абсолютно корректным. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 10:27 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
CyberMaxВот обозначили выполнение апдейта в 2 секундыТаймаут в 2 сек - это полный маразм, давайте без фанатизма, плс Таймауты, в первую очередь, предназначены для предотвращения ненужного потребления ресурсов (тот же застрявщий OST, толпа неактивных коннектов, жрущих память и т.п.) и как страховка от граничных (форс-мажорных, если хотите) ситуаций (кривой запрос, выполняющийся слишком долго и т.д.) Не нужно искать realtime в таймаутах ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 10:40 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
CyberMaxУ GTT есть противная вещь - нелинейная деградация времени селекта при вставке/удалении, когда движок проходит по всем версиям записей.Я так понимаю, что речь о многократных вставках и удалениях в одной тр-ции ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 10:41 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
CyberMax, просто не надо ставить таймаут когда это не требуется. Вот моё мнение когда использование таймаутов оправдано: - на хостинге (чтобы ограничить ресурсы) - в целях отладки приложения (хотя можно воспользоваться и трейсом) - для админов, например срубать забытый кем-то IBExpert на двое суток. Пытаться предсказать что запрос отработает в течении 5 секунд однозначно не стоит. Если уж устанавливать таймаут, то как минимум с 10 кратным запасом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 10:46 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladЯ так понимаю, что речь о многократных вставках и удалениях в одной тр-ции ? Да. Топик на эту тему создавал джва года назад. Насчет тикета в трекере не знаю, есть ли он. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 10:49 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
CyberMax, это уже оффтоп. Тут бедный Евгений Болтик и так потерял нить беседы. Задал один вопрос, а в итоге уже на 7 страниц обсуждение таймаутов идёт (хотя косвенно это имеет отношение к его вопросу). Но теперь отделять новый топик уже поздно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 10:54 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
CyberMax, ну так ещё тогда выяснилось, что GTT тут не причём и все возможные рецепты были даны. Так что, да, завязываем с оффтопом :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 11:00 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Симонов Денисбедный Евгений Болтик и так потерял нить беседыЧитая его тексты, я ещё ни разу не видел в них нити. Скорее запутанные клубки из разных нитей. Так что либо ему это и так привычно, либо это такая месть с нашей (моей) стороны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 11:01 |
|
|
start [/forum/topic.php?fid=40&msg=38427740&tid=1561806]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 157ms |
0 / 0 |