Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[3]: Обновление времени доступа файлов в mysql
Здравствуйте, Денис.
>> Не надо хранить файлы в mysql. Отдавайте их с диска. А время
>> обновляйте в базе спомощью парсинга аксес-лога nginx-а.
>> В вашем варианте fastcgi приложение Вы можете хоть на асемблере
>> написать. Узким местом будет mysql, а не fastcgi приложение.
Д>>> Есть задача сделать обновление времени доступа к статике в базе mysql.
Д>>> Хочу написать на С fastcgi приложение, которое будет в отдельном
Д>>> потоке выполнять sql команду, что то вроде:
Д>>> UPDATE files SET lastVisit=UNIX_TIMESTAMP() WHERE id=?
Д>>> и немедленно отдавать файл nginx. Что бы в случае большой
Д>>> нагрузки на sql сервер статика отдавалась мгновенно. id будет браться
Д>>> из имени файла, но это дело десятое.
Д>>> Конфигурация получится что то вроде:
Д>>> location /files/ {
Д>>> fastcgi_pass localhost:9000;
Д>>> }
Д>>> Вопросы следующие.
Д>>> 1. Можно ли в эту секцию добавить директиву "expires 1d". Чтобы статика
Д>>> кэшировалась на клиентах и была нагрузка поменьше.
Д>>> 2. Как сделать, чтобы в случае отказа fastcgi сервера файлы брались из
Д>>> локальной директории, ну например: /home/www/files.
Д>>> 3. Решал ли кто-нибудь подобную задачу другими методами?
Д> Была такая мысль. Но уже сейчас аккесс логи набигают за час в сотни мегабайт.
Д> А если размеры будут в гигабайтах, сможет ли парсер делать такое
Д> количество апдейтов в базе данных за приемлемое время?
Д> Или лучше варианта не придумать?
Если не сможет парсер, то не сможет и fastcgi приложение.
Возможные выходы: логи можно парсить параллельно, записывая отдельный
лог для каждого локейшна или сервера; Делать апдейты можно не в одну,
а в несколько таблиц (в случае с MyISAM это избавить от блокировок),
можно писать не в одну, а в несколько демонов mysql, запущенных на
разных серверах; и что приятно - парсинг можно временно отключать и
ничего не потеряется - всё останется в логах.
P.S.
Возможно в Вашей схеме mysql и не нужен? Может посмотреть на
memcachrdb?
--
С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
|