ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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/
Без бэкапа по жизни.




 




Copyright © Lexa Software, 1996-2009.