Recommend this page to a friend! |
Classes of Rodrigo Faustino | PHP Performance Tuning of a Web Application | readme.md | Download |
|
DownloadProjeto MegaO Projeto Mega é uma aplicação PHP destinada a gerenciar inserções de dados numéricos em um banco de dados MySQL de forma eficiente e performática. Recursos
Inicialização do ProjetoPara começar a usar o Projeto Mega, você precisa ter o Composer instalado. Se você ainda não tem o Composer, visite Get Composer para instruções de instalação. Uma vez que o Composer esteja instalado, clone o repositório e instale as dependências:
Xdebug e ProfilingO profiling do Xdebug está configurado para nos ajudar a entender o desempenho da aplicação. Para habilitar o profiling, adicione o parâmetro ?XDEBUG_PROFILE às suas requisições ou configure o php.ini para profiling automático. Os relatórios de perfil podem ser analisados usando ferramentas como QCacheGrind ou KCacheGrind. Trecho do PHP.INI
Otimização do AutoloadExecutamos o comando composer dump-autoload -o para gerar um mapa de classes otimizado, o que reduz o tempo de carregamento de classes em cada requisição. Melhoria na Conexão do Banco de DadosPara reduzir a latência associada às operações de banco de dados, configuramos nossas conexões PDO para usar o modo persistente, o que permite a reutilização de conexões entre as requisições. Análise de PerformanceRegularmente avaliamos a performance da aplicação, utilizando tanto o profiling do Xdebug quanto benchmarks e ferramentas de monitoramento. Isso nos permite fazer ajustes proativos e manter o sistema rodando de forma suave e eficiente. <p align="center"><p>Antes</p> <img src="img/antes.png" alt="Antes das Otimizações" width="85%"/> <p>Depois</p> <img src="img/depois.png" alt="Após as Otimizações" width="85%"/> </p> TestagemCenário de TestePara avaliar o desempenho e a robustez do servidor, foi conduzido um teste de carga que consistiu em realizar 1.000 requisições POST ao servidor rodando localmente. O objetivo era simular um cenário realista onde dois servidores distintos, rodando em portas diferentes, gerenciam cargas de trabalho simultaneamente. MetodologiaO teste foi estruturado para gerar 6 números aleatórios por requisição, representando dados que seriam inseridos na base de dados via API REST. Para isso, foi utilizado um script de teste de carga baseado em HTML/JavaScript. O script executava as requisições de forma assíncrona e registrava o progresso em tempo real. Script de Teste de CargaAqui está o script HTML utilizado para o teste de carga:
Banco de DadosPara armazenamento e gerenciamento de dados, utilizamos o MySQL devido à sua robustez e eficiência em ambientes de produção. O MySQL serve como a espinha dorsal do nosso sistema de armazenamento, lidando com operações de inserção de dados em alta velocidade e garantindo a integridade e recuperação dos dados. Tabela
|