Ответы пользователя по тегу Docker
  • Как избавиться от ошибки с кодировкой при создании контейнера?

    @hx510b
    "Я знаю, что ничего не знаю"
    Попробуйте добавить в конфиг файл mysql, например так:
    [mysqld]
    init_connect='SET collation_connection = utf8mb4_unicode_ci'
    collation-server=utf8mb4_unicode_ci

    Чтобы прокинуть конфиг во внутрь docker образа используйте опцию -v
    -v /local/path/to/hosts/config/collation.conf:/etc/my.cnf.d/collation.conf
    Ответ написан
    Комментировать
  • Где целесообразно использовать LXC/LXD?

    @hx510b
    "Я знаю, что ничего не знаю"
    LXC удобно использовать для отвязки от ОС хоста, как современный аналог OpenVZ (OpenVZ устарел, т.к. не поддерживается новыми ядрами и дистрибутивами). Мы использовали LXC для виртуализации Linux сервисов. LXC значительно эффективнее расходует ресурсы, чем KVM.
    LXC внутри больше похож на виртуальную машину, чем Docker. В LXC почти все привычные инструменты работают как обычно. Но изолированно от хост системы. Можно ставить пакеты, менять настройки etc, запускать демоны и использовать стандартные инструменты Linux среды и т.д. Для LXC можно подтянуть специфичные для дистрибутивов шаблоны. Например, на хосте с Ubuntu поднять гостя с Centos. При желании гостя можно держать на виртуальном диске.

    Еще про разницу между LXC и docker написано тут: https://vps.ua/blog/docker-and-linux-containers/
    Ответ написан
  • Почему CLOSE_WAIT зависают и вешают веб-сервер?

    @hx510b
    "Я знаю, что ничего не знаю"
    Можно донастроить TCP стек, чтобы уменьшить время удержания открытых сокетов:
    echo 5 > /proc/sys/net/ipv4/tcp_fin_timeout  # освобождать через 5 секунд
    echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle  # включить утилизацию

    Изменить параметрые nginx:
    worker_processes auto;
    - количество процессов по количеству ядер CPU или auto
    events {
           worker_connections 10000;
           multi_accept on;
    }

    - worker_connections сколько надо держать соединений на один процесс, т.е.
    worker_processes * worker_connections = сколько всего соединений надо обрабатывать.
    multi_accept on - процесс будет пытаться сразу брать все новые соединения, а не по одному.
    worker_rlimit_nofile 200000;
    - т.е. если хотим 100000 соединений, то пишем 200000

    надо изменить в системе лимит на количество открытых файлов:
    ulimit -n 1031089
    считается, что для гигабитного канала больше 50 тысяч соединений не получить.

    Еще по теме:
    https://habr.com/post/198982/ - Ускоряем Nginx за 5 минут
    https://romantelychko.com/blog/1300/ - Настройка Linux для высоконагруженных проектов и защиты от DDoS
    Ответ написан
    1 комментарий