• Сколько виртуальных ядер выделять для виртуальной машины?

    grabbee
    @grabbee Автор вопроса
    Приоритет при запросе физических поток имеет виртуальная машина с большим числом vCPU, т.к. будет обращаться к гипервизору чаще, чем ВМ с меньшим числом процессоров. Так что приоритезацию процессорных ресурсов стоит рассматривать только в случае нескольких мультипроцессорых машин. При общем числе vCPU всех виртуальных машин на хосте, равном числу процессорных потоков (в том числе и получаемых с помощью Hyper-Threading) маппинг идет 1:1, т.е. на один vCPU - одно ядро. Если общее число виртуальных процессоров превышает число физических потоков - виртуальному процессору выделяется часть процессорного времени физического сокета - тут в действие как раз вступает приоретизация для каждой ВМ.
    Ответ написан
    Комментировать
  • Как устранить DNS Leak на Ubuntu клиенте?

    grabbee
    @grabbee
    Была похожая проблема на 16.04. Я использовал графический интерфейс для настройки сети WI-FI(возможно у вас провод). Там настройки IPv4 - использовать только адрес. Аналогичная опция есть и в настройках VPN

    На сервере судя по всему должны быть настройки
    # DNS servers provided by opendns.com.
    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.220.220"


    Но это не точно
    Ответ написан
    Комментировать
  • Какое правило IPTABLES мешает работе виртуалки?

    grabbee
    @grabbee Автор вопроса
    Проблема здесь
    :FORWARD DROP
    Ответ написан
    Комментировать
  • Как PATCH-ить в REST API на FOSRestBundle?

    grabbee
    @grabbee Автор вопроса
    JMS использует "default object constructor", в то время как для нормальной работы нужен Doctrine Object Constructor. Нужно добавить в сервисы
    jms_serializer.object_constructor:
        alias: jms_serializer.doctrine_object_constructor
        public: false


    Тогда будет обновляться то, что придет в теле json - его нужно конвертить по fos_rest.request_body, опционально deserializationContext
    Ответ написан
    Комментировать
  • Сплошные php. Как запустить сайт на локальном сервере?

    grabbee
    @grabbee
    Создать БД с правильным названием мало - там структуру таблиц нужно восстановить, и тестовые данные в нее сохранить. Если структуры БД нет - выкинуть и забыть.
    Ответ написан
    2 комментария
  • Как описать роутер для подпапок картинок image/ab/cd/efg/abcdefg.png?

    grabbee
    @grabbee Автор вопроса
    как в доках сделал возможным отправлять name со слэшем внутри, получается имя ab/cd/efg/abcdefg.png далее пихаю этот кусок в роутер для генерации ссылок. когда приходит запрос на этот адрес, nginx пытается отдать картинку, а если не находит, проксирует запрос к api, но вырезает структуру папок из запроса. получается image/abcdefg.png - роутер один и тотже @Route("/image/{name}")
    Ответ написан
  • Как подружить vich_uploader и liip_imagine чтобы они нашли друг друга?

    grabbee
    @grabbee Автор вопроса
    вывел наймер в свой отдельный класс. подключил его в DirectoryNamer для vich_uploader. также возможно понадобится лоадер для liip_imagine написать и включить там это же класс также. дальше его же использую для hateoas итд
    Ответ написан
    Комментировать
  • Как правильно разбить php/js проект?

    grabbee
    @grabbee Автор вопроса
    использую пока гит субмодули для всего :)
    Ответ написан
    Комментировать
  • Что устанавливается в итоге при установке ubuntu по сети?

    grabbee
    @grabbee Автор вопроса
    Загрузка "выглядит" иначе из-за различий в установленном по умолчанию grub - в серверной установке

    GRUB_DEFAULT=0
    #GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=2
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT=""
    GRUB_CMDLINE_LINUX=""


    А если по сети

    GRUB_DEFAULT=0
    GRUB_HIDDEN_TIMEOUT=2
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=10
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    GRUB_CMDLINE_LINUX=""


    Потом, я ещё не уверен, но добавил опцию установки
    preseed base-installer/install-recommends boolean false


    Сегодня поковыряю ещё...
    Ответ написан
    Комментировать
  • Как подключиться с сервера на севера по ключу, не копируя ключи на север?

    grabbee
    @grabbee Автор вопроса
    ssh-agent + ssh-add ~/.ssh/id_rsa делает проброс ключа на сервер A c которого в дальнейшем можно подключиться в серверу B,С,D. Там просто несколько муторно, думал кто знает/пользует способ попроще..
    Ответ написан
    Комментировать
  • Как посмотреть сколько дисков в RAID5?

    grabbee
    @grabbee Автор вопроса
    Дают новый сервер, со словами - тот сервер прекрасно работал, но раз вы так настаиваете, вот вам новый...

    Hello Mr,

    On our side we did not detect any issue on your server, but we allow you to change it from your console,

    You will have new server, new IP and new dedibackup space

    Regards, Jonathan


    Так что ребят, вы них*ра не понимаете! Диск sdc - он есть, его просто не видно, потому как is for the mirroring - и вы никто не шарите в структуре RAID5 ! [3/2] [UU_] - это НОРМА, то что дэвайс removed - так и должно быть. Дисков три. Мне даже написали это три раза в саппорте. И это подтверждают их тесты! Идите все торговать кортошкой!..

    was-that-sarcasm.jpg

    Получу новый сервер и отпишу что там с дисками изначально. Покручу разные RAID чтобы сделать выводы. Напишу им претензию в том, что продали дефектный сервер тогда.
    Ответ написан
  • Как найти причину невозможности загрузки сервера?

    grabbee
    @grabbee Автор вопроса
    Точная причина не понятна. Как я могу догадаться, слетел RAID(5) и были ошибки на диске втором sdb

    Ошибки чудом исправились, наверное по fsck -y /dev/md2
    Дальше восстановил RAID, сначала остановил все(0,1,2) мульти девайсы mdadm --stop /dev/md0 ...
    Затем запустил на удачу mdadm --assemble --scan --force - оно собрало мне RAID5 заново. Всё заработало, но как то стремно

    ~# more /proc/mdstat
    Personalities : [raid1] [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid10] 
    md1 : active raid5 sdb2[1] sda2[0]
          39028736 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
          
    md2 : active raid5 sdb3[1] sda3[0]
          460208128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
          bitmap: 2/2 pages [8KB], 65536KB chunk
    
    md0 : active raid1 sdb1[1] sda1[0]
          291520 blocks super 1.2 [3/2] [UU_]


    [3/2] [UU_] - очень похоже на ошибку. Саппорт сказал, что всего у меня три диска sda, sdb, sdc, но в рэйде у меня только два диска, а третий для зеркалирования. Так и не понял что он имел в виду...
    Ответ написан
    Комментировать
  • Ubuntu, KVM очень долго устанавливается виртуалка, как исправить?

    grabbee
    @grabbee Автор вопроса
    Создать предварительно диск: qemu-img create -o -f qcow2 qcow2.img 20G

    Так как virtual-manager и virt-install забивают его полностью
    Ответ написан
    Комментировать
  • Формат QCOW не работает?

    grabbee
    @grabbee Автор вопроса
    Я хз почему, но если всё делать через virtual manager, или через virt-install --disk path=/path/12.04.img,size=10,format=qcow2 - то создается диск полностью. А если так qemu-img create -o -f qcow2 qcow2.img 20G - то то, что нужно..
    Ответ написан
    Комментировать
  • Деплой PHP сайта из нескольких GIT-репозиториев, как?

    grabbee
    @grabbee Автор вопроса
    git-submodule - нужно обязательно выделить код в отдельную папку, а затем перенести в новый репозиторий, после чего подшаманить вместо той папки, содержание нового репозитория. Правильно?

    А как быть, если код смешан, и часть его публична, другая нет. Например, в одной папке находятся как публичные модели так и ещё не опубликованные?
    Ответ написан
    Комментировать
  • Как установить свойство Entity в Symfony2 которое является результатом работы сервиса?

    grabbee
    @grabbee Автор вопроса
    Добавил слушатель событий как сервис через таги, чтобы внедрить в листенер свой сконфигурированный сервис по описанию для доктрины
    doctrine/event_listeners_subscribers затем чуть чуть из
    service_container#tags

    In Doctrine 2.4, a feature called Entity Listeners was introduced. It is a lifecycle listener class used for an entity. You can read about it in the Doctrine Documentation.


    Там описана необходимая аннотация [/** @Entity @EntityListeners({"UserListener"}) */] был кусок кода, но не было описана реализация внедрения зависимости:
    <?php
    // User.php
    
    /** @Entity @EntityListeners({"UserListener"}) */
    class User
    {
        // ....
    }
    
    // UserListener.php
    class UserListener
    {
        public function __construct(MyService $service)  <<<
        {
            $this->service = $service;
        }
    
        public function preUpdate(User $user, PreUpdateEventArgs $event)
        {
            $this->service->doSomething($user);
        }
    }
    
    // register a entity listener.
    $listener = $container->get('user_listener');
    $em->getConfiguration()->getEntityListenerResolver()->register($listener);


    Итого:
    1. Указать аннотацию ссылающуюся на класс слушателя событий
    2. Создать класс слушателя и описать логику необходимую для установки свойств сущности задействуя внешние сервисы
    3. Внедрить эти сервисы как аргументы слушателя в конструктор класса
    4. С помощью тега name: doctrine.orm.entity_listener зарегистрировать слушатель/сервис

    Застрелите меня((
    Ответ написан
    1 комментарий
  • Symfony API Swagger NelmioApiDocBundle - как включить возможность работы с запросами?

    grabbee
    @grabbee Автор вопроса
    Ссори. Получилось что вид демо версии Swagger-UI и того, что выдает NelmioApiDocBundle сильно отличается в плане работы с api - это всё они вынесли в отдельную вкладку Sandbox рядом со словом Documentation :)
    Ответ написан
    Комментировать
  • Как отсортировать запрос по двум полям (mysql)?

    grabbee
    @grabbee
    некропост: order by calldate, sequence - результат будет тот же, у вас calldate по факту уникально. А сортировка по второму полю будет работать только на дублях по первому. То есть, при одинаковых calldate (до секунд) вы получите сортировку по обоим полям, но в вашем случае - только по calldate - поскольку оно почти уникально.
    Ответ написан
    Комментировать