ProHoster > ΠΠ»ΠΎΠ³ > Pagdumala > Gikan sa kinabuhi uban sa Kubernetes: Giunsa ang HTTP server wala pabor sa mga Espanyol
Gikan sa kinabuhi uban sa Kubernetes: Giunsa ang HTTP server wala pabor sa mga Espanyol
Usa ka representante sa among kliyente, kansang application stack nagpuyo sa Microsoft cloud (Azure), nagsulbad sa usa ka problema: bag-o lang, ang pipila ka mga hangyo gikan sa pipila ka mga kliyente gikan sa Europe nagsugod sa pagtapos sa sayup 400 (Dili Maayo nga Pangayo). Ang tanan nga aplikasyon gisulat sa .NET, gi-deploy sa Kubernetes...
Usa sa mga aplikasyon mao ang API, diin ang tanan nga trapiko sa katapusan moabut. Kini nga trapiko gipaminaw sa HTTP server kestrel, gi-configure sa .NET nga kliyente ug gi-host sa usa ka pod. Sa pag-debug, swerte kami sa diwa nga adunay usa ka piho nga tiggamit nga kanunay nga nag-reproduce sa problema. Bisan pa, ang tanan komplikado sa kadena sa trapiko:
Morag ang tcpdump lang ang makatabang sa pagsulbad niini nga problema... pero sublion nako ang bahin sa traffic chain:
Imbestigasyon
Bitaw, mas maayong paminawon ang trapiko sa kana nga piho nga node, diin ang Kubernetes nag-deploy og pod: ang gidaghanon sa dump mahimong ingon nga posible nga makit-an ang labing menos usa ka butang nga dali ra. Ug sa tinuud, kung gisusi kini, namatikdan ang mosunod nga frame:
Sa pagsusi pag-ayo sa dump, namatikdan ang pulong M.laga. Sayon ang pagtag-an nga walaβy lungsod sa M.laga sa Espanya (apan adunay MΓ‘laga). Sa pag-ilog niini nga ideya, among gitan-aw ang Ingress configs, diin among nakita ang usa nga gisal-ut usa ka bulan ang milabay (sa hangyo sa kliyente) "dili makadaot" snippet:
Human ma-disable ang pagpasa niini nga mga ulohan, ang tanan nahimong maayo! (Sa wala madugay nahimong tin-aw nga ang aplikasyon mismo wala na magkinahanglan niini nga mga ulohan.)
Karon atong tan-awon ang problema mas kasagaran. Kini dali nga makopya sulod sa aplikasyon pinaagi sa paghangyo sa telnet sa localhost:80:
Mobalik 400 Bad request β sa log sa aplikasyon makadawat kami usa ka sayup nga pamilyar na kanamo:
{
"@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
}
Mga resulta
Sa partikular, si Kestrel dili mahimo husto nga pagproseso sa mga ulohan sa HTTP nga adunay husto nga mga karakter sa UTF-8, nga naa sa mga ngalan sa medyo daghang mga lungsod.
Ang usa ka dugang nga hinungdan sa among kaso mao nga ang kliyente wala karon nagplano nga usbon ang pagpatuman sa Kestrel sa aplikasyon. Bisan pa, ang mga isyu sa AspNetCore mismo (Dili. 4318, Dili. 7707) giingon nila nga dili kini makatabang ...
Sa pag-summarize: ang nota dili na mahitungod sa mga piho nga problema sa Kestrel o UTF-8 (sa 2019?!), apan mahitungod sa kamatuoran nga pagkamahunahunaon ug makanunayon nga pagtuon Ang matag lakang nga imong buhaton samtang nangita sa mga problema sa madugay o sa madali mamunga. Good luck!