Если при запущенном в резидентном режиме squidmill на сколько нибудь нагруженном squid-е делать запросы к базе, очень скоро они перестают проходить с ошибкой: # squidmill -d /var/log/squid/squidmill.db -r -i *** ERROR IN ##execute-program -- This object was raised: "database is locked" После перезапуска резидентной части все снова начинает работать до повтора этой ситуации. После выпадения ошибки файл .db расти перестает, рядом с базой возникает файл с расширением .db-journal, после чего продолжает расти только он, но толку от этого мало -- после перезапуска резидентной части размер файла .db остается тем же, что был до перезапуска -- расти начинает уже потом. Система: p5 [root@alterator squid]# rpm -q squidmill libsqlite3 squidmill-2.0-alt4 libsqlite3-3.6.19-alt1 [root@alterator squid]# cat /etc/sysconfig/squidmill SQUIDLOGUSER=squid SQUIDLOGFILE=/var/log/squid/access.log Squid и squidmill запускаются в отдельных контейнерах. Каталог с логами сквида подмонтирован между контейнерами через -o bind. Все запуски squidmill (резидентный и ручной для отчета) производятся в одном и том же контейнере.
Я исправил эксклюзивную транзакцию на разделяемую. Надеюсь, что это поможет. Исправление лежит тут: git://git.altlinux.org/people/manowar/packages/squidmill.git В Сизиф пока не собирается, а без него нельзя обновить и в ветках.
Нет, такая же ситуация. По-моему, дело не в этом: Ключ -R (округление) в инитскрипте не используется, а приведенный патч меняет поведение только функции round-log. bulk-insert же отрабатывает без отдельной транзакции, а он и становится проблемой. В доказательство этого можно запустить squidmill в follow mode без ключа -B 1. В этом случае запись на диск (и выполнение bulk-insert) производится гораздо реже, и у меня воспроизвести ошибку описанным образом сходу не получилось.
(В ответ на комментарий №2) > В доказательство этого можно запустить squidmill в follow mode без ключа -B 1. > В этом случае запись на диск (и выполнение bulk-insert) производится гораздо > реже, и у меня воспроизвести ошибку описанным образом сходу не получилось. Ну точнее, воспроизводится все-таки, но вероятность этого падения становится гораздо меньше, т.к. пишет на диск реже.
Слушай, а можешь запустить сборщик в foreground и посмотреть, есть ли сообщение об ошибке, когда возникает .db-journal?
squidmill-2.0-alt5 -> sisyphus: * Wed Dec 23 2009 Paul Wolneykien <manowar@altlinux> 2.0-alt5 - Use immediate transactions (closes: 22606)
Положите squidmill-2.0-alt5 в p5/5.1, пожалуйста.
Я собрал для 5.1. Попросите cas@ скопировать в p5 -- у меня прав на это нет.
# uname -a В 6 платформе ошшибка вернулась Linux rasib-srv.rasib 2.6.32-el-smp-alt27 #1 SMP Tue Sep 20 19:38:45 UTC 2011 x86_64 GNU/Linux # squidmill -d /var/log/squid/squidmill.db -r -i *** ERROR IN ##execute-program -- This object was raised: (sqlite3-err 5 "database is locked") # rpm -q squidmill libsqlite3 squidmill-2.1-alt0.M60P.1 libsqlite3-3.7.6.2-alt2 После перезапуска работает, но валится с завидной периодичностью.
Да, я в курсе, что проблема есть. Единственный способ её побороть, как мне кажется, — это самостоятельно организовать доступ к БД через единственный поток. Сейчас между делом занимаюсь .тем, что добавляю поддержку доменных сокетов в Gambit. После этого можно будет через такой сокет обслуживать несколько клиентов, и ошибок блокировки не будет.
Тестируем осторожно http://git.altlinux.org/tasks/66371/ . Пока без доменных сокетов, но зато с небольшим исправлением в gambit-sqlite3 и самом squidmill.
Пакет gambit-sqlite3 тоже нужно обновить. Из Сизифа.
Также можно попробовать новый alterator-squidmill и новые переводы интерфейса к нему (alterator-l10n).
*** Bug 26192 has been marked as a duplicate of this bug. ***
(В ответ на комментарий №10) > Тестируем осторожно http://git.altlinux.org/tasks/66371/ . Пока без доменных > сокетов, но зато с небольшим исправлением в gambit-sqlite3 и самом squidmill. Обновил из сизифа, теперь часто в альтераторе стало вылетать: "key=wrong-type-arg, args=(#f "Wrong type (expecting ~A): ~S" ("pair" ()) (()))" При # squidmill -d /var/log/squid/squidmill.db -r -i бывает задумывается на долго, но в итоге показывает статистику.
(В ответ на комментарий №14) > (В ответ на комментарий №10) > > Тестируем осторожно http://git.altlinux.org/tasks/66371/ . Пока без доменных > > сокетов, но зато с небольшим исправлением в gambit-sqlite3 и самом squidmill. > > Обновил из сизифа, теперь часто в альтераторе стало вылетать: > "key=wrong-type-arg, args=(#f "Wrong type (expecting ~A): ~S" ("pair" ()) > (()))" Совсем забыл, что в Альтераторе у нас нельзя писать сообщение об ошибке, если часть данных уже ушла… Исправлено в alterator-squidmill.git=v2.0-alt5. Теперь, в случае ошибки squidmill, должно появляться нормально сообщение с кодом ошибки, а в /var/log/alteratord.log должно быть записана её причина. > При # squidmill -d /var/log/squid/squidmill.db -r -i бывает задумывается на > долго, но в итоге показывает статистику. Вот на это «задумывается, но показывает» я и понадеялся. Через Альтератор вызывается та же самая функция. Посмотрите, на всякий случай.
И версии gambit-sqlite и squidmill, какие у вас установлены, напишите, пожалуйста.
(В ответ на комментарий №16) > И версии gambit-sqlite и squidmill, какие у вас установлены, напишите, > пожалуйста. gambit-4.6.3-alt1 gambit-sqlite3-1.2-alt1 squidmill-2.2-alt1
(В ответ на комментарий №17) > (В ответ на комментарий №16) > > И версии gambit-sqlite и squidmill, какие у вас установлены, напишите, > > пожалуйста. > > gambit-4.6.3-alt1 > gambit-sqlite3-1.2-alt1 > squidmill-2.2-alt1 Ага. С новым alterator-squidmill, в случае неудачной выборки из БД, вместо непереводимой игры слов, должно появляться сообщение «Squidmill error (<код>)». У вас так (и какой код)?
В p6 надо бэкпортировать в нынешнем виде?
Пока деваться некуда: до реализации unit-сокетов для Gambit я ещё не добрался. Но сизифная версия не должна быть хуже p6, может быть даже она чем-то лучше: я добавил переоткрытие БД в случае ошибки.
(В ответ на комментарий №20) > Пока деваться некуда: до реализации unit-сокетов для Gambit я ещё не добрался. > Но сизифная версия не должна быть хуже p6, может быть даже она чем-то лучше: я > добавил переоткрытие БД в случае ошибки. Хорошо, бэкпортирую пока что есть, ждём полной реализации.
Ребят, может перенесете в основной репозиторий исправленные пакеты? А то ведь приходится вручную из сизифа подтаскивать.
А что, сизифная версия работает стабильно?
Ну она хотя бы работает. На одном сервере аптайм уже 67 дней. Версия лежащая в репозитории через каждые 5 минут умирает. Мне только одна проблема мешает - левые IP в статистике, а остальное - работает.
Хорошо, сейчас отправлю в p6. А с "левыми" адресами нужно разобраться: вы утверждаете, что в /var/log/squid/access.log таких адресов нет, а в squidmill они есть?
Позвольте, но версии "v2.2-alt0.M60P.2" и "v2.2-alt3" отличаются только адаптацией к systemd, а она не нужна в p6. Ну плюс ещё сизифная версия собрана более новым gambit, но это вряд ли принципиально. Расскажите, пожалуйста, что и как вы перенесли из Сизифа на ту машинку, которая уже 67 дней работает.
(В ответ на комментарий №26) > Позвольте, но версии "v2.2-alt0.M60P.2" и "v2.2-alt3" отличаются только > адаптацией к systemd, а она не нужна в p6. Ну плюс ещё сизифная версия собрана > более новым gambit, но это вряд ли принципиально. Расскажите, пожалуйста, что и > как вы перенесли из Сизифа на ту машинку, которая уже 67 дней работает. Сервер, раздающий интернет. Проблема: постоянно падает squidmill, не работает статистика. Решение: В репозитории прописываю sisyphus, устанавливаю оттуда squidmill alterator-squidmill gambit-4.6.3-alt1 gambit-sqlite3-1.2-alt1 Все начинает работать отлично.
(В ответ на комментарий №25) > Хорошо, сейчас отправлю в p6. > > А с "левыми" адресами нужно разобраться: вы утверждаете, что в > /var/log/squid/access.log таких адресов нет, а в squidmill они есть? Верное замечание, сейчас детально смотрю логи - там есть упоминания об этих адресах. Теперь надо понять как они там оказались.
Ну так как на счет обновления библиотек в репозитариях?
(В ответ на комментарий №29) > Ну так как на счет обновления библиотек в репозитариях? Тестирую.
Так как gambit собирается бустрапом, с каждой предыдущей версии, собрать быстро не получится.
squidmill 2.4
(В ответ на комментарий №29) > Ну так как на счет обновления библиотек в репозитариях? Пакет отправлен в p6 и p7. Во время тестирования выяснилось, что в случае запуска и сразу же остановки службы squidmill: # service squidmill status squidmill is dead, but subsystem is locked нужно удалить файл с базой данных: rm -f /var/log/squid/squidmill.db (при этом старые данные статистики будут утеряны!). Обычно это не критично.