Назад | Перейти на главную страницу

пожалуйста, взгляните на использование оперативной памяти моего сервера

я новичок с серверами. У меня centos5.5 vps с оперативной памятью 512 мб. Моя цель - разместить на нем только один магазин Magento. Я установил Magento на сервер без какой-либо панели управления, просто установив лампу и все расширения php, необходимые для установки Magento.

Как только я захожу в свой магазин Magento, внезапно баран на vps почти полностью используется, осталось всего около 100 МБ. Пожалуйста, посмотрите этот снимок экрана htop, сделанный после того, как я только что посетил этот сайт.

http://img714.imageshack.us/img714/1944/screenouv.png

Как видите, осталось всего около 100 МБ. Это нормально? Мне интересно, мог ли я сделать что-то глупое с сервером, из-за которого он очень требователен к ресурсам. Я установил apache из базового репозитория centos, php версии 5.3 из репозитория ius и mysql 5.1 также из репозитория ius. Я не менял ни один из файлов конфигурации по умолчанию для любого из них, за исключением того, что сделал memory_minimum 256 в php.ini. Что я могу сделать, чтобы освободить больше баранов?

Я не знаю, но я вижу, что каждый демон Apache использует 8% доступной оперативной памяти, и AFAIK каждому посетителю нужен один демон Apache. Так что барана у меня кончилась бы с горсткой посетителей. Спасибо за ваш совет.

Я предполагаю, что у вас все в порядке: память используется дисковым кешированием ядра Linux (см. http://www.linuxatemyram.com/ Больше подробностей).

Об Apache: хотя каждому пользователю нужен экземпляр Apache, если вы используете непоточную версию Apache (как по умолчанию), он использует его только в течение короткого промежутка времени, пока пользователю передается одна страница. После этого процесс apache обработает следующий запрос, вероятно, от другого пользователя. Таким образом, вы можете обрабатывать множество соединений с помощью относительно небольшого числа процессов apache.

Изменить: пример бесплатного вывода:

             total       used       free     shared    buffers     cached
Mem:           498        434         64          0        194         77
-/+ buffers/cache:        162        336
Swap:         4102          0       4102

64 МБ, которые указаны как свободные, - это объем памяти, который никак не используется. Но (почти) все буферы / кеш-память могут быть использованы ОС немедленно, если это необходимо, поэтому потенциальная доступная память фактически составляет почти 350 МБ вместо 64 МБ.

Centos будет использовать любую свободную оперативную память в качестве дискового кеша и буферов для ускорения работы. При доступе к файлам они будут кэшироваться в памяти. Кэш по-прежнему является частью свободной памяти и будет удален, если это потребуется в другом месте системы. Взглянуть Вот Чтобы получить больше информации.

512Мб - это не очень много. PHP в сочетании с MPM предварительной вилки Apache означает, что вы потреблять это очень быстро.

Фактически, вам нужно разделить общий объем оперативной памяти (512 МБ) на memory_limit в /etc/php.ini чтобы получить разумное количество для Apache MaxClients настройка. Магнето вики говорит, что рекомендуется 64 МБ, но может быть недостаточно. Предполагая, что вы используете 64 МБ, это дает вам 8 клиентов. На самом деле, несколько меньше, поскольку вы тоже работаете mysql и некоторые другие вещи в той же системе. Вы можете обойтись большим числом, но в какой-то момент ваша система воля умереть.

Помните, что каждый запрос должен отвечать один сервер prefork, а не каждый посетитель. Если каждый запрос обслуживается достаточно быстро, вам может не понадобиться столько серверов, сколько вы думаете.

Holdddd onnnn секунду здесь. В в документации по системным требованиям для текущей версии указано, что memory_limit должен быть по крайней мере 256 МБ, а они на самом деле просят 512 МБ. Это дает вам 2 или 1 работника Apache, что на самом деле нецелесообразно.

Так. Вам нужно будет переосмыслить. Вы можете добавить больше оперативной памяти для решения проблемы (настоятельно рекомендуется), или использовать другой Apache MPM (может быть проблематично с вашим PHP-приложением; я не знаю), или использовать lighttpd + fastcgi.

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

(Кстати: выключите yum-updatesdи замените его на yum-cron. Вы должен есть автоматические обновления, но вам не нужен демон, сидящий в оперативной памяти весь день.)

Посещая магазин Magneto, mysql извлекает данные с диска, а затем сохраняет их в кэше (ОЗУ) для более быстрого поиска. Это нормально.