Kaip VDSe sutilpti į RAMą

Python ir kai kurių kitų kalbų programuotojai yra šiek tiek nuskriausti, nes jiems Lietuvoje niekas neteikia normalaus hosting'o. Taigi tokioje situacijoje iš esmės esi priverstas pirkti VDS/VPS paslaugą (arba susirasti kas duotų šitą malonumą už dyką). Žinoma, norisi sutaupyti vieną kitą litą ir perkamas hostingo planas, kuris nepasižymi dideliu RAM'o kiekiu. Ir, tiesa sakant, to RAM'o dažniausiai visiškai pakanka - reikia tik tinkamai susikonfigūruoti serverius. Kadangi dažniausiai sutinkama konfigūracija yra Apache + MySql tai šiek tiek apie juos ir pašnekėsiu. Labai daug nešnekėsiu, nes daugiau mažiau visą informaciją galima susirasti internete (nuorodas pridedu straipsnio gale), bet keletą mitų/nesusipratimų/greblių ant kurių užlipau pats atskleisiu.

Apache svarbiausia žinoti du dalykus:

  • Naudokit MPM worker (default), nesusigundykite prefork'u, nors pirmas įspūdis, kad prefork'as ryja mažiau atminties, bet jis yra labai klaidingas.

  • Susikonfigūravę worker modulį savo realybei nustatykite ThreadStackSize, nes default'as yra 8Mb. Tiek tikrai nereikia.

    <IfModule mpm_worker_module>
    ...
    MaxRequestsPerChild 100
    ThreadStackSize 500000
    </IfModule>

Aišku, galima nenaudoti apache'iaus iš vis (tarkim viena alternatyvų lighttpd su fastcgi). Asmeniškai naudoju apache'ių dėl mod_wsgi - fantastiškas modulis python programoms.

Dėl MySQL'o irgi galima padaryti įvairių dalykų, bet esminis, kuris pravers tiems, kurie turi tikrai mažai RAM'o būtų išjungti innodb - sutaupysite nei daug nei mažai - 100Mb RAM'o. Aišku teks susitaikyti su visų innodb teikiamų privalumų praradimu.

Tai tiek paprastų idėjų, kurios tikiuosi jums pravers.

Šaltiniai: