800 lidmašīnas karājās gaisā Microsoft servera dēļ

LongT iesūtīja interesantu tēmu kārtīgam spamam. Neowin ir nopublicēta ziņa par to, ka 800 lidmašīnas bija spiestas lidināties gaisā veselas 3 stundas, jo gaisa trafika kontroles punkts nebija pieejams. Šī nopietnā problēma bija radusies cilvēka kļūdas apvienojumā ar Microsoft 2000 servera “dizaina gļuku”. Es biju dzirdējis, ka Microsoft serveri ir jāpārstartē ik pēc pāris dienām vai pat vājākas kastes reizi dienā, vislabāk pa nakti, lai tie paši neuzkārtos, bet par to, ka pašā sistēmā ir iebūvēta “fīča”, kas pārstartē kasti, pirmo reizi dzirdu.

According to the Los Angeles Times, “Microsoft’s software contained an internal clock designed to shut the system down after 49.7 days to prevent it from becoming overloaded with data.” In order to avoid this automatic shutdown, technicians at the airport are required to restart the servers manually (every 30 days), and as you can guess last week one of the technicians messed up. Even after all that the airports software analysts still say such a feature is preferable over others to prevent an overloaded system, as an overloaded system might very well give controllers wrong information about flights.

Sākumā es izsmējos no visas sirds, bet vēlāk kļuva baisi, jo lidmašīnas, tomēr nav putni, kas var lidināties, kamēr ir spēks, degviela ar laiku beidzās…

Dīvaini ir tas, ka lidostās, tādās atbildīgās vietās, tiek izmantoti Microsoft serveri. Cik reizes nav redzēti jociņi, dažādos joku portālos, ar “zilajiem logiem” termināļu ekrānos, bet kaut kā nevarēju iedomāties, ka šo gļukaino produktu lieto arī visas sistēmas administrēšanai. Man ir pārliecība, ka profesionāli izstrādāta programmatūra uz atvērtā koda produktu bāzes būtu daudzas reizes stabilāka un pāris reizes lētāka nekā Microsoft izstrādātā. Varbūt es kļūdos ar izmaksām un uz linux/unix bāzēti risinājumi sanāktu dārgāki, bet jebkurā gadījumā lidostas jau nav tās trūcīgākās iestādes, kur būtu jāriskē un jāapdraud cilvēku dzīvība nestabilu sistēmu dēļ.

63 thoughts on “800 lidmašīnas karājās gaisā Microsoft servera dēļ

  1. munky

    biku pat rēka sanāca… zilie ekrāni toč lidostā ir redzēti, bet gaisā lidināmies 800 lidmašīnas… mhm tas ir kruta!

    Atbildēt
  2. Mulders

    Keywords ir "profesionāli" izstrādāta. Nav svarīgi tur open source, vai closed source. Bet nu maķenīt smieklīgi ir, ka kaut kāds serveris ir jārestartē… jo redziet šim ir memory līki!
    Ņa, tagad tik jāsagaida kad kāds uz M$ bāzēts produkts teixim nolaidīs pa burbuli kādu kuģi, vai salaidīs tūtā kādu ūdens apgādes sistēmu vai elektro sistēmu pilsētai!

    Atbildēt
  3. Udzzis

    Par šīm ~49.7 dienām bija dzirdēts sakarā ar win9x – reāli tas ir laiks milisekundēs kad pārpildās 32bit skaitlis (DWORD): max = 4294967295. Tad kaut kādi sistēmas skaitītāji pārpildās, skaitīšana atsākas no nulles, kas zināmos apstākļos var uzkarināt sistēmu.
    Par server2k gan nekas nav dzirdēts, nav arī dzirdēts par win9x sistēmu, kas būtu nostrādājusi 49.7 dienas bez pārstartēšanas. 🙂

    Atbildēt
  4. Kaitnieks

    Precīzāk runājot, ir tāda API funkcija GetTickCount, kas atgriež laiku kopš sistēmas iesāknēšanas. Ik pa 49 dienām skaitītājs nometas uz nulli, kā jau Udzzis teica. Nu, lūk, un tādi slinkāki programmētāji šo funkciju izmanto laika uzņemšanai stilā:
    t:= GetTickCount;
    repeat

    until(GetTickCount – t >= 3000);
    lai ieciklotu kaut ko uz 3 sekundēm. Nu, loģiski, ka, apmetot skaitītāju uz nulli cikla laikā, iegūstam mūžīgo ciklu.
    Es gan nezinu, vai tas ir pie vainas, bet automātiskais restarts tā vietā, lai izlabotu bagu, ir tas, ko mēs šeit saucam par truass solution.

    Atbildēt
  5. Aleksejs

    Man patika nobeigums tam rakstam:
    …there are other alternatives out there and if you’re running something this major on Windows 2000 servers you’re kind of asking for it.

    Atbildēt
  6. Kaitnieks

    Ahā, palasot avota resursu, izskatās, ka tā ir bijis tīri lidostas softa nevis maikrosofta baga. Vainīgais vienkārši neizlasīja API funkciju definīciju un loģiski, ka programmētājs vaino "MS OS bug" nevis savas līkās rokas, lai netiktu atlaists. Pat neizlasot un ar galvu domājot, var saprast, ka dablvordā džigabaitu neieliksi.
    Tas automātiskais restarts acīmredzot bijis iebūvēts softā, jo, lūdzu, mēs taču esam redzējuši Win2k serverus, kas iet gadu no vietas bez problēmām.

    Atbildēt
  7. hvz

    Kārtējā beziemesla diršana microsoft virzienā.
    Bugs nav OSā, bugs ir stulbā programmerī, kurš pietam nestrādā microsoft!

    Atbildēt
  8. Yoda

    Nu nez. Man liekas, ka viņi tur tajās McDonaldu zemēs ir saspiedušies. Vismaz kādu laiku atpakaļ man viens ar lidostu (Rīgas) saistīts tips teica, ka tās kontroles serveros griežoties tikai un vienīgi Unix sistēmas, kas pie tam ir 2-3-kārtīgi dublētas. Tas bija ~ pirms 3 gadiem. Var jau būt, ka kautkas i mainījies arī tur. Betnu pazīstot mazo mīksto softus, es nu gan mūžā ne uz viena ar lidmašīnām saistīta dzelža tos neliktu.

    Atbildēt
  9. efix

    Es jau nu teiktu, ka bullshits tas viss ir 🙂 Shkjiet, ieksh uptime.netcraft.com var maniit paaris w2k serverus, kuri straadaa daudz ilgaak par sho laiku. Tad jau arii W2K pro mashiinaas buutu jaabuut shaadai fiichai. Nez, man maajaas pc ir nostraadaajis 60 dienas, liidz izbeidzaas elektriiba..

    Atbildēt
  10. Bao

    Es atkal savām acīm esmu divās lidostās redzējis monitoros Linux kernel panikas. Tajos monitoros, kas rāda izlidošanas/ielidošanas laikus. Pieņemu, ka izmantots lēts un vienkāršs risinājums – uz katru ekrānu uzbāzt vienu pc, jo blakus ekrāni rādīja normāli.
    Bet nu par lidostas softiem, OMFG. Biju domājis, ka tur nopietnāks audits to softu izskata, pirms ļauj izmantot. :/

    Atbildēt
  11. Aivis Ābele

    Nez, man mājās pc ir nostrādājis 60 dienas, līdz izbeidzās elektriiba..

    Interesanti zināt ko tu to 60 dienu laikā darīji? Priecājies par uptaimu un strādāji ar notepad vai arī devi CPU kārtīgu noslodzi?

    Atbildēt
  12. Kaitnieks

    Zini, Aivi, cilvēki jau parasti tā arī dara, ka nopērk datoru, sainstalē, pieslēdz un pēc tam neaiztiek, skatoties uz uptaimu. Vismaz tavā mazajā pasaulītē, acīmredzot.

    Atbildēt
  13. Black Napalm

    Man rekords uptaimam ir bijis apm. 35 dienas. Tas bija kad upgreidoju maatesplati un proci (pirms tam viss vilkaas un arii kaaraas jo bija win98) un tad kad pamaniiju ka uptime ir jau 7 dienas, tad padomaaju "a nah man restarteet? Redzees cik ilgi vilksies :)" un peec paaris nedeeljaam pazuda elektriiba… 😛

    Atbildēt
  14. Jāzeps

    Tur jābūt galvu durvīs pamatīgi iespiedušam, lai uzticētu tādu lietu organizāciju programmatūrai, kuras izstrādātāji par tās funkcionalitāti nedod itin nekādas garantijas. Runa ir par uzticēšanos atvērtajam kodam. Šādām sistēmām, protams, neder arī parastā MS programmatūra, kuras izstrādātāji arī nedod nekādas garantijas. Tur noteikti jābūt kaut kādiem visnotaļ dārgiem garantiju līgumiem kaut vai ar to pašu Microsoft. Kurš muļķis parakstīs tādu līgumu par atvērtā koda programmatūru? Nu, un ja ir tādas dispečeru sistēmas, kas uzticas Microsoft ar tām pašām tradicionālajām licenzēm, tad viņi točna ir muļķi.

    Atbildēt
  15. Aivis Ābele

    Kaitniek
    Kaste 2.5 GHz, 512 RAM. Patstāvīgi vaļā putty, ms ofiss (dažreiz OOo), filezilla, firefox, thunderbird, photošops, dreamwveeveris, iTunes u.t.t.. Dažreiz uzkapāju q3, dažreiz noskatos kādu filmu, dažreiz novelku kādu softu no p2p. Patstāvīgi ir atvērti 10-12 logi + systemtrajaa sēdošie softi. Lokāli ir uzlikts apacis + php. Lietoju XPHome turklāt legālu. Neinstalēju nevienu lieku softu lai reģistri nav jātīra. Saraujos vai izstiepjos – 3. dienā uz beigām normāli pastrādāt vairs nav iespējams – kaste tā velkās, ka nepieciešams restarts. Tas lūk notiek manā mazajā pasaulītē.

    Atbildēt
  16. Aivis Ābele

    Tur noteikti jābūt kaut kādiem visnotaļ dārgiem garantiju līgumiem kaut vai ar to pašu Microsoft. Kurš muļķis parakstīs tādu līgumu par atvērtā koda programmatūru?

    Tieshaam nezinu. Varbūt RedHat, Novell, IBM?

    Atbildēt
  17. Jāzeps

    Aivi, Home edition no Professional atšķiras ar to, ka tas domāts izslēgšanai pa nakti – kamēr saimnieks izguļas. Tu esi slikti lasījis licenzi ;]

    Atbildēt
  18. efix

    Aivi Ābele:
    Nē, tas bija tajā manā dulluma laikā, kad uz pc griezās webs, mailserveris, dns serveris, divi eggdropi, mirc sēdēja trayaa, dc++ izmantoju diezgan padaudz, skatījos filmas, aktīvi browseeju webu, rakstīju dažādus darbus skolai, ak jā, arī Tevis pieminētais photošops un dreamweaver’is… un ja būtu gribējis baiso uptaimu, tad nu arī būtu noziedojis naudiņu ups’im.. arī win2003 server pagaidām sevi ir pierādījis, kā stabila OS. Nezinu, varbūt man vienkārši veicas.. 😉
    Bet nedomā, ka esmu kaut kāds windows fanāts. Nebūt ne, šad tad lietoju arī FreeBSD desktopu, tikai laika trūkuma dēļ vēl neesmu pietjūnojis līdz ideālajam, kā man labpatiktos.. un par FreeBSD uz serveriem vispār nerunāsim..

    Atbildēt
  19. putipu

    pats vairāk nekā 3 (!!!) gadus atpakaļ liku Win2k servaku vienai firmai starp tīru publisko internetu un LANu. iet bez restarta un updatiem! nosecuroju ar defaulo IPSec. lasu komentus i nezinu ko domāt… 🙂

    Atbildēt
  20. Me

    Esmu savu XPpro pielāgojis sev tā ka vairs nejūtu ka tas ir M$%^ ražojums, protams ka uz rūteriem griežas FreeBSD un uz abiem servakiem Slacka 9.1. Ilgākais man win98 ir dzīvojis kādas 5 dienas bet XP ap mēnesi (taisīju idle time ircaa 🙂 )

    Atbildēt
  21. spynode

    Nu man jau liekas, ka windas un ms slavee visaadi njergas un taadi, kas uz pc neko rihtiigi nemaz nedara. Es gan serveriem liktu tikai *nix. Windows sliktaakajaa gadijumaa var kaa desktopu lietot.

    Atbildēt
  22. Zapte

    "The radio system shutdown, which lasted more than three hours, left 800 planes in the air without contact to air traffic control, and led to at least five cases where planes came too close to one another, according to comments by the Federal Aviation Administration reported in the LA Times and The New York Times."
    "The contract for designing the system, called Voice Switching and Control System (VSCS), was awarded to Harris Corporation in 1992 and the system was installed in the late 1990s, initially using Unix servers, according to Harris. In 2001, the company completed testing of the VSCS Control Subsystem Upgrade (VCSU), which replaced the original servers with off-the-shelf Dell hardware running Microsoft Windows 2000 Advanced Server. The upgrade was installed in California last year, according to the FAA."
    Teikšu tā: pamatā tā ir izveidotās sistēmas kļūme, bet tomēr izskatās šā tiek lietota, tādu kļūmīgu lietu tomēr varbūt būs noteikusi op.sys, kas tagad top lietota..

    Atbildēt
  23. markizs

    coolynx tu vareetu nointerveet kaadu riigas lidostas it daljas vadiitaaju vai kaadu liidzigu cilvi sakaraa ar sho teemu 🙂

    Atbildēt
  24. Kaklz

    coolynx, rakstu vēl neizlasīju, bet virsrakstā ir gramatikas kļūda. latviešu valodā nekad nesaka "dēļ <vainīgais" vienmēr ir jālieto "<vainīgā> dēļ". Pēc izlabošanas šo komentu lūdzu izdzēst.

    Atbildēt
  25. hvz

    Starp citu – gaisā nekarājās 800 lidmašīnu.
    Arī te pēdējā laikā vērojams Delfu un vakara ziņu stils – virsrakstā minēt izkropļotus faktus, lai tik vairāk kliedzēju piesaistītu.
    800 lidmašīnām nebija sakaru ar KONKRĒTO vadības staciju. Lielai daļai tas nekādā veidā netraucēja turpināt maršrutus.

    Atbildēt
  26. ZBH

    vispaar jau labais uptime counter server OSai, kurs iraid paredzeets 50 dienaam 🙂
    bik taa kaa izsak, ko pash programmeetaaj par to perdukt domaa 🙂

    Atbildēt
  27. ZBH

    Bao : kuraa gadaa tas biij? es kernel paniks iru dabuujs tikai deel liikiem dzelzhiem, 486 laikaa vieniem Intel taimeriem biij baigaas probleems, tur ar panik metaas laukaa ne tikai Linux 2.2.x un 2.4.x, bet arri FreeBSD un OpenBSD (jaunaakie uz sho briid).

    Atbildēt
  28. karuuzo

    Tas GetTickCount() ir problēma. Maziem laika sprīžiem (mazākiem par ~47 dienām) es izmantoju aptuveni šādu konstrukciju (varbūt kādam noder):

    #define DWORD_MAX 0xffff
    DWORD dwTime = GetTickCount(); // Piefiksējam laiku
    DWORD dwWaitTime = 360000; // Cik ilgi gaidam

    // Pārbaudam, vai nav pienācis laiks
    if ( (dwTime > GetTickCount()) ? dwTime – GetTickCount() : DWORD_MAX – dwTime + GetTickCount()) > dwWaitTime)
    {
    // Jee…
    }

    Strādā ātrāk kā ar GetSystemTime().
    Bet ar to pārstartēšanu, tā tik tiešām izskatās pēc programmistu līkrocības. Ja taisa progu, ir jāņem vērā sistēmas īpatnības. Mums te WinNT 4.0 serveris ar visu Informix nogriezās vairāk kā pus gadu (ja pareizi atceros, Informix servera Up time bija ~200 dienas) un ne kādu problēmu. Un griezt DB nav tas pats kas notepadā strādāt.
    m

    Atbildēt
  29. Gordon

    Ziņa ir sakropļota bez žēlastības, jo 800 lidmašīnas virs lidostas jau vien ir notikums. Nemaz nerunājot par to, ka viņām visām nebija sakaru ar kontrolpunku, kas dod komandas, kā uzvesties.
    Ja tās nelidinājās virs lidostas, tad 3h stundas lidināties gaisā, dodoties uz nosprausto galamērķi, lidmašīnai nav nekāds īpašais notikums 🙂

    Atbildēt
  30. Dutch

    Ghmm me w2003 serveris jau gadu kaa iet bez probzaam, ar ms sql un ntajiem juuzeriem + veel kaa domeinkontrolieris. Nav nemaz taads meesls atljaushos pateikt un nakts laikaa toch nerestarteejas bet taisa regulaari bakupus 😛

    Atbildēt
  31. sas

    aivi – man ir 3 probleemas, kuras aizverot kompis pat peec daudzu dienu darba atkal paliek aatrs un mozsh – microsoft outlook, mozilla lietinjas (man ljoti ljoti patiik firefox, bet tikai iesleegt-palietot-izsleegt reziimaa) un liela apjoma tiikla trafiks. Shiis lietas bremzee kompi nenormaali bet liidzko nokvitotas, dziive rullee taalaak 🙂

    Atbildēt
  32. drformat

    Es lietoju Microsoft produktus kopš 1996.gada, bet nekas īpaši nekarās un dzīvot netraucē. Sakiet ko es daru nepareizi ?

    Atbildēt
  33. pink

    Nez, oracle servs, kas griežās uz winnt 4.0 man griezās 2,5 gadi bez restarta, un arī tikai tapa izslēgts viena iemesla dēļ, tika uzveidota iestādē server telpa 🙂 vaidzēj paarvietot. Bet tas bija sen sen apakaļ, gadus 6 apakaļ ja nemaldos. Btw viš vēl joprojām griežās, bet tagad restartos aiziet tikai tad kad uzliek serviss pakas 🙂

    Atbildēt
  34. elfz

    karuuzo:
    pirmkaart, tomēr:
    #define DWORD_MAX 0xffff
    otrkārt, šis variablis nafik nav vajadzīgs.
    … ? dwTime – GetTickCount() : GetTickCount() – dwTime )

    Atbildēt
  35. karuuzo

    2 elfz: Nezināju ka podā ir kompilators :))
    Tā ir tikai ātri uzmesta ideja. Pēdējā pus gada laikā es esmu uzrakstījis 3 rindiņas iekš C++ un ta vēl tipa a = b. Šobrīd atkal sēžu uz sava pamatdarba, doc(i) :((
    m

    Atbildēt
  36. Lupus

    Par rakstu nekomentēšu, radošie dzeltenie kā vienmēr izceļās, bet…
    a) Dotais gļuks skāra nevis vienu lidostu bet visu reģiona gaisa vadības centru. Tātad – tranzītlidmašīnas (kas lidojot pārslēdzas no viena uz otru vadības centru) un vismaz vienu reģionālo (aka lielo) lidostu.
    b) Tajā galā gaisa telpas noslodze ir kudī lielāka, tā nav latvija kur pa dienu ~50 lidmašīnas pārlidinās. Ir arī situācijas kur vienlaikus un nosēšanos iet ~30 lidmašīnas ar piezemēšanās logu ~1,5 minūte. Un tagad neliela aizkavēšanās un gaisā kļūst biezs.
    c) Neatkarīgi no tā vai ir nosēšanās laiks vai ceļa laiks – kontaktu pazušana ar kontroltorni IR kritisks notikums.
    d) Bet par sofu – no 90o gadu sākumā taisītā softa migrētā versija uz Windows 2000 Advanced Server. tas ka taisītāji ir līkroči ir skaidrs, jo šo problēmu viņi taisās risināt iestrādājot informatīvo paziņojumu "well before system šuts down".
    Tā kaut kā.

    Atbildēt
  37. /dev/null

    karuuzo: bugs ir iekš tam, ka GetTickCount() tiek izsaukta divreiz. Izsaucot otrreiz brīdī, kad kā reiz notiek "wrap" uz 0, būs labs gļuks. Tas, protams, var gadīties reti, bet tomēr. A bet par noēstajiem "F" – tā liekas ir aizsardzība pret cūkotājiem, ēd nost vienādu simbolu virknes, liekas. Tūlīt pārbaudīsim: te jābūt 10 gab "A" -> "AAAA"

    Atbildēt
  38. ManInBlack

    nu sasmeejos es arii ne pa jokam. lai gan – mums te maajaas seezhot smiekliigi, bet shiem tur debesiis gan sirsninjas dauziijaas un gribeejaas geitsa tanti atspaardiit. 🙂

    Atbildēt
  39. piesis

    Savulaik strādāju ar SGI datoriem LU fizikas nodaļā un tos mums administrēja kaut kāds dzeks no Rīgas lidostas – cerams tie joprojām izmanto *nix sistēmas (laikam IRIX 6.x).
    Savaadaak toč nav droša sajūta…
    Arī Latvijas Dzelzceļš reiz bij iepircis lielu SGI serverīti – respect!

    Atbildēt

Atbildēt uz komentāru Jāzeps Atcelt atbildi

Tava e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *