{"id":80031,"date":"2020-05-02T13:42:49","date_gmt":"2020-05-02T11:42:49","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/top-fakapov-czian"},"modified":"2020-05-02T13:42:49","modified_gmt":"2020-05-02T11:42:49","slug":"top-fakapov-czian","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/top-fakapov-czian","title":{"rendered":"Toppmissar p\u00e5 Cian","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Toppmissar p\u00e5 Cian\" src=\"\/wp-content\/uploads\/2020\/05\/61cf8d25f1f3e858a3b9541cb026cf3c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlla gott!\u00a0<\/p>\n<p>Jag heter Nikita och \u00e4r teamledare f\u00f6r ingenj\u00f6rerna p\u00e5 Cian. En av mina uppgifter i f\u00f6retaget \u00e4r att minska antalet incidenter relaterade till infrastrukturen i produktion till noll.<br \/>\nDet som kommer att diskuteras h\u00e4r har orsakat oss mycket sm\u00e4rta, och m\u00e5let med denna artikel \u00e4r att f\u00f6rhindra andra fr\u00e5n att upprepa v\u00e5ra misstag eller \u00e5tminstone minimera deras p\u00e5verkan.\u00a0<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Inledning<\/h3>\n<p>\nL\u00e4nge sedan, n\u00e4r Cian bestod av monoliter och det inte fanns n\u00e5gra indikationer p\u00e5 mikrotj\u00e4nster, m\u00e4tte vi tillg\u00e4ngligheten av resurser genom att kontrollera 3\u20135 sidor.\u00a0<\/p>\n<p>Svarar de \u2014 allt \u00e4r bra, svarar de inte under en l\u00e4ngre tid \u2014 alarm. Hur l\u00e4nge de ska vara nere f\u00f6r att det ska r\u00e4knas som en incident avgjordes av folk p\u00e5 m\u00f6ten. Ingenj\u00f6rsteamet deltog alltid i utredningen av incidenten. N\u00e4r utredningen var klar skrev vi en postmortem \u2014 en slags rapport som skickades via e-post i formatet: vad som h\u00e4nde, hur l\u00e4nge det varade, vad man gjorde i stunden, vad vi kommer att g\u00f6ra i framtiden.\u00a0<\/p>\n<h3>Huvudsidorna p\u00e5 webbplatsen eller hur vi vet att vi har n\u00e5tt botten<\/h3>\n<p>\u00a0<br \/>\nF\u00f6r att kunna f\u00f6rst\u00e5 prioriteten av fel har vi identifierat de mest kritiska sidorna f\u00f6r aff\u00e4rsfunktionaliteten p\u00e5 webbplatsen. Genom dem r\u00e4knar vi antalet lyckade\/olyckade f\u00f6rfr\u00e5gningar och tids\u00f6verskridanden. P\u00e5 s\u00e5 s\u00e4tt m\u00e4ter vi uptime.\u00a0<\/p>\n<p>Anta att vi har kommit fram till att det finns ett antal superviktiga delar av webbplatsen som ansvarar f\u00f6r huvudservicen \u2014 s\u00f6kning och publicering av annonser. Om antalet f\u00f6rfr\u00e5gningar som avslutades med ett fel \u00f6verstiger 1% \u2014 \u00e4r det en kritisk incident. Om felprocenten under 15 minuter i primetime \u00f6verstiger 0,1% \u2014 d\u00e5 r\u00e4knas det ocks\u00e5 som en kritisk incident. Dessa kriterier t\u00e4cker merparten av incidenterna, medan andra ligger utanf\u00f6r ramen f\u00f6r denna artikel.<\/p>\n<p><img decoding=\"async\" alt=\"Toppmissar p\u00e5 Cian\" src=\"\/wp-content\/uploads\/2020\/05\/f5d76b1784c9a52ae1dc4728f1509ccc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Topp b\u00e4sta incidenterna p\u00e5 Cian<\/h3>\n<p>\nS\u00e5 vi har definitivt l\u00e4rt oss att identifiera n\u00e4r en incident har intr\u00e4ffat.\u00a0<\/p>\n<p>Nu \u00e4r varje incident detaljerat beskriven och \u00e5terspeglas i en epic i Jira. F\u00f6r \u00f6vrigt: f\u00f6r detta har vi skapat ett separat projekt, som vi kallade FAIL \u2014 d\u00e4r man endast kan skapa epics.\u00a0<\/p>\n<p>Om man samlar alla misslyckanden fr\u00e5n de senaste \u00e5ren, s\u00e5 ligger f\u00f6ljande i topp:\u00a0<\/p>\n<ul>\n<li>incidenter relaterade till mssql;<\/li>\n<li>incidenter orsakade av externa faktorer;<\/li>\n<li>adminfel.<\/li>\n<\/ul>\n<p>\nVi kommer att stanna vid adminfelen mer i detalj, samt n\u00e5gra andra intressanta misslyckanden.<\/p>\n<h4>Femte plats \u2014 \"Vi ordnar upp i DNS\"<\/h4>\n<p>\nDet var en ruggig tisdag. Vi best\u00e4mde oss f\u00f6r att organisera DNS-klustret.\u00a0<\/p>\n<p>Vi ville migrera interna DNS-servrar fr\u00e5n bind till powerdns, och avsatte helt separata servrar f\u00f6r detta, d\u00e4r det endast fanns DNS.\u00a0<\/p>\n<p>Vi placerade en DNS-server i varje plats i v\u00e5ra datacenter, och nu kom stunden att flytta zonerna fr\u00e5n bind till powerdns och byta infrastrukturen till de nya servrarna.\u00a0<\/p>\n<p>I den mest intensiva fasen av flytten, <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/server\/\"   title=\"servrar\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1484\">servrar<\/a>, som som angivits i lokala cachande bind-servrar p\u00e5 alla servrar, \u00e5terstod bara en, som l\u00e5g i datacentret i Sankt Petersburg. Detta datacenter hade fr\u00e5n b\u00f6rjan deklarerats som icke-kritiskt f\u00f6r oss, men blev pl\u00f6tsligt en single point of failure.<br \/>\nJust under denna flytt kraschade kanalen mellan Moskva och Sankt Petersburg. Vi befann oss faktiskt utan DNS i fem minuter och \u00e5terh\u00e4mtade oss n\u00e4r <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/\"   title=\"hostingleverant\u00f6ren\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1206\">hostingleverant\u00f6ren<\/a> problemen \u00e5tg\u00e4rdades.\u00a0<\/p>\n<p><b>Slutsatser: <\/b><\/p>\n<p>Tidigare har vi \u00e5sidosatt externa faktorer n\u00e4r vi f\u00f6rberett oss f\u00f6r arbetet, men nu har vi \u00e4ven inkluderat dem i listan \u00f6ver vad vi f\u00f6rbereder oss p\u00e5. Och nu str\u00e4var vi efter att alla komponenter \u00e4r reservdelar n-2, och under arbetets g\u00e5ng kan vi s\u00e4nka denna niv\u00e5 till n-1.<\/p>\n<ul>\n<li>Under uppr\u00e4ttandet av handlingsplanen, markera punkter d\u00e4r tj\u00e4nsten kan falla och t\u00e4nk igenom scenarier d\u00e4r allt g\u00e5r \"fruktansv\u00e4rt fel\" i f\u00f6rv\u00e4g.<\/li>\n<li>Distribuera interna DNS-servrar \u00f6ver olika geolokationer\/datacenter\/st\u00e4ll\/omkopplare\/inmatningar.<\/li>\n<li>Installera en lokal cachande DNS-server p\u00e5 varje server, som omdirigerar f\u00f6rfr\u00e5gningar till de prim\u00e4ra DNS-servrarna, och i h\u00e4ndelse av att den inte \u00e4r tillg\u00e4nglig kommer den att svara fr\u00e5n cachen.\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h4>Fj\u00e4rde plats \u2014 \"Ordning i Nginx\"<\/h4>\n<p>\nEn vacker dag best\u00e4mde v\u00e5rt team att \"det \u00e4r nog nu\", och processen f\u00f6r refaktorering av nginx-konfigurationerna startade. Huvudm\u00e5let var att ge konfigurationerna en intuitivt begriplig struktur. Tidigare var allt \"historiskt betingat\" och bar ingen logik. Nu har vi flyttat varje server_name till en namngiven fil och sorterat alla konfigurationer i mappar. F\u00f6r \u00f6vrigt inneh\u00e5ller konfigurationen 253949 rader eller 7836520 tecken och \u00e4r n\u00e4stan 7 megabyte stor. Den \u00f6vergripande strukturens niv\u00e5:\u00a0<\/p>\n<p>                        <b class=\"spoiler_title\">Nginx-struktur<\/b><\/p>\n<pre><code class=\"plaintext\">\u251c\u2500\u2500 access\n\u2502 \u00a0 \u251c\u2500\u2500 allow.list\n...\n\u2502 \u00a0 \u2514\u2500\u2500 whitelist.conf\n\u251c\u2500\u2500 geobase\n\u2502 \u00a0 \u251c\u2500\u2500 exclude.conf\n...\n\u2502 \u00a0 \u2514\u2500\u2500 geo_ip_to_region_id.conf\n\u251c\u2500\u2500 geodb\n\u2502 \u00a0 \u251c\u2500\u2500 GeoIP.dat\n\u2502 \u00a0 \u251c\u2500\u2500 GeoIP2-Country.mmdb\n\u2502 \u00a0 \u2514\u2500\u2500 GeoLiteCity.dat\n\u251c\u2500\u2500 inc\n\u2502 \u00a0 \u251c\u2500\u2500 error.inc\n...\n\u2502 \u00a0 \u2514\u2500\u2500 proxy.inc\n\u251c\u2500\u2500 lists.d\n\u2502 \u00a0 \u251c\u2500\u2500 bot.conf\n...\n\u2502 \u00a0 \u251c\u2500\u2500 dynamic\n\u2502 \u00a0 \u2514\u2500\u2500 geo.conf\n\u251c\u2500\u2500 lua\n\u2502 \u00a0 \u251c\u2500\u2500 cookie.lua\n\u2502 \u00a0 \u251c\u2500\u2500 log\n\u2502 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 log.lua\n\u2502 \u00a0 \u251c\u2500\u2500 logics\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 include.lua\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 ...\n\u2502 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 utils.lua\n\u2502 \u00a0 \u2514\u2500\u2500 prom\n\u2502 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 stats.lua\n\u2502 \u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 stats_prometheus.lua\n\u251c\u2500\u2500 map.d\n\u2502 \u00a0 \u251c\u2500\u2500 access.conf\n\u2502 \u00a0 \u251c\u2500\u2500 ..\n\u2502 \u00a0 \u2514\u2500\u2500 zones.conf\n\u251c\u2500\u2500 nginx.conf\n\u251c\u2500\u2500 robots.txt\n\u251c\u2500\u2500 server.d\n\u2502 \u00a0 \u251c\u2500\u2500 cian.ru\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 cian.ru.conf\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 ...\n\u2502 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 my.cian.ru.conf\n\u251c\u2500\u2500 service.d\n\u2502 \u00a0 \u251c\u2500\u2500 ...\n\u2502 \u00a0 \u2514\u2500\u2500 status.conf\n\u2514\u2500\u2500 upstream.d\n\u00a0\u00a0\u00a0\u00a0\u251c\u2500\u2500 cian-mcs.conf\n\u00a0\u00a0\u00a0\u00a0\u251c\u2500\u2500 ...\n\u00a0\u00a0\u00a0\u00a0\u2514\u2500\u2500 wafserver.conf<\/code><\/pre>\n<p>Det har blivit betydligt b\u00e4ttre, men under omd\u00f6pning och f\u00f6rdelning av konfigar fick en del av dem fel fil\u00e4ndelse och kom inte med i direktivet include *.conf. Som en f\u00f6ljd av detta blev vissa v\u00e4rdar otillg\u00e4ngliga och \u00e5tergav 301 till startsidan. Eftersom svarskoden inte var 5xx\/4xx, m\u00e4rkte vi det inte genast, utan f\u00f6rst p\u00e5 morgonen. Efter detta b\u00f6rjade vi skriva tester f\u00f6r att kontrollera infrastrukturkomponenter.<\/p>\n<p><b>Slutsatser:<\/b>\u00a0<\/p>\n<ul>\n<li>Strukturera konfigurationerna korrekt (inte bara nginx) och t\u00e4nk igenom strukturen i ett tidigt skede av projektet. P\u00e5 s\u00e5 s\u00e4tt g\u00f6r du dem mer begripliga f\u00f6r teamet, vilket i sin tur minskar TTM.<\/li>\n<li>Skriv tester f\u00f6r vissa infrastrukturkomponenter. Till exempel: kontrollera att alla viktiga server_name ger r\u00e4tt status, + svarstext. Det r\u00e4cker att ha bara n\u00e5gra skript till hands som kontrollerar de grundl\u00e4ggande funktionerna i komponenten, s\u00e5 att du inte panikartat ska f\u00f6rs\u00f6ka komma ih\u00e5g vad mer som beh\u00f6ver kontrolleras mitt i natten.\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h4>Tredje plats \u2014 \"Pl\u00f6tsligt tog det slut p\u00e5 utrymme i Cassandra\"<\/h4>\n<p>\nData v\u00e4xte stadigt, och allt gick bra tills det \u00f6gonblick d\u00e5 reparationen av stora keyspaces i Cassandra-klustret b\u00f6rjade misslyckas, eftersom de inte kan genomf\u00f6ra kompaktion.\u00a0<\/p>\n<p>En bl\u00f6dig dag n\u00e4stan f\u00f6rvandlades klustret till en pumpa, n\u00e4mligen:<\/p>\n<ul>\n<li>det \u00e5terstod cirka 20% totalt i klustret;<\/li>\n<li>det g\u00e5r inte att helt l\u00e4gga till noder, eftersom cleanup inte genomf\u00f6rs efter att noder lagts till p\u00e5 grund av brist p\u00e5 utrymme p\u00e5 partitionerna;<\/li>\n<li>prestandan faller f\u00f6rsiktigt, eftersom kompaktionen inte fungerar;\u00a0<\/li>\n<li>klustret arbetar i n\u00f6dl\u00e4ge.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Toppmissar p\u00e5 Cian\" src=\"\/wp-content\/uploads\/2020\/05\/1d036fbc500a49a285fa4b0014e2a70d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUttr\u00e4de \u2013 vi har lagt till ytterligare 5 noder utan rensning, efter vilket vi b\u00f6rjade systematiskt ta bort fr\u00e5n klustret och sedan \u00e5terinf\u00f6ra, som tomma noder, d\u00e4r det inte fanns n\u00e5got utrymme kvar. Tiden som lagts ner har varit betydligt mer \u00e4n vi hade \u00f6nskat. Det fanns en risk f\u00f6r delvis eller fullst\u00e4ndig otillg\u00e4nglighet av klustret.\u00a0<\/p>\n<p><b>Slutsatser:<\/b><\/p>\n<ul>\n<li>P\u00e5 alla servrar med Cassandra b\u00f6r h\u00f6gst 60% av utrymmet vara anv\u00e4nt p\u00e5 varje partition.\u00a0<\/li>\n<li>De b\u00f6r vara belastade till h\u00f6gst 50% av CPU.<\/li>\n<li>Man b\u00f6r inte bortse fr\u00e5n kapacitetsplanering och det m\u00e5ste \u00f6verv\u00e4gas f\u00f6r varje komponent beroende p\u00e5 dess specifika behov.<\/li>\n<li>Ju fler noder i klustret, desto b\u00e4ttre. Servrar som inneh\u00e5ller en liten m\u00e4ngd data f\u00e5r snabbare omstart, och ett s\u00e5dant kluster \u00e4r l\u00e4ttare att \u00e5terst\u00e4lla.\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h4>Andra plats \u2013 'Data f\u00f6rsvann fr\u00e5n consul key-value storage'<\/h4>\n<p>\nF\u00f6r tj\u00e4nsteuppt\u00e4ckten anv\u00e4nder vi, precis som m\u00e5nga andra, Consul. Men vi anv\u00e4nder \u00e4ven dess key-value f\u00f6r blue-green deployment av monoliten. D\u00e4r lagras information om aktiva och inaktiva upstreams, som byter plats under deployment. F\u00f6r detta har en deploymenttj\u00e4nst skrivits som interagerade med KV. Vid n\u00e5got tillf\u00e4lle f\u00f6rsvann data fr\u00e5n KV. Vi \u00e5terst\u00e4llde det fr\u00e5n minnet, men med vissa fel. Som en f\u00f6ljd av detta blev belastningen p\u00e5 upstreams oj\u00e4mt f\u00f6rdelad under distributionen, och vi fick m\u00e5nga 502-fel p\u00e5 grund av \u00f6verbelastning av backend-maskinerna p\u00e5 CPU. I slut\u00e4ndan flyttade vi fr\u00e5n Consul KV till Postgres, d\u00e4rifr\u00e5n \u00e4r det inte s\u00e5 l\u00e4tt att ta bort dem.\u00a0\u00a0<\/p>\n<p><b>Slutsatser:<br \/>\n<\/b><\/p>\n<ul>\n<li>Tj\u00e4nster utan n\u00e5gon form av autentisering b\u00f6r inte inneh\u00e5lla kritiska uppgifter f\u00f6r webbplatsens funktion. Till exempel, om du inte har autentisering i ES \u2013 skulle det vara b\u00e4st att f\u00f6rbjuda \u00e5tkomst p\u00e5 n\u00e4tverksniv\u00e5 fr\u00e5n alla platser d\u00e4r det inte beh\u00f6vs, l\u00e4mna endast de n\u00f6dv\u00e4ndiga och dessutom g\u00f6ra action.destructive_requires_name: true.<\/li>\n<li>\u00d6va p\u00e5 mekanismen f\u00f6r s\u00e4kerhetskopiering och \u00e5terst\u00e4llning i f\u00f6rv\u00e4g. Till exempel, skapa ett skript (till exempel p\u00e5 Python) som kan b\u00e5de s\u00e4kerhetskopiera och \u00e5terst\u00e4lla.<\/li>\n<\/ul>\n<p><\/p>\n<h4>F\u00f6rsta plats \u2013 'Kapten Otydlighet'\u00a0<\/h4>\n<p>\nVid n\u00e5got tillf\u00e4lle m\u00e4rkte vi en oj\u00e4mn belastning p\u00e5 nginx upstreams n\u00e4r det fanns fler \u00e4n 10 servrar i backend. Eftersom round-robin dirigerade f\u00f6rfr\u00e5gningar fr\u00e5n den f\u00f6rsta till den sista upstream i ordning, och varje reload av nginx b\u00f6rjade fr\u00e5n b\u00f6rjan, fick de f\u00f6rsta upstreams alltid fler f\u00f6rfr\u00e5gningar \u00e4n de andra. Som ett resultat arbetade de l\u00e5ngsammare och hela webbplatsen drabbades. Detta blev allt mer p\u00e5tagligt i takt med att trafiken \u00f6kade. Att bara uppdatera nginx f\u00f6r att inkludera random fungerade inte \u2014 vi var tvungna att g\u00f6ra om en massa lua-kod som inte gick att anv\u00e4nda i version 1.15 (vid den tidpunkten). Vi var tvungna att patcha v\u00e5r nginx 1.14.2 och inf\u00f6ra st\u00f6d f\u00f6r random. Detta l\u00f6ste problemet. Denna bugg vinner i kategorin 'kapten uppenbarhet'.<\/p>\n<p><b>Slutsatser:<\/b><\/p>\n<p>Det var mycket intressant och sp\u00e4nnande att unders\u00f6ka denna bugg).\u00a0<\/p>\n<ul>\n<li>Bygg en \u00f6vervakning som hj\u00e4lper till att snabbt uppt\u00e4cka liknande fluktuationer. Till exempel kan man anv\u00e4nda ELK f\u00f6r att \u00f6vervaka rps f\u00f6r varje backend av varje upstream, och f\u00f6lja deras svarstider ur nginx:s perspektiv. I det h\u00e4r fallet hj\u00e4lpte det oss att identifiera problemet.\u00a0<\/li>\n<\/ul>\n<p>\nDe flesta av felen kunde ha undvikits med en mer noggrann inst\u00e4llning till det man g\u00f6r. Man m\u00e5ste alltid komma ih\u00e5g Murphys lag:\u00a0<i>Anything that can go wrong will go wrong, <\/i>och bygga komponenter med den i \u00e5tanke.\u00a0<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/cian\/blog\/499542\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430!\u00a0 \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435, \u0434\u043e \u043d\u0443\u043b\u044f. \u0422\u043e, \u043e \u0447\u0435\u043c \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0434\u0430\u043b\u0435\u0435, \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u043e \u043d\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0438, \u0438 \u0446\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043d\u0435 \u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043b\u044e\u0434\u044f\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u0448\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u043b\u0438\u044f\u043d\u0438\u0435.\u00a0 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80032,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80031","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/top-fakapov-czian\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u043e\u043f \u0444\u0430\u043a\u0430\u043f\u043e\u0432 \u0426\u0438\u0430\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/top-fakapov-czian\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-02T11:42:49+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-02T11:42:49+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Topp missar fr\u00e5n Cian | ProHoster","description":"Alla gott! Jag heter Nikita, jag \u00e4r teamledare f\u00f6r ingenj\u00f6rerna p\u00e5 Cian.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/top-fakapov-czian","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u043e\u043f \u0444\u0430\u043a\u0430\u043f\u043e\u0432 \u0426\u0438\u0430\u043d | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/top-fakapov-czian","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-02T11:42:49+00:00","article:modified_time":"2020-05-02T11:42:49+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80031","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:47:44","updated":"2026-02-09 16:50:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/80031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=80031"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/80031\/revisions"}],"predecessor-version":[{"id":158728,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/80031\/revisions\/158728"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/80032"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=80031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=80031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=80031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}