Потребление оперативной памяти.

12
DavyJohnes
На сайте с 05.01.2011
Offline
84
3280

Написал, сайт(схема стандартная: apache,php,mysql). Начал думать где его размещать. Специфика сайта такова что на обычном вирт. хостинге его не повесишь, следовательно оставался один вариант - VPS\VDS. Разумеется что все это сопряжено с умениями администрирования unix систем, каких у меня на тот момент не было абсолютно. Стал изучать, применять на практике, вроде что то начал понимать. Арендовал VPS, поставил убунту, настроил, вроде все пашет. Со временем сайт набирает популярность и кол-во посетителей уже достигает 2-3к\день. Вывод утилиты top говорит о большом количестве процессов апача и о полной загруженности ОЗУ(на тот момент было всего 512 МБ), так, что в некоторые моменты времени оставалось свободно меньше МБ. Позже сайт набирает еще большую аудиторию, 6-7К\сутки. При таком раскладе уже становиться трудно зайти на сервер по shh, не говоря уже о том как долго грузится сам сайт. Умные дядьки сказали что это все из-за апача и мол он на каждого юзера создает отдельный процесс и занимает место в памяти, так же дядьки сказали что надо ставить frontend в виде nginx. Ага, почитал статейки, все наладил, апач бэкэнд, nginx фронтенд. После двух дней использования такой схемы изменения в потреблении ОЗУ и в кол-ве процессов апача не наблюдалось. Позже переезжаю на другой сервер с ОЗУ 2ГБ. Думаю "ну тут то уже за глаза хватит". Фиг! Устанавливаю ту же схему с апачем и nginx и что я наблюдаю в выводе top ? Кучу процессов апача и 10 МБ свободной оперативной памяти.

Собственно вопрос: нормально ли это? Или нужно копаться в php скриптах или настройках ОС?

https://handy-tools.io (https://handy-tools.io) - Набор полезных утилит для всех!
vandamme
На сайте с 30.11.2008
Offline
647
#1

ну мож виртуализация vds разная?

R
На сайте с 14.02.2010
Offline
77
#2

ps --sort rss -eo rss,cmd

free -m

Garin33
На сайте с 31.08.2009
Offline
169
#3

Можно попробовать для начала это.

Работает, тестил на себе :), до "того" 150 mb расходовалось, "после" - 80.

А nginx вообще конфигурировался? Или просто установлен и все?

Плюс в my.cnf дописать skip-innodb (если он конечно не нужен, а так чаще всего), это еще мегабайты сэкономит мускула.

Потому что Drupal - это круто.
Mage1
На сайте с 05.07.2007
Offline
83
#4
Garin33:
Плюс в my.cnf дописать skip-innodb (если он конечно не нужен, а так чаще всего)

если он не нужен, то неплохо бы сделать так, чтобы был нужен :) перевести все таблицы на InnoDB

на память это сильно не повлияет, но работать станет быстрее.

но вопрос по поводу того, работает ли nginx или вы его просто запустили, чтобы в памяти висел - хороший. Если всё как водится работает, nginx отдает статику,а апач скрипты, нужно подсчитать сколько у вас свободной памяти остается после системы, СУБД, nginx-у немного оставить, разделить это число на memory_limit скриптов и поставить макс. кол-во процессов апача равное этому значению, это предотвратит своп.

собственно, то, что память занята - не проблема, для того её и покупают, чтобы занимать. Проблема если скрипты выполняются слишком долго (в моём понимании долго это более 0.3 секунды на страницу). Если сервер настроен более-менее, надо смотреть скрипты, искать что именно тормозит.

Himiko
На сайте с 28.08.2008
Offline
559
#5
на память это сильно не повлияет, но работать станет быстрее.

skip-innodb может до 50-100Mb освободить памяти.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
Mage1
На сайте с 05.07.2007
Offline
83
#6
Himiko:
skip-innodb может до 50-100Mb освободить памяти.

да, но я, вообще-то, говорил о том, чтобы перевести все таблицы в innodb :)

R
На сайте с 14.02.2010
Offline
77
#7

о чем вы спорите вообще без топ-а? не понятно же совершенно что там у него эту память жрет (и жрет ли). быть может там "куча процессов" все сожрала (и что за "куча"- 10,50,300), мб там в мускуле 500 max_connections и 300 тредов в кешируется, да что угодно может быть, а может и не быть вовсе и мы тут имеем классическое непонимание понятия "свободной" памяти в линукс...

QA
На сайте с 25.04.2009
Offline
67
#8

Попробуйте сделать команду sysctl vm.drop_caches=3 и сразу после этого посмотрите сколько сводобной памяти. Память может еще под кэши ядра использоватся, вся какая свободная, поэтому видеть что свободной памяти нет, а ее на самом деле дофига, только временно под другие дела приспособлена.

Посчитайте сколько апачей всего запущено и если будет больше сотни, то это может быть когда на вас много закачек медленных делается или много медленных запросов к базе выполняется. Тогда лучше поставить лимит на число копий апачей через MaxClients, к примеру, если уже ngixn стоит, то можно поставить MaxClients 20 или 30. У если сейчас памяти два Гб, можно увеличить разные буферы для mysql - все размеры которые в конфиге есть, умножте на 4 или на 8.

TrueVDS - виртуальные машины на Xen (http://www.truevds.ru/)
Andreyka
На сайте с 19.02.2005
Offline
822
#9

Нужно поставить анализатор типа munin и выложить сюда картинку за сутки

Не стоит плодить сущности без необходимости
Raistlin
На сайте с 01.02.2010
Offline
247
#10
QuickAurum:
sysctl vm.drop_caches=3

И получить повреждение ФС в части случаев. Хороший совет.

HostAce - Асы в своем деле (http://hostace.ru)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий