2016-01-07 3 views
2

Я пытаюсь отладить проблему производительности в моем приложении Laravel PHP. У меня есть Blackfire и JMeter, установленные на Debian 7 в стеке Apache/Postgres/PHP5-FPM/Redis.Blackfire мгновенно терпит неудачу, когда у меня работает JMeter

Если я запускаю Blackfire нормально, я получаю именно то, что хочу.

# blackfire --samples 5 curl http://larachan.foo 
Profiling: [########################################] 5/5 
Blackfire cURL completed 
Profile URL: https://blackfire.io/profiles/xxx/graph 

Wall Time  263ms 
CPU Time  190ms 
I/O Time  72.7ms 
Memory  8.74MB 
Network   n/a  n/a  - 
SQL    n/a  - 

У меня очень, очень простой тест JMeter, который загружает мою страницу приложения столько раз, сколько может. Я могу увидеть ухудшение производительности при запуске теста. Вот пользовательский интерфейс для Java-апплета.

JMeter Test Plan UI

Очень просто.

Итак, если я запустил Blackfire с этим тестом, я получаю сообщение об ошибке.

# blackfire --samples 5 curl http://larachan.foo 
Profiling: [#########        ] 2/5 
Are you authorized to profile this page? No probe response, missing PHP extension or invalid signature for relaying agent. 

Это нехорошо. В журнале агентов Blackfire есть очень короткое, бесполезное сообщение.

[2016-01-07T17:49:22-05:00] ERROR: Error while writing to probe: write unix @: broken pipe 
[2016-01-07T17:49:22-05:00] ERROR: Profile data is truncated. Please check https://blackfire.io/doc/troubleshooting#trouble-no-response 

Обзор этой документации не содержит информации об использовании.

Я указал в своем файле конфигурации PHP-FPM для Blackfire на таймаут через 30 секунд. Я также просил его помещать связанные с PHP ошибки в конкретный файл журнала, но это никогда не появляется.

Я могу очень точно воспроизвести эту проблему даже в середине теста. Если я активирую JMeter в любой момент в течение 10 выборочных тестов (даже если это 1 тест от завершения), он выйдет с тем же сообщением об ошибке.

Кто-нибудь знает, почему это может случиться?

+0

Вы в основном DDOSing ответ. Похоже, что Blackfire зависит от того, как сайт функционирует, и ваш DDOS предотвращает его запросы от всех проходов. – ceejayoz

+0

@ceejayoz Я могу загрузить документ в порядке, это займет всего секунду. Значительно ниже порога ожидания Blackfire. – Josh

+0

Ваш тест нагрузки является непрерывным, и хотя вы можете ударить приложение со страницы, похоже, что blackfire должен поговорить с его «агентом». Тем не менее, согласился, что это не очень хорошо, и ошибка должна быть ясной или работающей в PHP, не должна вызывать эту проблему. Вопрос: Ваш процессор привязан? Есть ли у вас графики на сервере? –

ответ

1

С таким планом Jmeter вы собираетесь выпустить 8 одновременных запросов, без паузы между ними: как сказал ceejayoz, это своего рода DOS.

В этих условиях, исходя из ошибок, которые вы получаете, зонд кажется недостаточно отзывчивым.

Я бы начал с добавления контроллера пропускной способности, настроив 1 запрос/секунду/поток (или аналогичное значение). Затем вы можете запустить проверку с помощью одного потока. Если он работает, вы можете увеличить количество потоков и посмотреть, где начинаются проблемы.

Я мало знаю о Blackfire, но, похоже, больше ориентирован на проверку производительности страницы, а не на загрузку.