• Как сделать автоматическую проверку работоспособности и рестарт Apache и Mariadb в случае падения?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    monit посмотрите
    Ответ написан
    Комментировать
  • Как управлять по сети загрузкой ОС?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Стандартно - никак, можно найти разработчика, который сможет дописать нужные функции в код grub, если это возможно.
    Либо Linux грузить по умолчанию, добавив скрипт в автозапуск в Linux, который при запуске проверит и если нужно загрузиться в Windows, перезагрузится в Windows
    Ответ написан
    2 комментария
  • Настройка конфига pam_sqlite?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Установить pam_sqlite, создать БД, добавить в /etc/pam.d/login что-нибудь типа:
    session required pam_sqlite.so /path/to/sqlite.db
    Ответ написан
    1 комментарий
  • Как запитать sata ssd диск на плате промышленного компьютера ASEM BM3400?

    @pfg21
    ex-турист
    взять от блока питания +12в и +5в и завести в сата-разъем питания ??
    Ответ написан
    Комментировать
  • Как раздать интернет по Dial-up?

    ValdikSS
    @ValdikSS
    Самый простой вариант — настроить приём входящих соединений, задать фиксированные IP-адреса на обеих сторонах, установить прокси-сервер на машине, принимающей соединения, и прописать адрес прокси на подключающейся машине.

    Здесь про создание подключения. Работает в Windows 10.
    unlockforus.blogspot.com/2010/03/how-to-accept-inc...

    Если разберётесь с DHCP, RAS и NAT в Windows, то настройте их. Если нет, то любой прокси-сервер.
    Ответ написан
    1 комментарий
  • Почему Windows 10 не запускается на ноутбуке, а с Windows 7 проблем нет?

    PC_Psycho
    @PC_Psycho
    Windows, Python, PC Hard & Soft
    Здравствуйте! Ваш БИОС имеет legacy mode, соответственно флешку, на которую пишется образ Win10 надо форматировать с загрузчиком legacy, без UEFI или UEFI + legacy. Когда устанавливается Windows, то в окне выбора диска, на который нужно ее установить надо удалить все, что там есть и на нераспределенном пространстве создать новый раздел. Так, программа установки автоматически создаст системные разделы, отвечающие за загрузку ОС и ее восстановление. Win10 все же не будет грузится в полноценном legacy mode, а в режиме его эмуляции под UEFI.

    Здесь можно поставить галочку "исправление для старых БИОС", если флешку не будет видно в boot menu.
    rufus
    65fa11cfa085d383316742.png
    Ответ написан
    1 комментарий
  • Как правильно выбрать железо для домашнего сервера?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Mini ITX со встроенным 4-х ядерным процессором, слотом M2 и полноформатными или ноутбучными слотами памяти - смотря какая завалялась пара плашек памяти в наличии. Маленький, но качественный БП (например FSP) и любой корпус. Ну и любой ССД под систему - М2 или сата тоже пойдет. Диски под хранилище чего-либо - тут уже по желанию и возможностям.
    Например: https://www.onlinetrade.ru/catalogue/materinskie_p...

    UPD: только что вышел обзор мини-пк от 3Dnews: https://3dnews.ru/1100970/kompyuter-mesyatsa-pokup...
    Ответ написан
    4 комментария
  • Домашний сервер Proxmox контейнеры LXC или VM?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Улучшит отказ от Proxmox и переход на Linux на сервере и перевод всего софта в Docker.
    LXC контейнеры также как и ВМ бронируют определенные ресурсы хоста, но не факт, что полностью их используют/или им в какой-то момент их не хватает.
    Ответ написан
    4 комментария
  • Как массово удалить файлы в определенных папках?

    @xibir
    find /yourpath -type d -path '*/site1.ru/core/cache' -exec rm -rf '{}' ';'
    Ответ написан
    Комментировать
  • Как установить печатную плату на металлическую пластину?

    • Пластиковая ручка с пустым пастиком. Из ручки напилить дистанционных втулок. Пастик вставить через плату и втулки, нагреть и прижать как заклепку.
    • Взять стойки от материнской платы
    • Взять термоусадку большого диаметра, запихнуть в нее плату и усадить
    • Взять толстую подложку, подложку привренуть к железяке, а платы к подложке
    • Взять любую пластиковую коробочку по размеру, положить платы в коробочку, провода вывести через стенки и бросить её на железяку
    • ... и ещё 1001 вариант, как быстро заколхозить сабж )))
    Ответ написан
    2 комментария
  • Почему нет записи о printf в секции .plt.dyn?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Но там запись о функции puts, а не printf.

    Это уже оптимизация компилятора. Возможно ты не передаешь printf никаких аргументов и он решил, что проще вызвать puts.
    Такое поведение уже было описано вот тут:
    The C compiler gcc likes to use its knowledge of builtin functions to manipulate code. The version of gcc in NetBSD 4.0.1/macppc will simplify the printf statement to puts("Greeting, Earth!"); so the main function effectively calls puts(3) once and then returns 0.
    Ответ написан
    1 комментарий
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Как уже заметили коллеги - первое что нужно выяснить - что тормозит.

    Спойлер: 90% что проблема в запросах к бд, так как сам по себе код в большинстве случаев банально отсылает запросы и принимает их результат, выводя его пользователю в несложных действиях. В редких случаях - запросы идут к внешним тормозящим сервисам, например к фейсбуку или другим СС. И крайне редко тормозит сам код, но тут уже опять же - 90% что это некомпетентность разраба, например, не способного построить нормальный запрос и сортирующий данные от бд в коде...

    Что конкретно надо делать:
    1) Взять за шкирку самого разбирающегося в коде (если таковой существует в проекте), и дать задание описать базовый стек вызовов, если это какой-то самопис, или сразу расставить код замера времени с метками в случае понятной архитектуры. Что то типа такого(класс - древний костыль, но работает, так что матом не ругаться):
    Class Timer.php:
    class Timer {
    
        static $start;
        static $end;
        static $marks = [];
        static $formats = [1=>''];
    
        static function init(){
            if(empty(self::$start)) self::$start = microtime(true);
        }
    
        static function setMark($markName = ''){
            $time = microtime(true);
            if($markName == '')$markName = $time;
            $data['name'] = $markName;
            $data['time'] = $time;
            $res['time'] = $time;
            if(count(self::$marks) > 1)$res['diff'] = $time - self::$marks[count(self::$marks)-2]['time'];
            else $res['diff'] = 0;
            $data['diff'] = $res['diff'];
            self::$marks[] = $data;
            return $res;
        }
    
        static function timeFormat($number,$format = ''){
            if(empty($format)) $format = 3;
            return number_format ($number,$format,'.','');
        }
    
        static function report(){
            self::$end = microtime(true);
            self::$marks['start'] = self::$start;
            self::$marks['end'] = self::$end;
            self::$marks['all_time'] =  self::$end - self::$start;
            if(!empty(self::$marks)) return self::$marks;
        }
    }


    In code:
    \Timer::init()
    //some code block 1
    \Timer::setMark('after block 1');
    //some code block 2
    \Timer::setMark('after block 2');
    ...
    //some code block n
    \Timer::setMark('after block n');
    //near end of code 
    \Timer::setMark('end');
    var_dump(\Timer::report());
    exit;

    2) Смотрите на блоки жрущие время, делите их до атомарных операций путем деления блоков пополам таймерами.
    3) Смотрите что там происходит - оптимизируете*. И так по кругу.
    4) Профит.

    * Оптимизация
    Запросы:
    1) Смотреть план запроса (use explain, Luke!).
    2) Расставить индексы которых явно не хватает
    3) Смотреть не вызывается ли 50 запросов в цикле? Если да - выписать пенделя писавшему, затем переписать в 1 запрос с нормальным джоином.

    Код:
    Иногда запрос сложно оптимизировать, он вытаскивает много данных, хотя эти данные не часто обновляются. Такие запросы нужно кешировать, для чего используют быстрые ин-мемори хранилища типа редис или мемкеш. В крайнем случае в файлах...
    Чаще всего код тормозит на регулярках, хотя "хороший" программист может придумать и более креативные способы погреть процессор.

    Что нужно сделать обязательно кроме тестов и как тогда лучше спрашивать с разработчиков, если они предлагают размытые предложения? Хочется понять в какую сторону копать
    Бить палкой не вариант? Тогда берите других, эти испортились. Если разработчик не знает как выявить узкие места кода - нахрена он нужен? Код написать сегодня любой чат может... Ну, на крайняк дайте им вышеприведенный вариант решения проблемы...

    PS: Кстати, сервер может банально не выдерживать наплыв сетевых соединений, пните адимна, пусть глянет логи.

    PPS:
    достаточно 2000-4000 человек, заходящих в течение 20 минут на сайт
    это равномерные 3-4 рпс, ну или пусть в пике 50 рпс, должно держать даже на несложной конфигурации... Копайте код.
    Ответ написан
    Комментировать
  • Как по ВПН соединить две сети с одинаковым поддиапазоном 192.168.0.1/24?

    @asmelnik
    Классика говорит, что НЕТ!
    Сети НЕ ДОЛЖНЫ ПЕРЕСЕКАТЬСЯ!

    "Костыли" при определенных условиях возможны, вроде proxy arp, проброса портов и.т.д.
    Но они имеют свои ограничения и условия применимости.

    Самое правильное одну из сетей перекинуть в другой диапазон, например
    192.168.1-255.0/24
    Если так уж принципиально 192.168.0.xxx
    Можно одну сеть сделать
    192.168.0.0/25 (адреса 1-126)
    вторую
    192.168.0.128/25 (адреса 129-254)
    Если в каждой сети менее 120-ти хостов,
    и маршруты 192.168.0.0/24 указать в VPN.

    Учитывая отсутствие возможности изменения второй сети и жесткое условие сохранения адрессации -- нормального решения НЕТ!
    Узел 192.168.0.12 в сети 1 НИКОГДА не сможет связаться (по IP) с узлом 192.168.0.12 в другой сети.
    Вот СОВСЕМ!
    (Проброс портов не считаем, это несколько иное условие).
    Ответ написан
    8 комментариев
  • Как поставить debian 12 на SataRaid?

    @Drno
    Конечно зло. возпользуйтесь лучше mdadm...
    Ответ написан
    Комментировать
  • Как создать сборку для быстрого развертывания сервера с WP?

    @Drno
    Сделайте lxc контейнер и его разворачивайте. 1 раз собрали внутри него, и копируйте на новые сервера

    Ну либо докер...
    Ответ написан
    2 комментария
  • MacBook Pro 15 2012 Retina нужно ли обмениваться?

    @Drno
    нет конечно. это еще более усоссаный ноут, чем Ваш

    вариант стоит рассматривать только более новый

    Цикл жизни маков - порядка 5ти лет...
    Ответ написан
    Комментировать
  • Как правильно обрабатывать SQLException?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Скорее всего коды SQL ошибок зависят от DBMS. Например я по старой памяти помню что если
    в коде вы видите ORA-00001 то вы скорее всего используете Oracle и ваша ошибка
    связана с нарушением Primary KEY во время INSERT/UPDATE.

    Другие DBMS (Postgres/MySQL) будут иметь другие коды ошибок.
    Ответ написан
    3 комментария
  • Какая утилита подобна wget, но умеет делать upload дерева файлов по https?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    прикол в том, что http в принципе не знает что такое файловая система, поэтому нужно писать скрипт, который оббежит ваши каталоги и зааплоадит файлы по одному.
    Либо архивировать каталог и заливать уже архив со всем внутри, как это делают
    Ответ написан
    Комментировать
  • Почему система падает при большом трафике?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Описание проблемы проще чем кажется: чем больше трафика - тем больше работы.
    Это влечет за собой:
    - Больший нагрев процессора и других комплектующих + повышение их износа -> могут отвалиться
    - В каждом софте (даже стабильной ОС) есть ошибки, которые точно возникнут согласно ЗБЧ
    - Появляется слишком много прерываний, которые тормозят систему -> большие операционные издержки (переключение контекста, переход в режим ядра и т.д.)
    - Рано или поздно доступные ресурсы закончатся (ОЗУ, Диск, буфер сетевой карты), а не многие приложения могут такое обработать и упадут

    Подытоживая: сбои происходят из-за того, что для обработки нагрузки требуется больше ресурсов чем есть.

    Сколько ресурсов должно быть для корректной работы при определенной нагрузке надо искать самим - тестировать систему (стресс/нагрузочное/объемное и т.д.).
    Создавать математические формулы - такое себе, т.к. слишком много важных параметров не будет учтено:
    - Топология сети
    - Используемые комплектующие
    - Охлаждение
    - Расположение серверов
    - Версия ОС + гипервизор

    UPD: + конечно же когда много трафика, то какие-то пакеты отбрасываются/теряются и необходимо слать их повторно, что увеличивает нагрузку на сеть + задержку запроса
    Ответ написан
    1 комментарий