Как да намалим натоварването на процесора за сайт на споделен хостинг?

Как да намалим натоварването на процесора за сайт на споделен хостинг?

Днес Георги Стефанов от ganbox.com ще говори за интересните неща ... за нещата от живота - за това "Как да намалим натоварването на процесорното време на сайта си?"... и казвам нещата от живота, защото всъщност доста потребители търсят отговорите на именно този въпрос. Ето и отговорите на Най-често срещаните причини за превишено CPU време на хостинг сървър и още няколко малки тайни...

*Оптимизация на времето на процесора*

Много сайтове ползват споделен хостинг (shared hosting), заради ценовото предимство на тази услуга. При хостване на сайт на споделен хостинг има ограничение на ресурсите, които сайтът може да използва. Например до 170GB трафик към сайта и до 21 минути процесорно време на месец. Тези ограничения се налагат от хостинг доставчиците с цел да се гарантира нормалната работа на всички сайтове, които споделят общите ресурси на сървъра. В тези минути CPU време се включва, както времето за обработка на заявките към базата данни (но не и ресурса на mysql сървъра), така и времето за обработка на скриптове като PHP и Perl файлове и др. Тези времена се събират за получаване на общото изразходвания CPU ресурс. При увеличаване на един от тези параметри, се увеличава сумарното време и това ще доведе до изпращане на сигнал към хостинг доставчика, ако бъде превишена горната граница на допустимия за хостинг пакета ресурс. В най-добрия случай ще започнете да получавате уведомителни имейли от хостинг доставчика, че трябва да оптимизирате сайта, за да не отнема над разрешените сървърни ресурси или да закупите повече ресурси – по-висок ценови план. Ако не бъдат взети мерки, сайта може да бъде временно недостъпен или с ограничена достъпност до отстраняване на проблема, предизвикващ натоварването.

Как да оптимизираме времето за обработка на скриптове?

В CPU времето не се включва времето за сервиране на статично съдържание, като HTML, JS, CSS, IMG, TXT, PDF файлове и др. Но ако има включено излишно компресиране на статични файлове, това ще натовари сървъра допълнително. При пресмятане на времето трябва да се има предвид, че 1 минута процесорно време е времето, за което едно процесорно ядро ползва процесора на 100% или 2 ядра ползват процесора половин минута на 100%. Съвременните процесори имат по 16 и повече ядра и обикновено си разпределят натоварването така, че никога не ползват 100%, а по-малък процент дори при тежки операции. Също така, обикновено един скрипт се изпълнява за хилядни части от секундата и само прекалено честото му изпълнение може да доведе до значително увеличаване на CPU времето. Ето защо 21 минути на месец обикновено е напълно достатъчно процесорно време, дори за силно посещавани сайтове.

Най-често срещани причини за превишено CPU време на хостинг сървър

Преди всичко проблема трябва да се изследва, като се прегледат сървърните логове и статистики, за най-често ползваните скриптове и от къде най-често се посещава сайта. След това може да се измери всеки един от модулите на сайта, колко процесорно време изразходва. Най-честите причини за превишени сървърни ресурси са:

  1. Използване на онлайн чат за връзка с клиентите, когато се ползва сървърен скрипт, например ShoutBOX. Ако натоварването идва от този модул, може да потърсим решение, което не се хоства на нашия сървър, а от трета страна.

  2. Динамични картинки – динамични размери на малки изображения (thumbnail) или слагане на воден знак (watermark) в реално време върху изображенията. Този проблем се решава лесно с преработване на софтуера по такъв начин, че малките изображения да са създадени предварително. Същото важи и за водния знак, като поставянето над изображението се прави още при качване на снимката, а не по време на показване на снимката в сайта.

  3. Софтуер за управление на реклами (ad server). Решава се с хостване на софтуера за реклами на отделен сървър.

  4. Статистически модули, собствено хостван уеб брояч или модули за рейтинг на публикации. Решава се с подмяна на модулите с други подобни, които изискват по-малко ресурси.

  5. Завишено посещение от роботи – автоматични скриптове паяци обхождащи сайта. Оптимизирането тук е доста по-трудно. Можем лесно да спрем всички роботи, но това ще доведе до спиране на важни роботи, като тези на Google и Bing и ще доведе до влошаване на класирането на сайта. Трябва подробно да се изследва всеки един робот и да се вземат мерки според случая.

Стандартни мерки са ограничаване на роботи, които не посочват своето име, сe постигат като във файла .htaccess се добави кода:

RewriteCond %{HTTPUSERAGENT} ^$

RewriteRule .* – [F]

Може да се добави във файла robots.txt следната инструкция, която казва на роботите да изчакват 20 секунди между посещенията на две страници от сайта:

Crawl-delay: 20

За съжаление много роботи не се съобразяват с нея и трябва да се блокират ръчно.

  1. Автоматичен крон скрипт, който периодично изпълнява тежка операция, като преиндексиране, архивиране на SQL таблици или файлове и др. Решението на този проблем е чрез намаляване честотата на изпълнение на автоматичния скрипт и по възможност преместване на стартирането му в по-слабо натоварени часове от денонощието.

Други мерки за намаляване на натоварването е пренасочване на трафика към сайта през CDN (Content Distributed Network) услуга, например CloudFlare. Което дава възможност за филтриране на посещенията от някои държави като Китай, Корея и др., както и спестяване на трафик при повторно ползване на статично съдържание от сайта, например картинки, CSS и др.

2. Оптимизиране на времето за обработка на заявките към базата данни.

Най-честите проблеми при завишено време за обработка на SQL сървъра се дължат на грешно проектирана база данни или липса на подходящи индекси.

Понякога таблиците на базата имат индекси, но се случва да е добавена нова тежка заявка, която търси по една или повече колони от таблица, която няма индекс. Проблемът се решава сравнително лесно, като опитен администратор на бази данни преглежда всички заявки и индексите, които ползват. При създаване на подходящите индекси, увеличението на скоростта е чувствително.

Друг често срещан проблем е често извикване на тежка заявка, например в началната страница. Много често този проблем може да се реши, чрез използване на кеширане на заявката към базата данни.

Важно е да се отбележи, че скоростта на сайта и процесорното време не винаги са свързани. Често, когато един сайт е бавен, той има и завишено процесорно време, в такъв случай задължително трябва да се открие проблема и сайта да се оптимизира. Но е възможно сайта да върви бързо и да не може да се оптимизира повече, в такъв случай повишеното процесорно време се дължи на увеличените посещения и единственото решение е закупуване на повече ресурси.

Статията е любезно предоставена от:

Автор: Георги Стефанов от Ganbox – SEO услуги за лесно откриване на бизнес сайт.

Етикети: #sajta-da-varvi-barzo #protsesorno-yadro #spestyavane-na-trafik #sql-sarvara #fajla-htaccess #optimizirane-na-vremeto #baza-danni #resursi-na-sarvar #rss #kron-skript #optimizirate-sajta #protsesorno-vreme #cpu-vreme #spodelen-hosting #optimizirane