Кошмар ... три тижні чи близько того. Вчора ввечері я мріяв про список процесів верхньої команди Linux. Apache споживав все більше і більше пам'яті. Споживаючи, він споживає ядро ​​Linux і стає ядром Windows. І я не знаю, чому до того, як я прокинувся в холодному поту, з’явився Білл Гейтс, який мнувся соплями. Боже, який образ! Я не можу вийти з голови.

кошмар

За цей час я навчився «намагатися» оптимізувати як VPS, так і WordPress, щоб зменшити споживання пам'яті. Хоча я зробив деякі вдосконалення (на жаль, небагато), Apache продовжує збій; але я почну спочатку:

Чому саме VPS?

  1. За ціною: Я бачив VPS більш-менш за тією ж ціною, що і хостинг, і застосував вислів "великі осли вигулюють чи ні".
  2. Вчившись: Я ніколи не пробував VPS і хотів знати, як ним керувати, що з цим можна зробити. Ви не зіпсуєте стільки речей, скільки зі спеціалістом, і певною мірою у вас менше відповідальності, і це набагато дешевше. І це логічний крок перед тим, як керувати спеціальним, у якому ви є абсолютно самотніми.
  3. За уніфікацію моїх веб-проектів: У мене є п’ять доменів. Для кожного я планую створити з ними веб-сайт, або в деяких випадках він уже створений і працює в Інтернеті, в іншому я чекаю, що станеться з VPS, а інші лише прогнозуються. Наявність усіх веб-сайтів на одному сервері, оскільки вони не відвідують багато, дуже, дуже зручно, а також економічно.
  4. Для економії витрат: П’ять доменів, п’ять хостингів. Хоча є і дуже дешеві (від одного євро), вони завжди щось обмежують і мене не переконують.
  5. За свободу: Можливість робити і скасовувати, як мені заманеться, коротше кажучи, контроль над (віртуальною) машиною - це радість.

Особливості VPS

  • ОЗП: 256 МБ
  • Простір на диску: 5 ГБ
  • Щомісячний переказ: 150 ГБ
  • Операційна система: CentOS 5
  • Панель управління: Плеск
  • І, очевидно, решта звичних функцій: Perl, PHP, MySQL тощо, тощо, тощо.

Початок

Коли я найняв цей VPS, я був чортовим невігласом, тому, звичайно, я не знав багатьох речей про управління серверами, його оптимізацію і, перш за все, характеристики, які потрібно було ретельно дотримуватися перед тим, як наймати що-небудь (у VPS. У хостингу, У мене досить ідеї). На щастя, це був найдешевший xD.

З третього-четвертого дня апачі почали зазнавати невдач. Дані, які я отримував як від Plesk, так і від Virtuozzo, казали мені, що пам’ять насичується, а послуги припиняються. Звичайно, як невіглас я створив квиток до провайдера. Відповідь була швидкою (і тепер найбільш логічною), "оновіть свій VPS до вищого". Я не розумів, як вони можуть мені це сказати. Що це лише блог! Того дня, коли він досягає 100 відвідувань, я влаштовую батьківську вечірку! Пізде, це не Діг, ані Світ! Як могло статися, що, просто зайшовши на головну сторінку адміністрування (інформаційну панель WordPress), Apache вже зірвався? Як це було можливо?.

У моїй голові була лише одна ідея: "Ці хостинги хочуть отримати від мене більше грошей" (побачивши це зараз, в певному сенсі, він мав рацію). Але ця ідея не вирішує проблему, хоча моя впертість перетворила її на мантру, і як із запуском Apache або перезапуском контейнера, все працювало знову, так залишалося місяцями.

Перші спроби

Я не людина, яка легко здається. Я завжди кажу, що в обчислювальній техніці немає нічого неможливого, але мало бюджету. Тож я почав вивчати VPS, WordPress, Apache тощо. Мій браузер може підтвердити це (я використовую Opera), що зараз у мене відкрито близько 50 вкладок.

Першим ділом було знайти спосіб з’ясувати, скільки пам’яті займає WordPress. Я знайшов такий код:

$ memory_used = round (memory_get_usage (1)/1024,1);
echo 'Використана пам'ять:'. круглі (memory_get_usage ()/1024,1). „КБ“. $ memory_used. 'KB';

Цей код вказує пам'ять, яка була до запуску сценарію (яка зберігається у змінній $ memory_used і розміщується на початку файлу), і пам'ять, спожиту після виконання сценарію (яка розміщується в кінці). Місцеві дані, які я отримав, були такими:

9 плагінів: Використана пам’ять: 27462 КБ із 67,1 КБ
Без плагінів: Використана пам’ять: 20468,8 КБ на 67,2 КБ
Оновлення теми: Використана пам’ять: 21049,1 КБ із 67,1 КБ (використання теми, яку я зараз маю в блозі, замінюючи тему за замовчуванням)

На жаль, у мене немає даних VPS, але вони не сильно відрізняються. Зараз він споживає 29,5 МБ з вісьмома активними плагінами (це не ті самі плагіни, які вони змінили з тих пір) плюс тема.

Тести проводились з WordPress 3.0.1 з базою даних, як вона встановлена, під Windows з костюмом AppServ без змін.

Побачивши цифри, я був вражений: Wordpress споживає майже 20,5 МБ! Я провів тести з іншими версіями WordPress, щоб переконатися, що це було так, тобто, щоб переконатися, що з проходженням версій споживання пам'яті зросло. Що це не моя річ, а що це той лох. Хоча тут споживання пам'яті може змінюватися залежно від правил Apache mod_rewrite, оптимізації PHP та MySQL тощо. Винуватцем цього є не WordPress, але це відстій.

Побачивши побачене, настав час діяти.

WordPress на дієті

Я знав, що існує кілька плагінів, які дозволяють кешувати сторінки блогу та зменшувати споживання пам’яті та процесора, але я завжди бачив це в блогах з тисячами відвідувань, а не в мохливому із безкоштовною темою, яка не досягає ста відвідувань. на день (сумно, але правда).

Перший, хто активувався в блозі, wp-cache, мені знадобилося трохи, щоб встановити його, більше через мою недосвідченість у кешах, ніж будь-що інше (подивіться, наскільки простий плагін). Зрештою, я не знаю, що зі мною сталося, не пам’ятаю, я це деактивував. Шукав іншого.

WP Super Cache, ті, хто добре про це говорить, не брешуть, він чудово працює, налаштувати його трохи складніше, ніж wp-cache, але результат чудовий. Але блог все ще споживав майже 30 Мб пам'яті, і Apache зазнав аварії. Це трохи покращило стабільність блогу, принаймні для самого відвідувача. Але у мене все ще була та сама проблема: як тільки я зайшов на робочий стіл Apache, він почнеться.

До цього я протестував кожен з плагінів, щоб побачити, який саме з них викликає збій Apache, як тільки я зайшов у адміністрацію блогу. Виною тому була статистика WordPress.com, стабільність значно покращилася завдяки відключенню цього плагіна. Кілька днів я думав, що проблема вирішена, і ніщо не може бути далі від істини. Хоча блог споживав менше пам'яті, як тільки він робив щось, що вимагало більше зусиль від оперативної пам'яті, Apache зазнав аварії. Просто ввівши кілька разів на робочий стіл блогу або активувавши плагін, Apache вийде з ладу. Це засмучувало.

Один із плагінів, про який я не знав, - це DB Cache Reloaded. Як вказує його назва, це дозволяє кешувати запити до бази даних, не дозволяючи підключатися до бази даних кожного разу, коли надходить запит до неї. Зменшити споживання ресурсів. Добре. Він активований і працює чудово, хоча на даний момент не завершує кешування всіх запитів. Мені доведеться зрозуміти, чому.

Але проблема продовжувалась, Apache розбивався. Вам потрібно було увійти на сервер.

SSH

Треба визнати, що я ніколи не підключався до іншого комп’ютера через SSH, так через VNC та VPN.

В основному я працюю з Windows XP SP3, але я не викликаю огиди до дистрибутивів Linux, навпаки: у VirtualBox у мене встановлені Debian, CentOS, Ubuntu та ChromeOS, крім проблеми налаштування графічної карти, якої я ще не досяг ( Я думаю, що VirtualBox не розпізнає його і з якихось причин надсилає сумісну відеокарту в ОС з тією, що є у мене, але це змушує мене мати роздільну здатність 800 × 600).

Ну, чому я рахую це? На додаток до того, чому я хотів сказати комусь xD, оскільки так ви зрозумієте, що після декількох спроб підключитися до сервера за допомогою різних програм Windows, віртуальна машина почне підключатися через консоль Linux. Благословенний ти !. Поки я не виявив, що мені не вдається отримати доступ до порту. Невігластво приносить щастя!.

Після підключення до сервера перше, що я зробив, - це верхня частина машини, яка в реальному часі знає споживання оперативної пам’яті (а не молока).

Це вказувало, що у нього було 512 МБ загальної оперативної пам'яті, а споживана пам'ять коливалася між 170 і 220 МБ, хоча в деяких вона могла досягати 270 МБ. Проблема в тому, що VPS не має 512 Мб оперативної пам'яті, а 256 Мб; інші 256 - це спільна пам’ять, тому я не можу розраховувати на неї для обчислення.

Я також зробив безкоштовний -m для перевірки пам'яті, але top дає мені більше даних.

Я зауважив, що коли сервер запитується про сторінку Apache, він сам виконує чотири процеси, в різних випадках споживаючи 12 відсотків оперативної пам'яті. Звичайні 10 відсотків.

Йдіть за Apache

Оптимізуйте Apache. Мені знадобилося півтора яйця, щоб знайти розташування файлів конфігурації, але коли я розбиваюся… (/ etc/httpd/conf на CentOS). Ну, я прочитав, що внесення певних змін у файл httpd.conf Apache може зменшити споживання пам'яті. За замовчуванням конфігурація Apache була такою:


StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000


StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 30
MaxClients 30
MaxRequestsPerChild 40000

Це мало що вирішило, або принаймні я цього не помітив. Я також зменшив ще кілька параметрів, наприклад час очікування Apache, щоб закрити постійне з'єднання тощо.

Це все одно не покращилось. Спробуємо базу даних

MySQL

Невелику оптимізацію я зробив тут, справді. Я щойно додав конфігурацію, щоб увімкнути кеш БД, але це не зробило багато. Можливо, це також пов’язано з тим, що плагін WordPress, який кешує запити, вже робить це. Я не знаю. Конфігурація така:

query_cache_type = 1
query_cache_limit = 1 млн
query_cache_size = 8M

PHP

Для оптимізації PHP мені потрібно було встановити Eaccelerator і Zend Optimizer на VPS, кілька моїх спроб змусили мене думати, що я не можу встановити нічого, крім Plesk, або що потребує команди yum. Тому станом на сьогодні PHP не оптимізований, нам доведеться надіслати квиток, щоб перевірити, чи встановлять його мені ...

Vps

CentOS споживає пам'ять, як і всі ОС, коли я бачив споживання пам'яті без Apache, воно становило від 60 до 80 МБ. Але не лише операційна система споживає оперативну пам’ять, Plesk також споживає свою власну (близько 50 МБ), я вимкнув антивірус, який споживав 70 МБ кожного разу, коли він запускався. Але хоча VPS стабілізувався, бувають випадки, коли Apache має чотири відкритих процеси по 50-60 МБ кожен (відповідно до верхньої команди). Надмірна.

Я намагався створити SWAP-файл, але команда swapon заборонена, принаймні SSH.

ВИСНОВКИ

  • Я продовжую оцінювати різні варіанти щодо оптимізації VPS, зараз найкращим моїм активом є Eaccelerator і те, що вони встановлюють його у VPS, щоб зменшити пам'ять.
  • Я продовжуватиму тестування з деякими плагінами WordPress, щоб побачити, як це працює.
  • Якщо ви бажаєте найняти VPS, будьте обережні з оперативною пам’яттю.
  • Я навіть розглядав можливість зміни VPS або розширення його з тією ж компанією або переходу до іншої, це буде видно у вересні.
  • Найкраще з усього цього: те, що ви дізналися по дорозі. Я не тільки трохи краще знаю системи Linux, але також Apache, PHP, MySQL та Plesk та їх адміністрування.
  • Ну, а як щодо вас? Який досвід ви мали з VPS? Яку пораду ви можете мені дати? або просто що ти думаєш? Коментарі ваші ... поки Apache дозволяє xD.

ПОСИЛАННЯ

Я залишаю вам кілька посилань і тим самим звільняю браузер від завантаження, погано.