Gargalo ao utilizar o Stella Boleto em larga escala gerando mais mil boletos de uma vez

6 respostas
D

Bom dia, PessoaLL.
Estou na seguinte situação tenho que gerar cerca de 3000 boletos de uma só vez
pelo Stella pemitir que gerar mais de boleto de só vez, e possuir metodos que retorna o pdf
em array de bytes e png além da documentação melhor também.
Fui fazer um teste agora gerando 500 boletos de uma só vez o Stella levou cerca de
11 minutos para gera-los a ainda o arquivo final tem 64 mb, quando cada boleto tem 47 kb.

Alguém teve esta experiência gerando esta quantidade de boletos com Stella
ou outro framework ou tem alguma sugestão para resolver este gargalo.

Desde já agradeço.

6 Respostas

T

Você não poderia gerar PDFs menores (com menos de 100 páginas cada um?)

D

Não pq ai eu teria que iniciar os doownloads dos boletos gerados em separado para o usuário.

G

Se você precisa de um processamento tão grande o mais correto é iniciar um processo asyncrono que gere os boletos individualmente e depois você pude usar um tar ou zip para unir os arquivos, e depois disso disponibilizar o download.

D

Mas ai teria que gravar os lotes em disco que tornaria a operação mais custosa.Ou existe uma forma de trabalhar com array de Bytes usando os lotes?

G

Mais custo do que carregar 3 mil PDF em memória? Acho que há duas coisas a fazer, sendo que a primeira delas é otimizar seu código para evitar muito lixo na heap, e a segunda pensar em fazer cache em disco dos arquivos.

A menos que você trabalhe com clusters à lá GAE/J ou ECS a operação de gerar tantos PDFs assim não será nem um pouco curta. A melhor solução é realmente você fazer algo asincrono e depois entregar ao usuário tudo pronto.

esimioni

Você pode tentar também o Boleto Free. Cada boleto gerado tem 7.8KB, permite gerar multi-thread o que faria teu processo mais rápido, mas mesmo em mono-thread a performance é de mais de 300 boletos por segundo, o que geraria os 3000 boletos em no máximo 10 segundos, contando que a máquina não seja muito defasada.

Edit: Se você for gerar todos os boletos em um único PDF (funcionalidade disponível no Boleto Free), então o documento final para 3000 boletos ficará com 4.72MB (Cerca de 1.6KB por boleto), note que este tamanho pode ter pequenas variações conforme os dados de cada boleto. O tempo para a geração de 3000 boletos neste caso será de cerca de 5 segundos, não é possível utilizar usar multi-thread para melhorar este tempo por se tratar de um único arquivo.

Baixe a demo e faça um teste de performance, caso a performance seja abaixo do que eu indiquei, responda aqui neste tópico para analisarmos.

Criado 11 de fevereiro de 2010
Ultima resposta 6 de jun. de 2010
Respostas 6
Participantes 4