Нужен совет по настройке VDS; Apache & множественые запросы
От: gribodemon  
Дата: 22.09.09 21:30
Оценка:
Доброго времени суток!
У меня на сервере стоит: OS GNU/Linux Debian 5.0, Apache, PHP, mySQL.
И есть PHP-скрипт, который очень часто (~5-10 раз в секунду) ловит запросы (HTTP POST) по 10-20 KB и вставляет их в mySQL базу.
Проблема в том, что мой сервер загибается под таким напором (VDS; 1GHz 1GB RAM) — заканчивается оперативка и в памяти висят куча процессов в состоянии sleeping (через top смотрел).
Я не могу понять где тут "слабое звено". Это Apache, который тратит много ресурсов на создание 1 процесса, при обращении к PHP-скрипту или тут дело в mysql ? Или вообще нужно взять нормальный выделенный сервер и это всё из-за Virtual DS.
Если кто-то сталкивался с этим, плз. расскажите что нужно настроить. Если нет, по подскажите системные мониторы какие-нибудь, где можно посмотреть как расходуется оперативка.
Так же, хотел бы поинтересоваться — в качестве временного решения: есть ли какой-нибудь софт, который убивает процессы, если происходит переполнение ОЗУ ? Смотрел OMM Killer — но там нельзя добавить исключения на, скажем, mysqld (т.е. он спокойно может грохнуть СУБД).
apache php множественные запросы
Re: Нужен совет по настройке VDS; Apache & множественые запр
От: Anton Batenev Россия https://github.com/abbat
Дата: 22.09.09 23:18
Оценка: 3 (1)
Здравствуйте, gribodemon, Вы писали:

g> Проблема в том, что мой сервер загибается под таким напором (VDS; 1GHz 1GB RAM) — заканчивается оперативка и в памяти висят куча процессов в состоянии sleeping (через top смотрел).


1) Ограничить максимальное количество процессов Apache через ServerLimit/MaxClients до разумного числа, чтобы не плодились, отключить KeepAlive, увеличить MaxRequestsPerChild.
2) Ограничить аппетиты MySQL по памяти (если InnoDB не используется — отключить этот движок вообще). Если используется MyISAM то вспомнить, что вставка данных лочит всю табличку и использовать, например, INSERT DELAYED.

g> Или вообще нужно взять нормальный выделенный сервер и это всё из-за Virtual DS.


Если есть возможность, то почему бы и нет.
avalon 1.0rc2 rev 304, zlib 1.2.3
Re: Нужен совет по настройке VDS; Apache & множественые запр
От: SHorrty Россия  
Дата: 23.09.09 08:35
Оценка: 3 (1)
Здравствуйте, gribodemon, Вы писали:

G>Проблема в том, что мой сервер загибается под таким напором (VDS; 1GHz 1GB RAM) — заканчивается оперативка и в памяти висят куча процессов в состоянии sleeping (через top смотрел).

G>Я не могу понять где тут "слабое звено". Это Apache, который тратит много ресурсов на создание 1 процесса, при обращении к PHP-скрипту или тут дело в mysql ? Или вообще нужно взять нормальный выделенный сервер и это всё из-за Virtual DS.

Скорее всего, память заканчивается именно из-за тяжелых процессов Apache.
Как вариант — поставить перед ним Nginx: Установка nginx как front-end к apache в Debian / Ubuntu

Кроме того, неплохо было-бы уменьшить размер стека по умолчанию (что очень актуально на VPS/VDS).
Добавить в /etc/init.d/rc ближе к верху:
"ulimit -s 1024"
Re[2]: Нужен совет по настройке VDS; Apache & множественые з
От: gribodemon  
Дата: 23.09.09 09:23
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>... отключить KeepAlive. ...


Вообще, KeepAlive будет работать, только если клиент в HTTP запросе будет слать что-то вроде: ?

Keep-Alive: 300
Connection: keep-alive
keep-alive
Re[3]: Нужен совет по настройке VDS; Apache & множественые з
От: Anton Batenev Россия https://github.com/abbat
Дата: 23.09.09 10:07
Оценка:
Здравствуйте, gribodemon, Вы писали:

g> AB>... отключить KeepAlive. ...

g> Вообще, KeepAlive будет работать, только если клиент в HTTP запросе будет слать что-то вроде: ?

Да. Кто является клиентом в твоем случае не знаю, по этому до кучи все равно не помешает.
avalon 1.0rc2 rev 304, zlib 1.2.3
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.