Сервер задыхается

Марат

Новичок
Сервер задыхается

Здравствуйте!

Есть сервер intel Core Quad x4 2.4GHz, 2gb RAM, HDD 2x320 RAID 1, Linux Debian
На нём работает пара малонагруженных сайтиков (в общей сумме 50к просмотров).
Последнее время идёт прирост пользователей. И в часы активности пользователей сервер очень долго думает перед тем, как отдать страницу (около 15-20 сек).
Нагрузка на процессор меньше 3%, оперативной памяти расходуется 450МБ Swap 0МБ
Пробовал смотреть время затраченное на генирацию страницы. В среднем 0.003 сек.
У Apache в такие минуты запущено около 150 нитей. Nginx нету (возможности его использовать тоже нету).
Подскажите в какую сторону стоит копать?
 

MiksIr

miksir@home:~$
Почему возможности для nginx нет?
Покажите десяток строк результата работы vmstat 1 в активные часы.
Используется ли СУБД, какая и сколько памяти ей дали (hint - дать ей побольше памяти).
 

Krishna

Продался Java
1. Насколько я понимаю, используется 2ой Апач и 150 нитей означает 150 параллельных запросов? Это ненормально для 50к хитов. Я бы посмотрел статистику сетевых соединений - с кем и сколько одновременных коннектов. Возможно это ДОС - попытка держать открытыми 80ый порт в холостую.
Вообще, вот это:
И в часы активности пользователей сервер очень долго думает перед тем, как отдать страницу (около 15-20 сек).
Нагрузка на процессор меньше 3%, оперативной памяти расходуется 450МБ Swap 0МБ
Пробовал смотреть время затраченное на генирацию страницы. В среднем 0.003 сек.
по логике вещей говорит о том, что узкое место - сеть. Но, если отбросить намеренный ДОС, то это возможно только если у сервера совсем дохлый канал, или бОльшая часть пользователей сидит на очень слабой последней миле, типа ГПРСа, и в связи с этим упирается в лимит тредов/сетевых соединений. Сайт не ВАП случайно? Число сетевых соединений ограничено конкретным, или прыгает в примерном диапазоне? (Смотреть netstat)

2. Возможно, проблемы с жёстким диском, сказывающиеся в задержках произвольного чтения файлов? Можно попробовать проверить нагрузку не только через ab главной, но через запрос различных урлов.

-~{}~ 12.09.08 02:48:

Используется ли СУБД, какая и сколько памяти ей дали
Не согласуется с мелким временем генерации, хотя еще непонятно как он мерял.
Кстати, вообще, не хватает статистики по нагрузке на I/O.
 

MiksIr

miksir@home:~$
Сеть... вряд ли, если дос или просто много соединений, симптомы другие - соединения отваливаются, режектятся и т.д.
Если просто растет время ответа, то вопрос - по скриптам или по статике тоже. Если по статике, то диск... но очень странно при такой нагрузке, если по динамике, то база - не хватает ей памяти и она по диску шурует. Самый ожидаемый вариант ;)

-~{}~ 12.09.08 02:51:

А.. просмотрел про время генерации... хм

-~{}~ 12.09.08 02:54:

Если сеть... то может канал разве что... если появляются потери...
В общем, да - статистика нужна.
 

Krishna

Продался Java
Сеть... вряд ли, если дос или просто много соединений, симптомы другие - соединения отваливаются, режектятся и т
Я бы предположил, что срабатывает именно ограничение Апача на конкретное число запросов. Часть занята сетью, например подвисшими или медленными соединениями, а остальная медленно обслуживается в порядке очереди оставшимися. При этом, родительский процесс Апача удерживает открывающиеся соединения, ожидая, пока можно передать их очередному треду.

Вобщем, ждем статистику по сети и по диску...
 

Марат

Новичок
Большое спасибо за внимание к теме :)
Скорее всего Krishna прав. У нас действительно много пользователей на диалапе и gprs :)
И, наверное, срабатывает лимит в апаче на максимальное число запросов. Бъю себя по голове, что забыл про эту возможность апача :) Сейчас увеличил - надеюсь поможет :)
Спасибо! :)
 

MiksIr

miksir@home:~$
Хм... а что, во 2-м есть такие настройки для очереди? Не припомню... кроме стандартного беклога. В принципе, в линуксе он чуть ли не 1К по-умолчанию, так что возможно.
Но что бы обычная станица долго отдавалась... да, или специфика клиентов или потери в сети. В таком случае nginx бы помог очень.

-~{}~ 12.09.08 03:53:

Марат, не мучайте апач, расскажите в чем проблема установки nginx?
 

Марат

Новичок
Да, согласен.. без Nginx сейчас лучше не держать сайт.
Но я по глупости взял в добавок к серверу панельку администрирования.. и там немного кривовато сделано... Короче Nginx сейчас поставить не могу :(
 

Марат

Новичок
Панель умеет, панелька классная :) ISPmanager.
Только при включении Nginx все соединения Nginx с Apache происходят через внешние ip-адреса. А значит пользователь из интернета может напрямую подключиться к Apache и задать себе любой IP.
я думал в ручную после добавления нового домена исправлять конфиг на 127.0.0.1 Но я на бесплатных условиях дал знакомым место на серваке.. если они будут редактировать домены, то конфиги они отредактировать не смогут. так как нет доступа к ним :) да и глупо было бы кому-нить давать доступ к конфигам :)
 

MiksIr

miksir@home:~$
На апаче mod_rpaf2?

-~{}~ 12.09.08 04:07:

Там есть RPAFproxy_ips x.x.x.x - трастовый адрес, и только при запросе с него происходит подмена IP. Очень странно,что панелька его не выставляет... мож все же ставит?

-~{}~ 12.09.08 04:08:

Более того.
If you do not use the RPAFproxy_ips directive then the module will not change the remote address of the incoming connection at any time.
т.е. без этой директивы оно вообще работать не будет.
 

Марат

Новичок
Сейчас там нет вообще никакого модуля для замены айпи :)
А так.. можно же любой поставить, который для Apache2 подходит :)
 

MiksIr

miksir@home:~$
А вообще поспрашивайте.. может даже саппорт ispменеджера - насколько я знаю, он весьма шустр и адекватен. Может есть патчи именно для панельки, что бы она апач на локалхост убирала.
 

Марат

Новичок
я Nginx для тесту включал всего пару-твройку раз на 5-10 мин.. если мне память не изменяет панелька вообще не ставит модуль.. но это я не помню..
Спасибо за информацию о RPAFproxy_ips :)
Но я ещё боюсь, что при использовании внешних ip между Nginx и Apache будут проблемы с интернетом
 

MiksIr

miksir@home:~$
Марат, да странно это... если панель позволяет ставить nginx как фронтенд.. то и модуль для апача то может поставить ;) В общем, не сдавайтесь, я знаю что многие хостеры используют эту панель и наверняка решение давно уже есть.

-~{}~ 12.09.08 04:12:

Просто nginx в вашем случае просто идеальное решение. Грех им не воспользоваться
 

MiksIr

miksir@home:~$
Но я ещё боюсь, что при использовании внешних ip между Nginx и Apache будут проблемы с интернетом
Сервер один... никаких проблем быть не должно - сервер знает свои IP и гоняет все локально.
 

Активист

Активист
Команда форума
На Debian Etch сервер, стоит аналогичная панель. Через Панель прекрасно устанавливается пакет nginx и все прекрасно проксируется. НО есть проблема, из-за конфликтов с libapache2-mod-geoip пакета libapache2-mod-rpaf убрали из etch'a, но мир не без добрых людей

1. Ставишь nginx через панель ISPManager (на debian etch встает прекрасно)

2. Ставишь модуль libapache2-mod-rpaf, который собрали добрые люди для etch'a
wget http://people.debian.org.tw/~chihchun/debian/libapache-mod-rpaf/libapache2-mod-rpaf_0.6-1_i386.deb
dpkg -i libapache2-mod-rpaf_0.6-1_i386.deb

3. Настроиваешь mod_rpaf
serv001:~# cat /etc/apache2/mods-available/rpaf.conf
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 77.221.xxx.58 77.221.xxx.59
</IfModule>

И все будет хорошо.
Если есть статика, которая отдается через PHP советую почитать в рассширенной документации к ispmanager про ngStaticRegexp
 

Krishna

Продался Java
Я что-то не вижу ответов на наши вопросы.
Разговоры про nginx преждевременны.
 

ys

отодвинутый новичок
А тупой вопрос можно?
IP адреса клиентов в логах, случаем, не резолвяться в имена?
 
Сверху