Оптимизация сервера — ускоряем веб-сервер Apache с nginx

Быстрая и стабильная работа сервера важна для любого сайта. Для меня этот вопрос приобрел особую важность, так как я пользуюсь скалированным виртуальным сервером в облаке, проще говоря плачу только за потребленные ресурсы.
Пробовал много вариантов, но такой оказался самым дешевым и надежным. Главное чтобы руки из нужного места росли и самому не подвесить сервак кривым сайтом 🙂
А вот ссылка на сайт с облачным хостингом: http://clodo.ru/

Не скажу, что мой сервер очень нагруженный. На нем порядка 50 сайтов с посещаемостью не более 100 человек в день каждый, т.е. не более 5000 посетителей в день.
Конфигурация сервера:

  • Ubuntu-11.04-64 bits
  • Оперативная память — 768MB — 2GB (минимум и максимум — если не хватает, то автоматом подключается доп. оперативка)
  • Процессор — 14 core
  • Дисковое хранилище — 20GB

Я стал замечать, что потребление оперативной памяти нестабильно и завышено, как и количество дисковых операций. Увеличил количество оперативной памяти (минимальный) с 500 Мб до 750 МБ и проблема исчезла — потребление RAM немного сократилось, количество дисковых операций уменьшилось в разы.


Выяснилось, что проблема была в Apache — ему не хватало памяти и он начинал грузить процессы из оперативки на диск, что в свою очередь требовала долонительной оперативки, из-за чего он начинал грузить на жестки диск все больше. В общем Apache из нехватки оперативки подвешивал сам себя.
На каждого посетителя на Apache выделяет отдельный процесс весом 50 Mb RAM.
Уставил дополнительно nginx, он служит интерфейсом для Apache: nginx запускается под апачем и выделяет на каждого посетителя чуть более 100 КБ. Оптимизация на лицо:

30 августа я увеличил минимальную RAM
7 сентября установил nginx

На графике видно, что сначала уменьшилось количество дисковых операций и немного уменьшился расход оперативки, затем расход оперативки стабилизировался (нет резких колебаний благодаря nginx).
Вообще, у меня эффект от nginx заметен не сильно, ввиду низкой посещаемости. nginx просто необходим высоконагруженным проктам, там эффект будет значительным.

Что такое nginx?
nginx (англ. engine x) (по-русски произносится как э́нджин-э́кс) — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X, AIX и HP-UX). Начиная с версии 0.7.52 появилась бинарная сборка под Microsoft Windows.

Установка nginx:
aptitude install nginx
/etc/init.d/nginx start

В общем такие нехитрые манипуляции помогли мне дополнительно сэкономить на хостинге.

П.С. все скриншоты с нагрузками из облачного хостинга, ссылка на него чуть выше.

Обсуждение закрыто.