Mums atrodė, kad po paskutinių lūžimų atradom kur problemos. Bet paaiškėjo kad tik laikinai. Serveris auga, duomenų bazės didėja ne dienom o valandom, lankomumas irgi didėja labai greitai. Todėl ankstesnis sprendimas buvo tik bėdų atitolinimas. Apribojom apache skaičių, nes ėmė aiškėti, kad kartais netikėtai greitai pritrūksta atminties, pereina į swapą, tada prasideda LABAI LĖTAS darbas ir tada serveris nueina į mirties spiralę jau nuo įprastų apkrovų. Atrodė, kad ir kažkokie memory leaking dalykai gali būti, todėl padarėm, kad apačiai mirtų po kiek laiko. Todėl atrodė, kad viskas ramu.
Vakar ryte, apie 8:30 serveris mirė. Kaip tik blogerių šventės proga. Tuo metu neturėjo būti jokių apkrovų. Po perkrovimų ir kapstymų lyg ir nieko įdomaus neradom, bet šiandien ryte, apie 6:30 serveris vėl mirė. Irgi taip pat netikėtai. Pakėlus serverį, jokių aiškesnių dosinimo požymių nesimatė, apkrovos buvo normalios (su visais servisais svyravo apie 0-20 procentų apkrovos per procesorių, 20 procentų naudojamos atminties).
MySQL slow query logas neparodė nieko aiškaus. Nepaisant to, jau optimizavom kai kurias SQL užklausas (radom tokių, kur laikai trukdavo ~7 sekundes). Išmetėm porą pluginų, susijusių su elektroninio pašto siuntimu pagal komentarus (šiuos labai smarkiai puolė spameriai, sukeldami apie 90 procentų nuolatinių serverio apkrovų ir daugumą lėtų SQL užklausų – atrodo, yra mechanizmas, leidžiantis spaminti per komentarų prenumeratą).
Visai tik ką (maždaug prieš valandą), atrodo, radom vieną galimą priežastį griuvimams (aišku tik spėjam), nes serveris staiga ėmė ir parėjo į mirties spiralę, stebint gyvai (pora gigų atminties suėdė per 1-2 sekundes). Visus apačius nukilinom, loge radom ko nematėm anksčiau: keli šimtai kreipimųsi per sekundę iš Kinijos, paskui ir iš kito IP. Pasirodo, kažkokia kompanija sugalvojo kažkokią „paiešką“ daryti (UserAgent – COMODOspider/Nutch-1.0, vienas iš adresų – „search.comodo.com“). Kiek radom internete, ne mes vieni kenčiam, nes kompanija greičiausiai užsiima kažkokiu spamu. Problema, kuri neleidžia atsipalauduot yra tokia: ankstesniuose griuvimuose šitas botas nedalyvavo niekaip.
Padarėm kol kas labai paprastai: banai ant dviejų IP/subnetų per .htaccess (91.212.12.* ir 114.255.52.*). Žiūrėsim, ar dar panašių dosintojų nerasim. Pasimelskit už mus, nes jei čia kažkoks botnetas šposus daro mums, tai visam popo.lt gali būt batai. Nors ir nesuprantam, už ką.
One thought on “Viskas atsitinka, kai to jau nesitiki”