Voltar ao catalogoSCALE-C2
ProcessarOfertasWorker sem limite de concorrencia entre tenants
CriticalAchado ConfirmadoEscalabilidadeRodada 1
Evidencia
`ProcessarOfertasWorker.cs` linhas 57-71 — `Task.WhenAll(tasks)` com `Timer.Period = 1`.
Impacto Tecnico
N threads simultaneas fazem requests Galileu, abrem conexoes PostgreSQL e competem por locks Redis. Degradacao exponencial com crescimento de tenants.
Impacto de Negocio
Com 150 tenants (meta), sistema pode ficar indisponivel por exaustao de recursos.
Recomendacao
Implementar SemaphoreSlim com limite configuravel (max 5 tenants). Considerar Hangfire ou ABP Background Jobs.
Arquivos Afetados
aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/ProcessarOfertasWorker.cs
Acoes Relacionadas
{
"id": "SCALE-C2",
"title": "ProcessarOfertasWorker sem limite de concorrencia entre tenants",
"severity": "Critical",
"type": "achado confirmado",
"category": "scalability",
"description": "`Task.WhenAll(tasks)` sem limite, onde tasks cresce linearmente com numero de tenants. `Timer.Period = 1` milissegundo.",
"evidence": "`ProcessarOfertasWorker.cs` linhas 57-71 — `Task.WhenAll(tasks)` com `Timer.Period = 1`.",
"technicalImpact": "N threads simultaneas fazem requests Galileu, abrem conexoes PostgreSQL e competem por locks Redis. Degradacao exponencial com crescimento de tenants.",
"businessImpact": "Com 150 tenants (meta), sistema pode ficar indisponivel por exaustao de recursos.",
"recommendation": "Implementar `SemaphoreSlim` com limite configuravel (max 5 tenants). Considerar Hangfire ou ABP Background Jobs.",
"files": [
"aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/ProcessarOfertasWorker.cs"
],
"pass": 1,
"relatedActions": [
"ACT-3.6"
]
}
Descricao
Task.WhenAll(tasks)sem limite, onde tasks cresce linearmente com numero de tenants.Timer.Period = 1milissegundo.