|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenЯ готов согласиться даже на то, что наше ПО - трижды говно, лишь бы выяснить в чём проблема и справить ситуацию ) Ну так начни уже с http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1306610&msg=21766644 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:50 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Начну конечно. Но всё зависит от настроения сисадмина. Так что это точно будет не сегодня ( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:06 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenНо всё зависит от настроения сисадмина. У тебя что, нет удалённого доступа к серверу по SSH?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:10 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
А для чего делать sweep при отсутствии разницы между OIT и NEXT? Может сперва анализировать вывод gstat и при наличии разницы более 20000 запускать sweep? Сборка мусора итак должна выполняться, безо всякого sweep (используется же SuperServer)... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:13 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Доступа нет и не будет. Что-либо делать с сервером можно только при личном контакте с сисадмином. Логи смотрю сбоку на экране )))) Не по телефону, ни по почте он не реагирует. Вот такая жопа. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:19 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenВот такая жопа. Это единственный пользователь твоей программы? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:23 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Наверное, просто для остальных пользователей все ошибка одинаковы: "Красный крест и что-то написано" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:44 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenЧто-либо делать с сервером можно только при личном контакте с сисадмином. Логи смотрю сбоку на экране )))) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
P.S. "NO_SERVER_SHUTDOWN_SUPPORT" - классик или суперклассик. "MULTI_CLIENT_SUPPORT" - суперсервер. Из ограничений: На FB1.5 сервисные запросы (кроме информационных) работают только в режиме SuperServer. Classic запускает реальные приложения (gbak/gfix/итд). Приложения "отправить firebird.log" - не существует. На FB2.1 и FB2.5 сервисные запросы (кроме информационных) могут давать ошибку, если используется "чужая" версия fbsvcmgr. Функционал "родных" fbsvcmgr на этих версиях ограничен. "gbak -se" и "fbsvcmgr action_backup/_restore" отличаются "на опции перенаправлений": gbak передаёт имя файла протокола и с ним работает сервер, fbsvcmgr читает вывод, который ему отправляет сервер. В результате, fbsvcmgr не позволяет включать протоколирование, когда используются stdin/stdout для файла бэкапа. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:09 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDen, делается достаточно просто. на их системе замеряете время выполнения какого-нибудь запроса, идеально в монопольном режиме. И замеряете такой же запрос у себя на десктопе. После чего вывод на лист А4, печать и подпись. Если админ не реагирует, то тогда их начальству. С админом, конечно, отношения будут испорчены, но в данном случае, видимо, всё равно, испорчены они или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:39 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Для трейса такой конфиг сойдёт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 18:48 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
kdv, Если бы была возможность как-то повлиять на сисадмина, мы бы уже повлияли )) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 18:49 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenЕсли бы была возможность как-то повлиять на сисадмина, мы бы уже повлияли )) Если это не твой единственный пользователь, то трассировку и прочие диагностические операции ты можешь начать делать уже сейчас с тем, у кого админ сговорчивее. Чисто чтобы понять "а нельзя ли и в самом деле твоё приложение улучшить". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 19:15 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Запуск трассировки и получение результата не требует доступа на консоль сервера. Эту и многие другие задачи можно выполнять никак не беспокоя админа. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 19:18 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDen, это лишнее ArtDen Код: plaintext 1. 2. 3. 4.
Ещё можно подумать про time_threshold и print_perf ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 19:46 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Basil A. Sidorov, В других организациях трассировка периодически запускается в случае, если есть претензии на некоторое подтормаживание. И она реально помогает (мы или перестраиваем запросы или химичим с индексами). PS: прямого доступа к базе у пользователя нету. Это трёхзвенка. К базе можно подключится только локально. Но надо подумать, что возможно дадут доступ к порту 3050 для некоторых пользователей снаружи, чтобы мы поменьше нагружали админа. PPS: причина тормозов вроде понятна - глюки в виртуализации, которые приводят к очень сильно просадке скорости дисков. Меня интересует deadlock, которым заканчивается выполнение некоторых запросов. hvlad, какой поставить time_threshold ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:04 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenпрямого доступа к базе у пользователя нету. Это трёхзвенкаНо разрабатываете её вы? Запросите доступ к серверу приложения - в какой-то мере это ваша епархия. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:09 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenВ других организациях трассировка периодически запускается в случае, если есть претензии на некоторое подтормаживание. И она реально помогает (мы или перестраиваем запросы или химичим с индексами). Значит у тебя должны быть достаточно много достаточно свежих трасс в которых ты можешь точно посмотреть параметры стартующих транзакций, в особенности тех, в которых стартуют запросы, обламывающиеся (у других) с дедлоком. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:21 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Я тут приводил пример запроса, который заканчивается дэдлоком: Код: sql 1.
serv_settings - это таблица с двумя колонками, которая содержит 3 или 4 записи в виде key->value (name - это key, svalue - это типа value). Она была заполнена один раз при установке ПО. И она никогда не меняется. При подключении клиента к нашему серваку, этот запрос выполняется первым. В других организациях этот запрос выполняется так быстро, что не попадает в лог трейса, т.к. у нас стоит time_threshold 1000 (запросы, которые длятся более секунды считаются тормозящими). Так что мне нечего тебе показать )) В общем-то дэдлок у меня вообще не вяжется с select-ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:42 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDenТак что мне нечего тебе показать )) А я и не говорил "мне показать". Я сказал "тебе посмотреть". И ещё сказал, что самое время выбрать пользователя с админом посговорчивее и снять-таки полную трассу твоего приложения чтобы было в чём покопаться на досуге. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 21:04 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDen, deadlock при таком запросе, если serv_settings это просто таблица, а не процедура которая что-то там вставляет или модифицирует, может быть только если уровень изолированности read_committed no_rec_version. Так что надо трейс смотреть. Вы же его сами можете посмотреть у себя, не обязательно у клиента. Или у вас клиенты сами ставят древние ODBC-драйвера, у которых no_rec_version? deadlock, который пишется в firebird.log - это другое. Это скорее всего что-то в памяти локов поломалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 22:10 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
kdv, Это я успел посмотреть ещё на работе. Вот: Код: 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
Там куча отладочной выдачи, т.к. там лишние флаги для трейсов указаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 23:51 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
Это выдача трейса с моего компа при тестировании скрипта, запускающего трейс для сисадмина ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 23:52 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
DmSerА для чего делать sweep при отсутствии разницы между OIT и NEXT? Может сперва анализировать вывод gstat и при наличии разницы более 20000 запускать sweep? А зачем сакральная привязка к значению 20000? То что это значение по дефолту не означает что в этом велкий смысл. Опять, таки, это значение по дефолту для автозапуска свипа, т.е. если цифра больше этой установки - то он и сам запустится. Более интересный вопрос - если там разрыв транзакций более 20000 - может быть как раз запускать свип и не нужно, ибо толка может и не быть, а вред в виде тормозов - может быть. В моем случае, для борьбы с большими разрывами (бывало по 200-300 тысяч) помогало найти коннект из которого запущена та самая старая транзакция и закрыть его. Разрыв тут же значительно уменьшался. А после того как в приложении переделал работу с транзакциями - обычный разрыв находится в диапазоне до нескольких сотен. Не более. Автосвип у меня отключен, запускается по ночам принудительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 05:08 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
fraks, всё неправильно. - "разрывы" бывают разные. Самый больной разрыв для "неуборки мусора" - Next - OAT, т.е. наличие длинной АКТИВНОЙ транзакции. Никакой свип тут не действует, и не будет, нельзя убрать версии, которые не стали мусором. - авто-sweep по умолчанию 20000. Это разница между OIT и OST. Застревание OIT является индикатором того, что эта транзакция является самой старой, завершившейся по Rollback. То есть, ни в каких коннектах она фигурировать не может, она уже завершилась, и принудительное завершение коннекта никак не даст возможности серверу подвину OIT. - застревание OIT НЕ означает, что в базе есть мусор. Я постоянно талдычу, что миллион транзакций может ничего не обновлять (не генерировать версии), а одна транзакция может создать миллион версий. sweep этого не знает, и всё равно будет сканировать всю БД. - застревание OIT влияет не только на срабатывание авто-свипа (если он не 0), но и на объем памяти, который аллокируют транзакции snapshot. Такие транзакции копируют в свою локальную память все состояния транзакций от OIT до Next. Но, 1 миллион транзакций в TIP от OIT до Next займет 250 килобайт (четверть от количества транзакций). И, наконец, значение автосвипа в 20000 было установлено по умолчанию как минимум лет 20-25 назад. С тех пор количество транзакций в сутки существенно увеличилось. Но это не значит, что поэтому авто-свип можно увеличить в 10-100 раз. Объемы баз данных с тех пор существенно увеличились, поэтому запуск авто-свипа в произвольный момент сейчас фактически недопустим, если вы не хотите, чтобы сервер ВДРУГ посередине рабочего дня начал сканировать всю базу в 200 гиг на предмет уборки мусора. Поэтому свип надо настраивать по расписанию. Тем не менее, в ФБ 3 у страниц данных есть флаг swept, то есть, свип теперь проскакивает быстрее, что ручной, что авто. А в ФБ 4 меняется сборка мусора, позволяющая "выкусывать" мусор из цепочек версий, чего раньше не делалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 11:22 |
|
deadlock при свипе
|
|||
---|---|---|---|
#18+
ArtDen, есть вопросы: - если это не ODBC, тогда почему чтение этих данных идет в read write, а не в read only? - если это таблица, которую долбят сотни коннектов, то надо проверять fb_lock_print, нет-ли там повышенного mutex wait. оптимизировать в этом запросе нечего, увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 11:26 |
|
|
start [/forum/topic.php?fid=40&msg=39749709&tid=1560870]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 157ms |
0 / 0 |