Я пытаюсь загрузить тест Применение LAMP что моя команда разработала и развернула на AWS ubuntu 14.04 с использованием jmeter. Мы используем AWS CDN для обслуживания статических файлов, mysql и Apache находятся на одном хосте.
Когда что-то делает только один пользователь, время отклика нормальное, от 2 до 5 секунд в зависимости от страницы.
Моя цель - заставить его в то же время отреагировать на 100 подключенные пользователи делают что-то одновременно.
Я использовал AWS T2.MEDIUM пример ( 2 виртуальных процессора + 4 ГБ ОЗУ ) и начал с mod_php и Prefork модуль, но меня это совсем не устроило. сервер был до смешного медленным. Время ответа было +20 с с участием высокий процессор и Использование RAM.
Я пробовал с php-fpm и модуль событий после прохождения некоторых ресурсов SO. ОЗУ использование теперь лучше, но ЦПУ использован php-fpm процесс слишком высок. (Я пробовал использовать static / ondemand / dynamic без результата)
Вот моя конфигурация с использованием динамической конфигурации с модулем событий для обслуживания 100 одновременных пользователей на aws t2.medium пример ( 2 виртуальных процессора + 4 ГБ ОЗУ ) - PHP-FPM Загрузка процессора очень высока:
top - 17:21:41 up 1:58, 1 user, load average: 5.52, 3.83, 1.86
Tasks: 128 total, 6 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 97.0 us, 2.7 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.2 si, 0.2 st
KiB Mem: 4046848 total, 2170544 used, 1876304 free, 104788 buffers
KiB Swap: 0 total, 0 used, 0 free. 1107856 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14285 www-data 20 0 603996 192688 25096 R 52.3 4.8 2:19.28 php5-fpm
14300 www-data 20 0 814276 402980 29224 R 36.6 10.0 2:25.77 php5-fpm
14318 www-data 20 0 448444 40480 25800 R 34.3 1.0 2:03.65 php5-fpm
14384 www-data 20 0 455808 48472 25860 R 34.3 1.2 2:06.95 php5-fpm
15022 www-data 20 0 447488 38748 24644 R 31.6 1.0 1:25.14 php5-fpm
16309 perf 20 0 321248 39296 9632 S 5.0 1.0 0:00.15 php5
1106 mysql 20 0 1129640 148232 7548 S 1.7 3.7 0:38.17 mysqld
/etc/php5/fpm/php-fpm.conf
[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
include=/etc/php5/fpm/pool.d/*.conf
/etc/php5/fpm/pool.d/www.conf
[www]
pm.status_path = /status
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 100
pm.start_servers = 5
pm.min_spare_servers = 4
pm.max_spare_servers = 6
pm.max_requests =0
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
chdir = /
/etc/apache2/mods-enabled/mpm_event.conf
<IfModule mpm_event_module>
ServerLimit 10
StartServers 5
MinSpareThreads 5
MaxSpareThreads 15
ThreadLimit 50
ThreadsPerChild 10
MaxRequestWorkers 100
MaxConnectionsPerChild 0
</IfModule>
Я чувствую себя так близко, но не могу. Я дополню свой вопрос любым файлом, журналом или выводом, который вы попросите. ПОЖАЛУЙСТА, это очень критично, и я был бы вам очень признателен. большое спасибо
==================================== ОБНОВЛЕНИЕ: 1
Глядя на журнал ошибок php, я вижу множество фатальных ошибок PHP:
call to a member function xxxxx() on a non-object
Может ли фатальная ошибка PHP вызвать высокий уровень ЦП? (Может быть записано несколькими процессами, потребляет больше циклов процессора)