Ticket #432 (closed melhoria: fixed)

Opened 11 years ago

Last modified 9 years ago

Otimização de desempenho na leitura de caixas postais grandes

Reported by: amuller Owned by: amuller
Priority: média Milestone:
Component: ExpressoMail Version: trunk
Severity: Keywords: desempenho caixas grandes
Cc: WorkGroup:

Description

Duas otimizações foram colocadas para teste

  • A função get_range_msg que busca a mensagem da caixa, passa a buscar somente um offset de mensagens quando esta for do tipo "Todas" pela ordenação de chegada (caso mais comum)
  • Colocar requisições da inicialização do expressoMail em paralelo.

Os tempos de inicialização do expressoMail com estas otimizações estão abaixo:

Otimizado:

Caixa pequena 600 msgs

Média 3,6 s

Caixa grande 9 mil msgs

Média 2,7 s

Não otimizado

Caixa pequena 600 msgs

Média 4,3 s

Caixa grande 9 mil msgs

Média 22,4 s

Usando o imacros do firefox. As melhoras acontecem em caixas grandes e redes lentas.

Attachments

expressoMailOtimizado.png Download (14.4 KB) - added by amuller 11 years ago.
Requisições em paralelo
class.init_functions.inc.php Download (2.5 KB) - added by amuller 11 years ago.
Arquivo init_functions com inicialização paralela
main.js Download (60.9 KB) - added by amuller 11 years ago.
Arquivo main.js adaptado para abrir o init_functions

Change History

Changed 11 years ago by amuller

Requisições em paralelo

comment:1 Changed 11 years ago by amuller

  • Status changed from new to closed
  • Resolution set to fixed

comment:2 Changed 11 years ago by amuller

  • Milestone set to Expresso Mail 1.235

comment:3 follow-up: ↓ 4 Changed 11 years ago by wmerlotto

Maravilha, mas como faço para testar esse branch (imagino que contenha ainda as alterações descritas no #429)? No SVN do ExpressoLivre não há nada no branch...

comment:4 in reply to: ↑ 3 Changed 11 years ago by rodsouza

Replying to wmerlotto:

Maravilha, mas como faço para testar esse branch (imagino que contenha ainda as alterações descritas no #429)? No SVN do ExpressoLivre não há nada no branch...

O Nilton que tem permissão para realizar a sincronização do SVN está de férias e volta depois do carnaval.

comment:5 Changed 11 years ago by amuller

O teste pode ser feito pelo anexo que ta neste ticket.

comment:6 Changed 11 years ago by amuller

Foi tentado disparar todas as requisições de inicialização do ExpressoMail? em paralelo. Através de fork, isso para melhorar o tempo de abertura em redes com alta latência.

A empreitada não foi nem sucedida. Por diversos fatores são eles

  • a pcntl_fork não é habilitada no apache php-mod por default.
  • a comunicação entre os forks é bem complicada (foi feita por arquivo).

Além disso. O tempo de abertura já é bem aceitável. Os arquivos que fazem esta implementação serão anexados como histórico.

Changed 11 years ago by amuller

Arquivo init_functions com inicialização paralela

Changed 11 years ago by amuller

Arquivo main.js adaptado para abrir o init_functions

comment:7 follow-up: ↓ 8 Changed 11 years ago by niltonneto

É essencial que as modificações feitas na aplicação não dependam de configurações específicas dos serviços (WebServer?, PHP, etc) para que funcionem corretamente. Comentei isso devido à tentativa sem sucesso de implementar processamento paralelo de requisições AJAX.

comment:8 in reply to: ↑ 7 Changed 11 years ago by amuller

Replying to niltonneto:

É essencial que as modificações feitas na aplicação não dependam de configurações específicas dos serviços (WebServer?, PHP, etc) para que funcionem corretamente. Comentei isso devido à tentativa sem sucesso de implementar processamento paralelo de requisições AJAX.

Compartilho essa preocupação Nilton. Depender de terceiros é um tiro no pé. Por isso que estou implementando algumas coisas usando só funções nativas do PHP, quando possível o mais encapsulado possível.

comment:9 Changed 11 years ago by niltonneto

  • Version changed from 1.0 to Trunk (trunk)

Implementado em [812], referente à otimização da função get_lang.

comment:10 follow-up: ↓ 11 Changed 11 years ago by niltonneto

  • Summary changed from Otimização de desempenho no branch da versão 1.235 to Otimização de desempenho na leitura de caixas postais grandes
  • Milestone changed from Expresso Mail 1.235 to Expresso Mail 1.234

Ficou muito rápido realmente com caixas maiores. Implementado em [828].

comment:11 in reply to: ↑ 10 Changed 11 years ago by wmerlotto

Replying to niltonneto:

Ficou muito rápido realmente com caixas maiores. Implementado em [828].

Sensacional! Muuuuito mais rápido... Valeu!

comment:12 Changed 9 years ago by niltonneto

  • Milestone Expresso Mail 1.234 deleted

Milestone Expresso Mail 1.234 deleted

Note: See TracTickets for help on using tickets.