Есть такая задача,
на веб сервер оч. много обращений (100-500 в секунду),
Веб сервер (Mod Perl) должен отдавать каждому По порядку по 200 строк из файла base.txt (10гб) каждая строка – 5-20 символов.
Пока не пройдет вся база.
Каждый раз читать базу не вариант так как не справится диск.
Сам серер работает на Apache+Mod_Perl и можно любой Perl код вставить (код получения куска базы) или если вы не на перле кодите можете обьяснить нам что надо сделать мы реализуем.
Нужно сделать систему
На ум приходят такие варианты
1. Через даемон. То есть висит процесс другой в памяти который читает базу по 10мб например и раздает по 200 строк каждому кто обратился (а обращается уже perl в апаче). Если размер закешированых данных меньше 1мб он читает новую порцию
2. Через IPC Message Queue. Perl В апаче читает пакет из IPC Message Queue, смотрит если Message Queue меньше 100 сообщений то запускает функцию апдейта. Сейчас на этой технологии все реализовано, проблема в том что иногда при апдейте почему то не апдейтит, но только при оч. больших нагрузках.
3. Через Memcached как-нибудь
4. Ваши варианты
Главное выбрать самый быстрый вариант из возможных, чтобы сервер имел наибольшую производительность.
Опубликован 25.02.2010 в 01:36