Ответы пользователя по тегу Debian
  • Установка Linux без клавы?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Нужно изучить раздел Automated Installation в документации выбранного дистрибутива.

    Использовал Preseed для автоматической установки Debian и Ubuntu на 3000 устройств (digital signage system) - работает исправно.
    Ответ написан
    3 комментария
  • Проблемна ли инвалидация кэша в Nginx?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Только что закончил систему кэширования для высоконагруженного проекта на django + nginx, никаких проблем с инвалидацией не испытал. memcached + nginx microcaching. Принцип работы следующий:
    • nginx проверяет наличие данных в memcached с помощью memcached_pass, если нашел - возвращает;
    • django при рендеринге страницы помещает результат в memcached, при изменении - удаляет.

    В исходном виде у этой связки есть только одна проблема - обработка конкурирующих запросов. Если несколько клиентов одновременно попытаются запросить одну и ту же "непрогретую" страницу, то все запросы уйдут в бэкенд (ab -n 1000 -c 100). К счастью, nginx легко позволяет это предотвратить с помощью микрокэширования (uwsgi_cache_valid any 1s; uwsgi_cache_use_stale updating;). В бэкенд при этом уходит только самый первый запрос, параллельные получают результат из файлового кэша, последующие - из memcached. Не слишком элегантно, появляется дополнительный слой кэширования (файловый), но работает отлично. На реальных данных удалось получить ускорение в 1200 раз и неограниченную возможность масштабирования (с помощью дополнительных серверов с nginx в режиме микрокэширования между клиентом и основным сервером).
    Ответ написан
    Комментировать
  • Как лучше хранить огромное число небольших файлов?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Классический вариант - считать hash (md5, sha1, или sha256) для каждого файла при добавлении, в базе данных хранить хэш - имя фала - размер (опционально), а для записи на диск использовать следующий путь:
    ./e3/b0/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    первый уровень вложенности - первые два символа хэша в шестнадцатеричном представлении, второй уровень - третий и четвертый символ, имя файла - хэш; количество уровней вложенности можно увеличить, если файлов очень много.

    В качестве альтернативного варианта рассмотрите возможность хранения этих объектов в базе данных. Обычно это не лучшая идея, но в вашем случае такой вариант может оказаться предпочтительным. Если на каждой странице содержится множество маленьких объектов, можно уменьшить количество запросов к серверу упаковывая их все в один ajax ответ на стороне сервера (получая содержимое из базы данных), и распаковывая с помощью javascript на клиенте. В некоторых случаях это может приводить к увеличению быстродействия (необходимо проверять на реальных данных).
    Ответ написан
    4 комментария