У меня есть сервер Debian 5, который получает много трафика. Сейчас на сервере 4 ГБ ОЗУ и нет памяти подкачки. Вверху я вижу, что процессы Apache потребляют примерно 180 МБ виртуальной памяти (VIRT) каждый и 16 МБ реальной оперативной памяти (RES). Итак, сколько потоков Apache я могу запускать одновременно? Примерно 4 ГБ / 180 МБ = 22 или 4 ГБ / 16 МБ = 256?
Размер виртуальной памяти не так важен, как ваш резидентный набор. Виртуальная память будет включать в себя то, что отображается, например разделяемые библиотеки и тому подобное (которое будет резидентно в физической ОЗУ только один раз). RSS сообщает вам, что на самом деле находится в памяти, а Virt. сообщает вам, какая часть доступного виртуального адресного пространства была поглощена.
Ваш второй расчет будет более точным, хотя он довольно низкий. Сервер с 4 ГБ оперативной памяти может запускать более 256 процессов Apache. В зависимости от ваших шаблонов трафика и ограничений ожидания ввода-вывода, запуск более 256 процессов может быть хорошей идеей, поскольку большое количество этих процессов могут просто сидеть и ждать, пока ядро перелопатит данные с устройства на устройство. Также учитывайте такие вещи, как COW и тот факт, что все указывает на один и тот же двоичный файл httpd, и вы получите больше эффективности.
Теперь идите и перестройте свою систему с хорошими 2 ГБ пространства подкачки. Своп больше не действует как «медленная память».
В качестве отказа от ответственности: прошло много времени с тех пор, как меня интересовали особенности управления памятью Linux, и, возможно, я немного ошибаюсь в моих фактах, но суть ясна!
Это значение в основном связано с экспериментами с текущей нагрузкой на сервер.
попробуйте собрать некоторые данные с помощью apache top. Внесите некоторые изменения в конфигурацию и повторите попытку. Поскольку я не знаю вашего конкретного варианта использования, мне сложно назвать какие-то конкретные цифры.
Если вы хотите предсказуемый потребление памяти для вашего веб-сервера, пожалуйста, посмотрите http://wiki.nginx.org/Main
Он решает некоторые проблемы масштабируемости очень крутым способом.
Это не подходит для каждого случая использования, но обязательно рассмотрите его.
Вы можете развернуть его, чтобы снизить нагрузку на свой экземпляр apache. Он подходит для обслуживания статического и кэшированного содержимого в конфигурации обратного прокси, а также для других сценариев с высокой нагрузкой.
Попробуйте, это бесплатно :-)