Môj web je pomalý/využitie CPU je príliš vysoké/počet procesov
Môže sa stať, že ste od nás dostali správu, že váš web príliš zaťažuje CPU (procesory v serveroch) alebo používa príliš veľa procesov. Môže to byť jednoducho spôsobené veľkým počtom návštevníkov, ale v 99,9 % prípadov to nie je príčina.
Niektoré veľké/náročné weby (napríklad e-shopy) potrebujú už pri bežnom používaní viac výpočtového výkonu ako iné weby. Ak ste presvedčení, že web funguje správne, nasledujúce informácie sa vás netýkajú. V takom prípade je možnosťou prejsť na výkonnejší hostingový balík, ktorý má viac výpočtového výkonu. Pozrite si naše hostingové balíky tu.
Nižšie stručne vysvetlíme, čo môže byť príčinou vysokého využitia CPU. Ak nadmerné využitie CPU nevyriešite (včas), môže to viesť k (automatickému) obmedzeniu vášho účtu/webu. Keď sa využitie CPU opäť dostane do normálu, váš web sa automaticky znova zapne. Ak sa to však v krátkom čase stále opakuje, nakoniec sa už automaticky nezapne
Tieto opatrenia sú potrebné na ochranu serverov pred preťažením. Keď preťaženie vyriešite, nielen znížite využitie CPU, ale váš web bude aj výrazne rýchlejší, a teda oveľa príjemnejší na návštevu.
Pomalý web a pluginy
Weby vytvorené napríklad vo WordPresse alebo v Joomle môžu niekedy trpieť pomalosťou. Takmer vždy je príčinou plugin, ktorý nefunguje správne alebo je jednoducho zle vyvinutý. Ak vás trápi pomalosť, odporúčame na chvíľu vypnúť všetky pluginy a pozrieť sa, či je web potom rýchly. Ak áno, zapínajte pluginy postupne jeden po druhom a zakaždým vyskúšajte, či je web stále rýchly, až kým nenájdete vinníka.
Pomalý web pre veľa záznamov v databáze
Ďalšou príčinou pomalosti môže byť to, že v databáze je toľko záznamov (niekedy vidíme aj mnoho miliónov záznamov), že to webu škodí. Často ide o štatistické tabuľky alebo tabuľky, do ktorých sa niečo zapisuje (logy). Normálne by to nemal byť problém, ale ak tabuľka v databáze nie je dobre navrhnutá a vyhľadáva sa vo veľkom množstve údajov bez správneho indexu, môže to spôsobiť veľkú pomalosť.
Vyrovnávacia pamäť vášho lokálneho prehliadača
Pravidelne sa stáva, že pomalý nie je server, ale váš vlastný prehliadač, pretože má príliš plnú vyrovnávaciu pamäť (cache). Skúste túto vyrovnávaciu pamäť vymazať a/alebo vyskúšajte iný prehliadač, či je to aj tam pomalé. Pozrite si napr. http://www.ehow.com/how_8618453_fix-slow-firefox-ie8-browsers.html
Logy Apache / zoznam procesov
Ak ste od nás dostali správu o CPU, môže byť na konci tohto e-mailu zobrazený zoznam procesov a IP adries. Z tohto zoznamu sa dá možno leccos vyčítať, ale je tiež možné, že zoznam tam nie je alebo toho veľa neobsahuje. V takých prípadoch môžu pomôcť logy. Nájdete v nich totiž informácie o všetkých návštevníkoch vášho webu a o tom, ktoré súbory si v ktorom okamihu vyžiadali. Prejsť si tieto súbory okolo času hlásenia sa oplatí a môže to dobre naznačiť možné problémy. Tieto informácie nájdete v takzvaných logoch Apache. Môžete si ich pozrieť v ovládacom paneli v časti Súhrn stránky / Štatistiky / Logy a potom Úplný log chýb/log využitia pre log z dnešného dňa. Logy z predchádzajúcich dní nájdete v časti Uložené logy Apache. Tieto logy si môžete pozrieť aj cez FTP alebo správcu súborov v priečinku /domains/vasadomena.xx/logs. Upozorňujeme, že pre subdomény sú v menu subdomén samostatné logy.
Mám sa obávať?
Nie hneď. Až keď tieto upozornenia dostávate veľmi pravidelne, pravdepodobne ide o niečo štrukturálne. Falošné hlásenia sa zvyčajne naozaj nevyskytujú, okolnosti sa však v jednotlivých okamihoch líšia. Skript alebo dotaz, ktorý nie je dobre napísaný, môže bežne fungovať bez problémov, ale v čase, keď je na danom serveri väčšia prevádzka, môže napríklad predsa len spôsobiť upozornenie.
Možné príčiny nadmerného využitia CPU
- Na webe máte fotoalbum a namiesto zmenšenej verzie fotografií máte na webe ich plnú verziu. Keď potom fotografiu zobrazíte, CPU musí pôvodnú fotografiu, ktorá má niekedy aj mnoho MB, zmenšiť, kým sa môže zobraziť. Ak to robí naraz niekoľko návštevníkov, môže to viesť k vysokému využitiu CPU.
- Možné riešenia: na web dávajte iba zmenšené fotografie a, čo je najdôležitejšie, zabezpečte, aby rozmer, v ktorom fotografie zobrazujete, zodpovedal skutočnému rozmeru fotografií, takže server nemusí nič zmenšovať, ale iba zobrazovať. V prípade potreby dajte na web viac verzií, väčšie využitie miesta na disku je menej zlé ako väčšie využitie CPU.
- V nadväznosti na prvý dôvod: zobrazovanie fotografií cez program v PHP (streamovanie) je mnohonásobne pomalšie ako priame vloženie URL adresy fotografie.
- Možné riešenia: vkladajte priamu URL adresu fotografií, obrázkov a podobne a nenechávajte to prechádzať cez program v PHP. Je to pomalšie a zbytočne to zaťažuje CPU.
- Návštevníkom ponúkate možnosť komentovať článok, fotografiu alebo čokoľvek iné. Ak to nezabezpečíte takzvanou captchou alebo neobmedzíte iba na registrovaných používateľov, môžu to zneužiť spameri, a v dôsledku toho môže využitie CPU (extrémne) stúpnuť.
- Necháte webovú stránku každých X sekúnd automaticky znova načítať / obnoviť (refresh), čím sa CPU zbytočne zaťažuje.
- Možné riešenia: odstráňte zo stránky refresh. Zvyčajne je v hlavičke alebo prípadne v JavaScripte.
- Pre svoj web používate databázu. Vtedy je dôležité, aby bola táto databáza úplne optimalizovaná. Myslí sa tým najmä to, aby v nej boli dostatočné a správne indexy. Databáza s niekoľkými (desiatkami) tisíc záznamov/riadkov môže pri niekoľkých návštevníkoch a zlom alebo žiadnom indexovaní veľmi rýchlo viesť k problémom s výkonom.
- Možné riešenia: optimalizujte svoju databázu. AJ VTEDY, keď ide o štandardnú databázu. Ak napríklad používate osCommerce s niekoľkými záznamami, nič sa nedeje. Ak ho používate s veľkým počtom záznamov, optimalizácia bude naozaj potrebná. Nielenže sa tým výrazne zníži využitie CPU, ale aj váš web bude podstatne rýchlejší, a teda príjemnejší na návštevu.
- Váš web dlho bežal bez problémov a zrazu je pomalý a dostávate hlásenia o CPU.
- Možné riešenia: je veľká šanca, že problém sa nachádza v databáze. Postupom času do nej pribúda stále viac záznamov/riadkov a rýchlo sa dostaneme k predchádzajúcemu bodu, teda že databáza nie je dobre indexovaná. Je dôležité databázu dobre optimalizovať.
- Máte web s veľmi veľkým množstvom samostatných súborov. Ak v DirectAdmin spustíte správcu súborov, pravdepodobne dostanete dokonca timeout, pretože najprv chce načítať celú štruktúru adresárov a to trvá príliš dlho. V takom prípade nemôžete v DA používať správcu súborov a ste odkázaní na FTP. Ukladať viac ako 1.000 súborov do 1 adresára sa však nikdy neodporúča. Operačný systém s tým rýchlo začne mať problémy, zálohy sa spomalia, otváranie súborov sa spomalí atď.
- Možné riešenia: kde je to možné, používajte súbory zip alebo rar; vytvorte podadresáre/podpriečinky s najviac 500 až 1.000 súbormi v každom adresári/priečinku. V skutočnosti je však pre web najlepšie extrémne veľkým štruktúram súborov sa vyhnúť.
- Môže sa stať, že niektoré tabuľky vo vašej databáze nepozorovane narástli. Je dobré občas si databázu pozrieť cez phpMyAdmin a skontrolovať, či počet záznamov v jednotlivých tabuľkách zodpovedá vašim očakávaniam.
- Ak sú tam tabuľky s veľkým počtom záznamov, overte, či je to naozaj potrebné, a kde je to možné, tabuľky vyčistite. Ak to nejde, overte, či sa dá vaša databáza optimalizovať.
Procesy
Webový server zvládne naraz určitý počet procesov (počet procesov nemá nič spoločné s počtom návštevníkov). Zvláštnosťou procesu webového servera je, že je vždy aktívny len veľmi krátko. Doručí stránku používateľovi a potom je hotový. Zvyčajne sa to deje za zlomky sekundy, pri veľkých stránkach niekedy o niečo dlhšie. Takto môže jeden proces doručovať stránky používateľom pre veľmi veľa webov / návštevníkov. Keď procesy zostávajú otvorené, už sa nerecyklujú a časom sa zaplní pamäť servera a server sa stane nedostupným, najmä ak súčasne rastie aj počet návštevníkov. Ide teda o nežiaducu a nezvyčajnú situáciu. Ešte predtým automaticky zasiahneme a príslušný web sa deaktivuje.
Možné príčiny používania príliš veľkého počtu procesov
- Máte skript/program, ktorý sa pripája k inému serveru, napríklad cez curl, pripojenie zlyhá a váš program stále čaká. Ak sa to stane pri viacerých používateľoch, môže rýchlo vzniknúť problém.
- Zabezpečte, aby každé volanie malo vždy nastavený timeout. Nikdy nie viac ako 1 alebo 2 sekundy, pretože ak musí používateľ čakať dlhšie, aj tak odíde.
- Váš web je 'leechovaný'. To znamená, že niečo alebo niekto sa automaticky pokúša váš web skopírovať. Všetky časti, fotografie atď.
- Skúste z logu Apache zistiť IP adresy, ktoré to môžu spôsobovať, a skúste ich zablokovať. Článok o blokovaní IP adries nájdete v našich častých otázkach.
- Pri každom obnovení stránky načítavate RSS kanál z iného webu. To nie je rozumné, všetko to zbytočne spomaľuje a môže to spôsobiť aj tieto problémy.
- RSS kanály načítavajte iba každých X minút, a aj to iba vtedy, keď sú na webe návštevníci. Zabezpečte tiež, aby sa pri načítavaní týchto kanálov uplatnil timeout.
Pozrite si aj: https://www.weboke.nl/knowledgebase/192/DirectAdmin-Resource-Usage-en-performance-problemen-Resource-Limit-Is-Reached.html
