ProHoster > blog > Utawala > Kutoka kwa maisha na Kubernetes: Jinsi seva ya HTTP haikupendelea Wahispania
Kutoka kwa maisha na Kubernetes: Jinsi seva ya HTTP haikupendelea Wahispania
Mwakilishi wa mteja wetu, ambaye rundo la maombi yake hukaa kwenye wingu kutoka kwa Microsoft (Azure), alishughulikia tatizo: hivi majuzi, baadhi ya maombi kutoka kwa wateja wengine kutoka Uropa yalianza na hitilafu 400 (Ombi Mbaya) Programu zote zimeandikwa katika .NET, zimetumwa katika Kubernetes...
Moja ya programu ni API, ambayo trafiki yote hatimaye huja. Trafiki hii inasikilizwa na seva ya HTTP kestrel, iliyosanidiwa na mteja wa .NET na kupangishwa katika ganda. Kwa utatuzi, tulikuwa na bahati kwa maana kwamba kulikuwa na mtumiaji mahususi ambaye alizalisha tena tatizo mara kwa mara. Walakini, kila kitu kilikuwa ngumu na mlolongo wa trafiki:
Inaweza kuonekana kuwa tcpdump pekee itasaidia kutatua shida hii ... lakini nitarudia juu ya mlolongo wa trafiki:
Uchunguzi
Ni wazi, ni bora kusikiliza trafiki kwenye nodi hiyo maalum, ambapo Kubernetes imepeleka ganda: kiasi cha dampo itakuwa hivyo kwamba itawezekana kupata angalau kitu haraka sana. Na kwa kweli, wakati wa kuichunguza, sura ifuatayo iligunduliwa:
Baada ya kukagua kwa karibu dampo hilo, neno hilo liligunduliwa M.laga. Ni rahisi kukisia kuwa hakuna jiji la M.laga nchini Uhispania (lakini lipo Malaga) Kuzingatia wazo hili, tuliangalia usanidi wa Ingress, ambapo tuliona ile iliyoingizwa mwezi mmoja uliopita (kwa ombi la mteja) kijisehemu "isiyo na madhara".:
Itarudi 400 Bad request - katika logi ya maombi tutapokea hitilafu ambayo tayari inajulikana kwetu:
{
"@t":"2019-03-31T12:59:54.3746446Z",
"@mt":"Connection id "{ConnectionId}" bad request data: "{message}"",
"@x":"Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Malformed request: invalid headers.n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TryParseRequest(ReadResult result, Boolean& endConnection)n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.<ProcessRequestsAsync>d__185`1.MoveNext()",
"ConnectionId":"0HLLLR1J974L9",
"message":"Malformed request: invalid headers.",
"EventId":{
"Id":17,
"Name":"ConnectionBadRequest"
},
"SourceContext":"Microsoft.AspNetCore.Server.Kestrel",
"ThreadId":71
}
Matokeo ya
Hasa Kestrel hawezi kuchakata kwa usahihi vichwa vya HTTP na herufi sahihi katika UTF-8, ambazo zimo katika majina ya idadi kubwa ya miji.
Sababu ya ziada katika kesi yetu ni kwamba mteja kwa sasa hana mpango wa kubadilisha utekelezaji wa Kestrel katika programu. Walakini, maswala katika AspNetCore yenyewe (β 4318, β 7707) wanasema kuwa hii haitasaidia...
Kwa muhtasari: noti sio tena juu ya shida maalum za Kestrel au UTF-8 (mnamo 2019?!), lakini juu ya ukweli kwamba akili na utafiti thabiti Kila hatua unayochukua wakati wa kutafuta shida itazaa matunda mapema au baadaye. Bahati njema!