Kokias užklausas vykdo Jūsų Web serveris?

May 18th, 2012 No comments

Kartais prireikia greitai pamatyti kokia web serverio užklausa ar svetainė eikvoja daugiausiai procesoriaus laiko. Tačiau tokios komandos kaip top rodo tik bendrą vaizdą:

TOP

TOP

 

 

 

 

 

 

 

 

Esant dideliam serverio apkrovimui, reikia skubiai nustatyti svetainę, kuri naudoja daugiausiai resursų, tam kad ją būtų galima neutralizuoti ar kitaip išspręsti iškilusią apkrovimo problemą.

Taip, galima būtų pasinaudoti server-stats puslapiu, kurį pateikia Web serveris, tačiau tai varginantis darbas, mat ten neatsispindi procesoriaus apkrovimas. Taigi, mums reikėtų įrankio, aptikti tokiai svetainei iš komandinės eilutė.

Toks būdas yra ir jis telpa į vieną eilutę. Pradėkime ją konstruoti.

Pradėkime nuo to, kaip galima sužinoti kokios svetainės kodą šiuo metu vykdo procesas. Tokia informacija yra /proc sistemoje. Kiekvienas procesas, pagal jo ID numerį, /proc kataloge turi savo katalogą, kur yra saugoma su procesu susijusi informacija. Viena iš to katalogo nuorodų rodo vykdomą katalogą, iš esmės tai, ko mums ir reikia.

ls -l /proc/<PROCESO ID>/cwd

Rezultatas bus eilutė su keliu iki svetainės, kurios kodas šiuo metu vykdomas.

Svetainę pagal proceso ID jau mokame rasti, tačiau tai mažai mus gelbėja, mat kiekvieną kartą visų procesų ID tikrinti negalime, o ir procesai kuriasi ir išnyksta labai greitai. Mums reikalingas automatizuotas būdas.

Antras etapas, tai rasti visų web serverio procesų sąrašą. Tai atliekame su šia komanda:

pidof httpd

Žinodami mums reikalingų procesų ID numerius, galima greitai išgauti ir svetainių pavadinimus, tam mums reikės kiekvieną proceso ID prasukti pro ciklą ir patikrinti kokios svetainės kodą tas procesas vykdo. Kartu išgausite ir kiekvieno proceso procesoriaus sąnaudas. pilna komanda atrodys taip:

for i in `pidof httpd`; do

echo `ps -o pcpu $i` `ls -l /proc/$i/cwd|awk ‘{print $NF}’`|grep -v ‘/$’;

done

| awk ‘{print $2, $3}’

Ją galite sutrumpinti ir įvykdyti vienoje eilutėje. Rezultatas gali atrodyti taip:

 

 

 

 

Categories: Linux, Pradžiamokslis Tags: , , ,

Nemokama knyga debian administratoriams

May 11th, 2012 No comments

Norėčiau pasidalinti puikia nuoroda, laisvam skaitymui yra pasiekiama Debian kūrėjų išleista Debian administravimo knyga. Ją galite skaityti internete ar parsisiųsti. Štai nuoroda:

http://debian-handbook.info/

Gero skaitymo ir mokymosi!

Categories: Linux, Naujienos, Pradžiamokslis Tags:

Kraustomės į debesis?

April 4th, 2012 No comments

Categories: Linux, Naujienos Tags:

Kaip kuriamas Linux?

April 4th, 2012 No comments

Pažintinis filmukas apie taip, kaip kuriama Linux sistema, kaip vienoje komandoje dirba šimtai žmonių iš viso pasaulio.

Categories: Linux, Naujienos Tags:

Google Charts žemėlapis

March 28th, 2012 No comments

Neseniai atradau naudingą ir patogią Google docs galimybę – nupiešti žemėlapį su galimybę pažymėti reikiamas šalis. Toks įrankis gali būti naudingas pažymint aplankytas vietoves, ragautus įvairių šalių patiekalus arba tiesiog nurodant kuriose šalyse gyvena mūsų klientai, ką padarėme mūsų atveju. Šiuo metu turime klientų iš pusšimčio pasaulio šalių.

Tokį žemėlapį galima pasidaryti per kelias minutes pasinaudojus specialiu įrankiu:

http://code.google.com/apis/chart/image/docs/chart_wizard.html

Categories: Naujienos Tags:

PHP 5.4 jau mūsų HOSTINGAS.IN serveriuose

March 5th, 2012 No comments

Kovo 1 dieną buvo išleista ilgai laukta stabili PHP 5.4 versija. Kadangi didelių pokyčių, lyginant su PHP 5.3 šaka, čia nėra, nusprendėme savo serverius su PHP 5.3 atnaujinti į PHP 5.4. Taigi, kokios funkcijos buvo išjungtos šioje šakoje:

  • Safe_mode ir visi susiję nustatymai;
  • Magic_quotes – susijusios funkcijos visada grąžina FALSE reikšmes;
  • Register_globals;
  • Call_time_pass_by_reference;
  • ir t.t.

Kitos panaikintos funkcijos yra dar mažiau reikšmingos nei šios, tad jų neminėsiu. Detaliau apie pokyčius galima rasti oficialioje svetainėje:

http://lt.php.net/migration54

Kas įdomu, kad kūrėjai su šia PHP versija žada ženklų našumo padidėjimą, net iki 30%. Laukiame ir savo klientų tą išbandyti ir įsitikinti.

Užsakyti paslaugas su PHP 5.4 versija galite mūsų svetainėje: HOSTINGAS.IN

Išleista nauja Apache Web serverio 2.4 šaka

February 23rd, 2012 No comments

Kaip jau aišku iš pavadinimo Apache išleido naują šaką – 2.4. Patys kūrėjai tą šaką vadiną geriausia ir rekomenduoja naudoti būtent ją. Pataisymų ir atnaujinimų sąrašą galima rasti šioje svetainėje:

http://httpd.apache.org/docs/2.4/new_features_2_4.html

Categories: Linux, Naujienos Tags:

Linux įvesties/išvesties posistemė. 5 dalis.

February 10th, 2012 No comments

anticipatory algoritmas

Aplikacija, inicijavusi skaitymo užklausą iš tam tikro disko bloko gali inicijuoti užklausą į gretimą bloką po tam tikro laiko. Tačiau, daugeliu atveju, po to trumpo laiko diskas jau būna pasisukęs į tolimesnes pozicijas. Kaip rezultatą gauname aplikacijos sulėtėjimą.

Sprendžiant šią problemą anticipatory algoritme buvo įgyvendintas delsimas po kiekvienos užklausos iki bus vykdoma kita užklausa. Tokiu būdu aplikacijai suteikiamas tam tikras laikas iki ji pateiks kitą užklausą. Ir jeigu kita užklausa bus sekančiame disko bloke, algoritmas užtikrins, kad ta užklausa būtų vykdoma anksčiau nei pasikeist disko galvutės pozicija.

Šio algoritmo naudojimas reikš įvairų delsimų būvimą po kiekvienos užklausos. Tad rinktis šį algoritmą reikėtų labai atsargiai. Paprastai jis pasiteisina, jei serveryje veikia specifinė aplikacija, su numatytais skaitymais. Tuomet šio algoritmo naudojimo atnešami privalumai atperka sulėtėjimą dėl delsimų. Serveriams šis algoritmas nėra tinkamas.

noop algiritmas

Iš visų algoritmų, šis algoritmas yra pats paprasčiausias. Jis visas užklausas stato į vieną nerikiuotą eilę ir užklausas vykdo FIFO būdu, t.y. vykdoma pirma atėjusi užklausa. Algoritmas neturi jokių konfigūruojamų parametrų.

Toks algoritmas paprastai naudojamas įrenginiuose, kur nėra svarbus paieškos laikas, pavyzdžiui flash atminties įrenginiuose. Taip pat toks algoritmas gali būti naudojamas sistemose, kur užklausų valdymas yra realizuotas aparatiniame lygyje.

Tai paskutinė straipsnių apie Linux įvesties/išvesties posisteme dalis.

 

PHP 5.3.10

February 3rd, 2012 No comments

Ką gi, buvo išleistas PHP 5.3.10, kur ištaisyta prieš tai minėta klaida. Skubame atsinaujinti.

Categories: Uncategorized Tags:

PHP 5.3.9 pažeidžiamumas

February 2nd, 2012 No comments

Paradoksalu, tačiau ištaisant vieną klaidą padaroma kita. Taip šiuo atveju įvyko su PHP 5.3.9 versija. Kiek anksčiau rašiau apie Hash reikšmių pažeidžiamumą, kovojant prieš kurį buvo įvestas naujas kintamas max_input_vars, kuris nustato maksimalų įeinamųjų parametrų kiekį užklausoje.

Taigi, naujame kode, kuris atsakingas už šio parametro tikrinimą buvo įvelta klaida, kuri leidžia įvykdyti kenkėjišką kodą. Kodą galima įvykdyti tokiu atveju, jei max_input_vars reikšmė viršija 1000.

Pažeidžiama funkcija:

php_register_variable_ex (php_variables.c@194):

  1. PHPAPI void php_register_variable_ex(char*var_name, zval *val, zval *track_vars_array TSRMLS_DC)
  2. {
  3. /* … */
  4. if(is_array){
  5. /* … */
  6. while(1){
  7. /* … */
  8. if(zend_hash_num_elements(symtable1)<= PG(max_input_vars)){
  9. if(zend_hash_num_elements(symtable1)== PG(max_input_vars)){
  10.                 php_error_docref(NULL TSRMLS_CC, E_WARNING,“Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.”, PG(max_input_vars));
  11. }
  12.             MAKE_STD_ZVAL(gpc_element);
  13.             array_init(gpc_element);
  14.             zend_symtable_update(symtable1, escaped_index, index_len +1,&gpc_element,sizeof(zval *),(void**)&gpc_element_p);
  15. }
  16. }
  17. /* … */
  18.         symtable1 = Z_ARRVAL_PP(gpc_element_p);
  19. /* … */

P.S. SVN versijose ši klaida jau ištaisyta, tad lieka laukti oficialaus atnaujinimo.