Во-первых, несколько дней до "я проверю в понедельник" с лагами на клик в полминуты на посещаемом ресурсе это потеря реальных и совсем не маленьких денег.
Во-вторых я по Вашему ответу уже понял, что вы считаете блокировку центральной базы с целью избегания дублирования работы граббером нормальным явлением, и выводы из этого сделал. Костыли - это использовать блокировку всей базы для таких задач, а не то что нам сейчас приходится делать. Мои админы проблему нашли и решили в меру своих возможностей, и максимально быстро.
Поправите в апдейте СВОЙ костыль - мы легко переключим все обратно, никаких проблем с этим нет.
зачем gallery_grabber блокирует базу?
Re: зачем gallery_grabber блокирует базу?
Ок, как вы считаете надо сделать?
Don't forget to run script update
Re: зачем gallery_grabber блокирует базу?
Лично я считаю что блокировку центральной таблицы граббером/чекером надо убирать обязательно. Чем заменить - ну например флагом в rot_settings на мастере или чем-то в этом роде.
Re: зачем gallery_grabber блокирует базу?
А если 2 процесса одновременно прочтут?
А не сколько вы считаете лочит запрос?
А не сколько вы считаете лочит запрос?
Don't forget to run script update
Re: зачем gallery_grabber блокирует базу?
Я в первом посте писал - даже сам запрос LOCK выполняется больше 7 секунд. Да, вы правильно сказали что это не время блокировки. Это фактически время на сброс всех уже активных запросов, буферов и т.п. в течение которого новые записи уже заблокированы, т.е. даже если вы просто подряд кинете команды LOCK/UNLOCK - это уже лаг в 7 секунд. А для нагруженной системы это много, особенно учитывая что процесс такой запускается часто.
Про "2 процесса одновременно прочтут" - с чего вдруг? Этот же мускул прекрасно разрулит параллельные запросы, использование команды типа SELECT checker_flag LOCK IN SHARE MODE никаких проблем вызывать не должно. И при этом заблокируется всего одна запись в маленькой таблице а не вся огромная таблица с галерами.
Или вообще использовать UPDATE checker_flag='on' WHERE checkerflag='off' и проверять ответ сервера - тогда можно совсем без блокировок обойтись.
Про "2 процесса одновременно прочтут" - с чего вдруг? Этот же мускул прекрасно разрулит параллельные запросы, использование команды типа SELECT checker_flag LOCK IN SHARE MODE никаких проблем вызывать не должно. И при этом заблокируется всего одна запись в маленькой таблице а не вся огромная таблица с галерами.
Или вообще использовать UPDATE checker_flag='on' WHERE checkerflag='off' и проверять ответ сервера - тогда можно совсем без блокировок обойтись.
-
tgptraffic_biz
- Posts: 184
- Joined: Fri Nov 16, 2018 2:59 pm
Re: зачем gallery_grabber блокирует базу?
Ну мы разбираем и разберем, я надеюсь, все заинтересованы в этом.
Пока вопрос gallery_grabber.php можно полностью отключить через админку ? То есть какие настройки надо поменять ?
Пока вопрос gallery_grabber.php можно полностью отключить через админку ? То есть какие настройки надо поменять ?
Re: зачем gallery_grabber блокирует базу?
Gallery Grabber Threads, count выставить в 0 в админке
Re: зачем gallery_grabber блокирует базу?
поправлено на for update
но работать будет конечно только с innodb
проверьте плз есть ли у вас сейчас проблемы
но работать будет конечно только с innodb
проверьте плз есть ли у вас сейчас проблемы
Don't forget to run script update
Re: зачем gallery_grabber блокирует базу?
Попробуем.
Хотя я и не понял ограничения про innodb, если делать установку флага например как
UPDATE rot_settings SET checker_flag='on' WHERE checkerflag='off' и потом смотреть affected row - то это будет работать одинаково надежно и на myisam и на innodb и в обоих случаях гарантированно не даст запуститься повторно. Но главное конечно чтобы rot_gallery_info не блокировалась.
Хотя я и не понял ограничения про innodb, если делать установку флага например как
UPDATE rot_settings SET checker_flag='on' WHERE checkerflag='off' и потом смотреть affected row - то это будет работать одинаково надежно и на myisam и на innodb и в обоих случаях гарантированно не даст запуститься повторно. Но главное конечно чтобы rot_gallery_info не блокировалась.
Re: зачем gallery_grabber блокирует базу?
да, идея хорошая
но тут немного разные подходы
в варианте
UPDATE rot_settings SET checker_flag='on' WHERE checkerflag='off'
если вернуло 0 то надо в цикле чекать пока не получишь 1
посмотрим, если будут проблемы то сделаю и такой вариант
но тут немного разные подходы
в варианте
UPDATE rot_settings SET checker_flag='on' WHERE checkerflag='off'
если вернуло 0 то надо в цикле чекать пока не получишь 1
посмотрим, если будут проблемы то сделаю и такой вариант
Don't forget to run script update







