Twitter извън строя за час – вероятни причини
На 21 юни twitter не беше достъпен по целия свят, много хора се оплакваха в други социални мрежи и блогове. Това е най-продължителното спиране на Twitter от октомври миналата година и затова заслужава малко повече внимание. Защо по принцип се случват такива прекъсвания? За конкретния случай twitter твърдят, че е „каскаден бъг в един от инфраструктурните компоненти“, но това вероятно значи малко за широката публика. От друга страна група хакери твърдят, че са провели разпределена DoS атака. А може и да е било нещо съвсем различно.
Услуги като twitter, facebook, google, и т.н. имат стотици сървъри, на които върви кодът на сайта. Т.е. когато напишете „twitter.com“, бивате обслужени от един от няколкостотинте машини в техния дейта център / облак / сърърна ферма. По принцип не е никакъв проблем ако един сървър се срине или забие – останалите поемат неговото натоварване. Дори 10% от сървърите да спрат, останалите могат да поемат натоварването. Още повече, че когато това се случи и капацитетът намалее, инженерите изключват някои функционалности на услугата, за да могат потребителите все пак да използват основната функционалност. Например twitter могат да изключат favorites, @connect и #discover, за да работи стабилно началната страница. Но вчера изключването на функционалности не помогна. Каква може да е причината? Ето няколко вероятно обяснения:
- каскаден бъг – да приемем, че официалната версия е вярна. Тwitter постоянно обновяват кода си и понякога новият код съдържа бъгове. Някои бъгове могат да са толкова сериозни, че да накарат сървъра, на който са сложени, да „изяде“ всичките си ресурси (памет и процесор). Кодът обикновено се слага на сървърите постепенно, но ако проблемът не се манифестира веднага, може да засегне голям процент от сървърите. Това, че проблемът започна на кръгъл час също е показателен – доста от периодичните операции са настроени за кръгъл час – може би тогава се е стартирала такава операция на всички машини с новия код.
- каскадно падане на сървъри – това се случи веднъж на foursquare. Когато едни сървър спре, неговото натоварване се прехвърля на останалите. Но ако те не са в състояние да го поемат, започват да „падат“ един по един, като всеки път останалите сървъри опитват да поемат цялото натоварване, докато накрая не остане нито един сървър. Това може да е свързано с горния проблем – когато половината сървъри паднат заради бъг, останалите не успяват да поемат натоварването и също падат, макар и бъгът да не е достигнал до тях. Този проблем обаче не може да се случи ако всички сървъри използват 50% от капацитета си.
- DDoS – разпределена denial of service атака. Група хакери твърдят, че са провели такава снощи. Вероятно сте чували термина „bandwidth“ – количеството данни, което връзката може да пренесе за една секунда. Ако хакерите заемат целия bandwidth с фалшиви заявки, истинските потребители не могат да „прекарата“ заявка до сървърите. DDoS се изпълнява от много компютри, често заразени с вируси, които са координирани от хакерите. Представете си един милион компютри да опитат да отворят twitter.com по едно и също време – дори сървърите да са стабилни, входащята мрежа не може да поеме натоварването, и ограничава заявките.
Коя от трите е истинската причина? Twitter твърдят, че е първата. Но фактът, че известният “fail whale” не се появи навежда на мисълта, че DDoS не е невъзможен сценарий.
Снимка: Twitter
