Estou tentando carregar o teste de um aplicativo LAMP que minha equipe desenvolveu e implantou no AWS Ubuntu 14.04 usando jmeter. Estamos usando o AWS CDN para fornecer arquivos estáticos, o mysql e o apache estão no mesmo host.
Quando há apenas um usuário fazendo coisas, o tempo de resposta é normal, entre 2 e 5 segundos, dependendo da página.
Meu objetivo é fazer com que ele responda com o mesmo tempo a 100 usuários conectados fazendo coisas ao mesmo tempo.
Eu usei uma instância AWS T2.MEDIUM ( 2 vCPU + 4GB RAM ) e comecei com mod_php e prefork módulo, mas eu não estava satisfeito em tudo. o servidor foi ridiculamente lento. O tempo de resposta foi + 20s com CPU alta e uso de RAM .
Eu tentei com o php-fpm e o módulo de evento depois de alguns recursos do SO. O uso de RAM é melhor agora, mas a CPU usada pelo processo php-fpm é muito alta. (Eu tentei com static / ondemand / dynamic sem resultado)
Aqui está minha configuração usando configuração dinâmica com módulo de evento para atender 100 usuários simultâneos na instância aws t2.medium ( 2 vCPU + 4GB RAM ) - O uso da CPU PHP-FPM é muito alto:
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>
Eu sinto que estou tão perto, mas não consigo. Vou atualizar minha pergunta com qualquer arquivo, log ou saída que você pedir. POR FAVOR, isso é muito crítico e eu ficaria muito grato a você. Muito obrigado
==================================== ATUALIZAÇÃO: 1
Olhando para o log de erros do php, posso ver toneladas de erros fatais do PHP:
call to a member function xxxxx() on a non-object
O erro fatal do PHP pode causar alta CPU? (Pode ser escrito por vários processos consome ciclos mais cpu)