2012-05-15 2 views
3

Я выполняю тесты производительности для моей магистерской диссертации, и я получаю очень низкую производительность простого приложения Symfony2. Это простое приложение, один запрос и математика.Плохое качество

Результаты испытаний команды:

аб С10 -t60 http://sf2.cities.localhost/app.php

Server Software:  Apache/2.2.20 
Server Hostname:  sf2.cities.localhost 
Server Port:   80 

Document Path:   /app.php 
Document Length:  2035 bytes 

Concurrency Level:  10 
Time taken for tests: 60.162 seconds 
Complete requests:  217 
Failed requests:  68 
    (Connect: 0, Receive: 0, Length: 68, Exceptions: 0) 
Write errors:   0 
Non-2xx responses:  68 
Total transferred:  393876 bytes 
HTML transferred:  321102 bytes 
Requests per second: 3.61 [#/sec] (mean) 
Time per request:  2772.458 [ms] (mean) 
Time per request:  277.246 [ms] (mean, across all concurrent requests) 
Transfer rate:   6.39 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 0 2.1  0  11 
Processing: 230 2641 2493.1 1778 17146 
Waiting:  230 2641 2493.1 1778 17146 
Total:  230 2642 2492.9 1778 17146 

Перед испытанием я запустил две команды:

PHP приложение/консоль --env = prod cache: clear php app/console --env = prod cache: warmup

Страница проверки Symfony сообщает мне, что у меня нет внутреннего расширения, поэтому apc, вероятно, в порядке.

Мой PHP версия:

PHP 5.3.6-13ubuntu3.6 с Suhosin-Patch

Может кто-нибудь дать мне совет о том, что еще я должен проверить в моем окр?

+0

Вы должны смотреть на/после "Соединительные Times". Там вы можете видеть, какая часть занимает больше всего времени. – Darcara

+0

это функция ab? – keram

+0

Да, весь вывод должен выглядеть как [this] (http://imgur.com/Fwek5) – Darcara

ответ

5

Это может быть любое количество вещей, в том числе, что ваш компьютер просто не может справиться с нагрузкой. Я могу дать вам несколько указателей, где можно посмотреть.

Вы получаете ошибки, возвращаемые Failed requests: 68. Посмотрите в лог-файлы apache, они могут указать на проблему. Если вы ничего не обнаружили в них, убедитесь, что ведение журнала включено, и в вашем конфигурационном файле установлен правильный уровень журнала. Ваше VirtualHost определение должно содержать что-то вроде

LogLevel debug 
CustomLog /var/log/apache2/access-localhost.log vhost_combined 
ErrorLog /var/log/apache2/error-localhost.log 

Используйте LogLevel debug только для отладки. Вы хотите установить его на warn или error для производства.

Включите ведение журнала ошибок в php.ini и ваши скрипты и проверьте свой журнал ошибок php на наличие проблем.

Убедитесь, что ваш apache2.conf настроен правильно, особенно модуль mpm. Вот стандартная, хотя и далеко от идеальной конфигурации:

<IfModule mpm_prefork_module> 
    StartServers   5 
    MinSpareServers  5 
    MaxSpareServers  10 
    MaxClients   150 
    MaxRequestsPerChild 0 
</IfModule> 

<IfModule mpm_worker_module> 
    StartServers   2 
    MaxClients   150 
    MinSpareThreads  25 
    MaxSpareThreads  75 
    ThreadsPerChild  25 
    MaxRequestsPerChild 0 
</IfModule> 

Убедитесь, что у вас достаточно оперативной памяти для этого, вам потребуется около 1 Гб для apache2 только (по крайней мере под Linux)

Вы также можете попробовать чтобы проверить производительность на небольшом статическом текстовом файле (около 2 кб) и посмотреть, как выглядит эта производительность. После этого проверьте на простой <? php echo 'Hello World!' ?>, чтобы увидеть влияние PHP-интерпретатора на производительность. Оба теста должны дать вам представление о том, что ваш apache способен с текущей конфигурацией. Если производительность в обоих тестах приемлема, ваше приложение работает медленно.

Еще одна вещь, которую нужно попробовать - отключить параллелизм в своем тесте и посмотреть, помогает ли это. Это указывает на проблемы параллелизма в доступе к вашему приложению или базе данных.

ab -c1 -t60 http://sf2.cities.localhost/app.php 

Если он по-прежнему медленно, Google apache performance tuning и (если вы используете MySQL в качестве базы данных) mysql performance tuning

+0

Спасибо, отличный ответ. – keram

Смежные вопросы