Jualan v1.5.0-079: Resolusi HTTP 503 Flapping Traefik & Optimasi Query Dashboard Agregat
Penyelesaian error 503 Service Unavailable dengan eliminasi agresif Traefik healthcheck, optimasi kueri SQL agregat 110x lebih cepat, dan endpoint ringan maintenance-stock.
1mnt baca
Pada saat pengguna memuat dashboard atau modul transaksi di aplikasi Blonjo, terjadi gelombang error HTTP 503 Service Unavailable pada beberapa endpoint:
GET /api/v1/finance/compass/summaryGET /api/v1/inventory/productsGET /api/v1/finance/accountsGET /api/v1/settings/voice_rules
Penyelidikan log Traefik mengungkap bahwa Traefik mencabut upstream sajen-api ("-" 0ms) akibat timeout healthcheck 2 detik ketika backend sedang memproses beban kueri berat.
-
Infrastruktur Traefik & Docker Healthcheck (
docker-compose.prod.yml):- Menghapus label
traefik.http.services.sajen-api.loadbalancer.healthcheck.*yang memicu flapping upstream pada layanan single container. Traefik kini mengandalkan discovery kontainer Docker secara native (selaras denganmcp-backenddanblonjo-ui). - Merilekskan Docker internal healthcheck dari interval 3 detik menjadi 15 detik untuk memangkas konsumsi CPU akibat pemanggilan proses Python berulang kali di VPS 1-core.
- Menghapus label
-
Optimasi Kueri Agregat Database (
sajen/app/services/accounting.py):- Menggantikan loop 30 hari (60 kueri SQL individual) pada
chart_datadengan 2 kueri SQL agregatGROUP BY Transaction.transaction_date. - Menggantikan loop N+1 produk pada kalkulasi
low_stock_countdengan kueri agregat set-based langsung keTenantInventorydanInventoryLog. - Waktu respons endpoint
/finance/compass/summaryterpangkas dari 7.458 ms menjadi 65 ms (lebih dari 110x lebih cepat).
- Menggantikan loop 30 hari (60 kueri SQL individual) pada
-
Dedicated Lightweight Endpoint (
sajen/app/api/v1/settings.py& Frontend):- Menambahkan endpoint
GET /api/v1/settings/maintenance-stockyang hanya membaca boolean status pelacakan stok tenant (< 2 ms). - Memposisikan routing sebelum parameter dinamis
/{key}untuk mencegah path shadowing. - Memperbarui komponen frontend (
Sidebar.tsx,SmartTextarea.tsx, danMaterialControlHub.tsx) agar memanggil endpoint ringan ini tanpa membebani kalkulasi ringkasan keuangan.
- Menambahkan endpoint
- Seluruh request API berjalan stabil dengan status HTTP 200 OK tanpa lagi memicu error 503.
- Latensi per request berkurang drastis sehingga pengalaman pengguna menjadi jauh lebih responsif.