Sida Chat Culus Oo Keliya API-ga U Dhici Karo
28-ka Sebtember, qiyaastii 17 daqiiqo kadib release, labadii server ee API-ga production-ka isla mar ayaa xusuusta ka dhammaadeen, dib ayay u bilaabmeen, muddo qiyaastii shan daqiiqo ah load balancer-ku ma lahayn server caafimaad qaba oo uu marin karo taraafikada. Xalkeenii hore wuxuu siiyay API-ga xusuus laba jibbaar ah. Sababta dhabta ahayd waxay soo baxday maalintaas dambe: furitaanka chat gaar ah wuxuu codsi keliya ku weyddiiyay API-ga inuu soo raro fariimo 53 MB ah. Taariikhda chat-ka hadda waxay soo raraa bogagga la xaddidayo cabbirka iyo tirada labadaba, chat-kaas waxa uu furmaa bog koowaad oo 5 MB ah halkii uu ka ahaan lahaa shil.
Waxa dhacay
API-keenu wuxuu u shaqeeyaa container labadii server ee kor ku xusan, load balancer-na wuu hagaa. Container kasta wuxuu lahaa xad xusuus oo 384 MiB ah. Markii aan la shaqeynayn wuxuu isticmaali jiray 130–140 MiB, sidaas darteed xadku wuxuu u muuqday inuu dhaadheer yahay.
Labada container ayaa isla mar gaaray xadkaas oo waxay ku dhaceen “JavaScript heap out of memory”. Heap-ka waa xusuusta uu Node.js process-ku u isticmaalo walxaha uu la shaqeynayo. Labada server ayaa isla mar fashilmay, sidaas darteed ma jirin meel loo dirayo codsiyada. Taasi waa nooca ugu xun ee burburka setup-ka laba server ah: qaybinta kala gaarka ah waxay caawisaa kaliya marka fashilka aan isla waqtiga ku dhicin.
Xalka hore: meel dheer
Waqtigu wuxuu tilmaamayay deploy-ka. Kadib release, wareegyada agent-ka ee deploy-gu jebiyay waa la sii wadaa oo transcripts-kooda mar kale waa la kaydiyaa, shaqadaas oo dhan ayaa u muuqatay isha ugu caddaan ee kor u kacida xusuusta.
Sidaas darteed isbeddelkii hore wuxuu kor u qaaday xadka API-ga laga bilaabo 384 MiB ilaa 768 MiB. Waxaan ku dabaqnay isla maalintaas labada server oo tooska ah, waxaanan ku commit-garay deploy configuration si deploy-ka xiga uusan si aamusnaan ah dib u celin 384. Hagaajin gacanta lagu sameeyay server ka dib markii deploy-ka xiga uu dib u celiyo, waa habka caadiga ah ee isla shil u soo noqon karta.
Xusuus badan waxay ahayd xad ammaan oo macquul ah. Ma ahayn sharaxaad.
Sababta dhabta ah: hal codsi, 71 MB
Dhowr saacadood kadib waxaan dib u soo saarnay shilka copy ka mid ah hal chat, adigoo isticmaalaya xadkii hore ee production. Copy-gu wuxuu kaligiis ku burburiyay API-ga, mana jirin deploy.
Marka aad furto mashruuc, web app-ku wuxuu API-ga ka weyddiiyaa taariikhda chat-ka. Endpoint-ku wuxuu soo celinayay 30 fariin ee ugu dambeeya, oo buuxa. Chat-ka badankiisa, 30 fariin waa yar. Chat-kan, 30 fariin ee ugu dambeeya waxay ahaayeen 53 MB database-ka, jawaabtuna 71 MB. Jawaabo dhowr oo agent-ka ah waxay ahaayeen 4–10 MB midkiiba, inta badan waxay ahaayeen transcripts-ka sub-agents: agents caawiye ah oo main agent-ku bilaabo si uu qayb ka mid ah shaqada ugu shaqeeyo isla waqtigaa, shaqadooduna waxay ku kaydsan tahay jawaabta.
Dhismaha jawaab keliya wuxuu qaatay xusuus ka badan kii API-ga haysay. Mar kasta oo la furo ama dib loo cusboonaysiiyo mashruucaas, codsiga ayaa mar kale la diri jiray. Chat keliya wuxuu burburin karaa server kasta oo uu gaaro, oo sababtoo ah bogga la dib u soo rari karo, wuxuu gaari karaa labadaba.
“30 fariin” weligeed ma ahayn xad cabbir dhab ah. Waxay ahayd xad tiro, oo kaliya u yaraa chat-yada caadiga ah.
Xalka: bogag ku xaddidan cabbir iyo tiro labadaba
Bog taariikhda hadda waa 30 fariin ama qiyaastii 4 MB, midka hore ka imaana.
Waxay ka shaqeysaa laba tallaabo:
- Marka hore weydii cabbirrada. API-gu wuxuu database-ka weydiiyaa ID-yada iyo cabbirrada la kaydiyay ee fariimaha ugu dambeeya, isagoo aan waxooda ku jirin la soo raarin. Qoraalkaas ma kharash badan, cabbirka fariinta ma aha.
- Soo rar kaliya waxa ku habboon. Iyada oo laga bilaabayo kan ugu dambeeya ilaa kan ugu horeeya, wuxuu ku darayaa fariimaha ilaa fariinta xigta ay ka gudubi doonto 4 MB bogga. Markaas kaliya safafkaas ayaa si buuxda loo soo rarayaa.
Laba xeer ayaa ammaanta xifaaza:
- Fariinta ugu dambeeysa mar kasta waxay gashaa bogga, iyada oo cabbirkeeda yahay wax kasta. Bog aan waxba soo celin wuxuu chat-ka ku dhegayn lahaa, oo aan lagu soo noqon karin waqtiga hore.
- Waxba lama jaro. Fariin looma jaro ama looma tuurayo. Inta kale ee chat-ka waxay ku soo raraan badhanka “Scroll up for earlier messages” oo fariimaha hore horey u isticmaali jiray, bog kasta mar.
Waxaan helnay meel kale oo isla qaab leh. Markaad joojiso wareeg, API-gu wuxuu hubiyaa jawaabaha ugu dambeeya si uu u arko inay mid ka mid ahi madhan yihiin oo u baahan nadiifin. Taasi waxay ku samayn jirtay soo rarida sideed fariin oo buuxa. Chat-ka jawaabaha dhowr-megabyte ah, taasi waa isla dhibaatada qaab yar. Hadda database-ka waxaan weydiinaynaa su’aal haa ama maya — fariintan ma leedahay waxba ku jira? — iyada oo aan waxa ku jira la soo rarin.
Sida aan u hubinnay
Chat-ka nuqulka ah, adigoo isticmaalaya xadkii hore ee 384 MiB:
- Bogga koowaad waa 5 MB. Ka hor, codsigaasi wuxuu burburiyay API-ga.
- Shan tab oo browser ah oo furaya chat-ka isla mar waxay gaaraan 154 MB xusuus ugu sarreeya.
- Dib-u-scroll-gareynta chat-ka oo dhan waxay soo celisaa 190 fariin oo dhan, mid kasta hal mar, si sax ah.
Logic-ga dooritaanka bogagga wuxuu leeyahay tijaabooyin unit, oo ay ku jiraan mid laga dhisay cabbirrada dhabta ah ee fariimaha ugu dambeeya ee chat-kaas. Bogga koowaad wuxuu soo celinayaa hal fariin, wuxuu sheegayaa in ka badan jiraan, bogga xiga wuxuu ka bilaabmaa fariinta ka dambaysa.
Waxa aan ka qaadanay
- Tiro ma aha xad cabbir. Endpoint kasta oo soo celiya “tirada ugu dambeysa” ee wax kasta oo kor u kaca si aan xad lahayn u baahan yahay xad byte-yada oo kale. Xogtu waxay ugu dambayn heleysaa godka.
- Kii u muuqda inuu sabab yahay ma aha mar walba sababta dhabta ah. Deploy-ku wuxuu ahaa keeneh dhab ah oo shaqo dheeraad ah, xusuus dheeraad ahna waa qiime. Laakiin shilku wuxuu dib u dhacay iyada oo aan deploy jirin, markaan aan dib u soo saarin lahayn waxaan ku joogi lahaa kordhinta xusuusta.
- Labada server way isku dhici karaan marka ay helaan codsi isku mid ah. Redundancy wuxuu ka ilaaliyaa server hal ah oo dhinta. Ma ilaaliyo codsi kasta oo dilaya server kasta oo uu gaaro, gaar ahaan mid isticmaaluhu si dabiici ah dib ugu soo rarayo markuu bogga dib u cusboonaysiinayo.
- Ku hagaaji config-ka, ma aha oo keliya server-ka. Kordhinta xusuusta waxaa lagu daray deploy configuration isla maalintaas, sidaas darteed deploy-ka xiga way ilaaliyeen.
Tani waa sheekada labaad ee xusuusta ee dhowr toddobaad gudahood oo ku lug leh wax-soo-saarka agent-ka. Midda hore waxay ahayd calaamad xaalad oo dhigtay 690 MB stringsyo. Haddii aad isticmaasho sub-agents Mythex, waxaad ka akhriyi kartaa sida ay u shaqeeyaan docs-ka.