Symfony 3 — Производительность прослушивателя брандмауэра при входе в систему

Ответил на свой вопрос и разместил его здесь для ссылки на других.


Настраивать

Мое приложение очень быстро из коробки работает:

  • Symfony 3 с Doctrine2
  • PHP 5.6.* с CGI/FastCGI в качестве обработчика PHP (даже не php 7)
  • mySQL 5.6.*

Затем он оптимизируется с помощью:

  • Zend OpCache чтобы ускорить выполнение PHP за счет кэширования кода операции и оптимизации
  • Memcached для хранения user sessions в memcached
  • Memcached в качестве metadata cache driver и query cache driver для doctrine 2

Узкое место

Однако один маршрут очень медленный, и это маршрут fos_user_security_check, когда я аутентифицируюсь через форму входа.

Debug Profile Symfony3 Он показывает Symfony\Bundle\SecurityBundle\EventListener\FirewallListener как виновника - хотя я не уверен, почему это так, потому что этот маршрут быстро загорается на моем локальном компьютере, но не на моем рабочем компьютере.

Вещи, которые я пробовал

  • [x] Использовать Memcached для кэширования сессий PHP -> без разницы
  • [x] Использовать Memcached для кэширования материала Doctrine -> без разницы
  • [x] Для запуска mysql с skip-name-resolve -> без разницы

Связанные сообщения, которые я видел


person Mick    schedule 21.10.2017    source источник


Ответы (1)


Два слова!! «Алгоритм шифрования».

There is a compromise between 'speed' and 'security'.

См. Использование pbkdf2 Безопасность и скорость кодировщика.


Пример, показывающий, как 2 разных шифрования могут повлиять на скорость.

Конфигурация A:

# Login in 3.5s in my case
security:
    FOS\UserBundle\Model\UserInterface:

        # . Use `bcrypt` algorithm
        algorithm: bcrypt
        cost: 13

Конфигурация B:

# Login in 400ms in my case
security:
    FOS\UserBundle\Model\UserInterface:
    # . Use `pdkdf2` algorithm
    algorithm:            pbkdf2
    hash_algorithm:       sha512
    encode_as_base64:     true
    iterations:           1000
    key_length:           40

Обратите внимание: вам придется заново создать пользователя в базе данных, чтобы протестировать различные механизмы шифрования.


Это объясняет:

... this route lights up quickly on my local machine but doesn't on my production machine. 
  • Моя локальная машина имеет Intel Core i7-7820HQ @ 2.90GHz
  • Моя производственная машина имеет Intel Xeon E5-2620 v2 @ 2.10GHz

введите здесь описание изображения

person Mick    schedule 21.10.2017