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

Сколько свободной памяти у меня должно быть на моем веб-сервере?

У меня есть веб-сервер, на котором в настоящее время размещены два сайта Wordpress и некоторое программное обеспечение для совместной работы на основе Java. Сервер имеет 2 ГБ памяти и в настоящее время использует около 1,8 ГБ доступной памяти. Прямо сейчас то, что здесь происходит, является в значительной степени пилотным проектом, который получает незначительный трафик, поэтому я думаю, что совершенно очевидно, что мне понадобится больше памяти.

Мне было интересно, если бы я выпустил его, как я мог бы предвидеть свои потребности в памяти на основе трафика, который он получает. Я покопался в Google, и то, что я нашел, было немного неубедительным. Есть ли хорошая эвристика, которую следует использовать при вычислении потребности в памяти в зависимости от базовой (без трафика) нагрузки на сервер?

Для справки, вывод free -m можно увидеть ниже:

             total       used       free     shared    buffers     cached
Mem:          2048       1832        215          0          0          0
-/+ buffers/cache:       1832        215
Swap:            0          0          0

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

Я полагаю, что требования моего программного обеспечения для совместной работы необходимо будет проверить экспериментально, поэтому вот free -m без этого программного обеспечения:

             total       used       free     shared    buffers     cached                                     
Mem:          2048       1109        938          0          0          0                                     
-/+ buffers/cache:       1109        938                                                                      
Swap:            0          0          0   

Мой план Б, чтобы выяснить это, - добавить к серверу кучу пространства подкачки, дать ему некоторый трафик и отрегулировать в соответствии с объемом используемого подкачки. Мне просто было интересно, есть ли у кого-нибудь хорошее эмпирическое правило, чтобы оценить, сколько памяти я должен запланировать заранее ... или то, что я думаю, безумно.

Большое спасибо заранее (я действительно новичок в этом).

Ответ прост: это зависит от обстоятельств. В вашем конкретном случае качество и эффективность установленных вами сайтов могут оказаться под вопросом.

Например, на этой неделе я работал над сервером с относительно умеренным трафиком, но потребляющим 4 ГБ оперативной памяти. Проведя обзор кода (весь сайт использует стандартную CMS, аналогичную WordPress, но с настройками), мы обнаружили серьезное узкое место. После того, как мы исправили проблему, сервер теперь в среднем использует около 2 ГБ ОЗУ. Снижение использования оперативной памяти на 50%!

Я бы не рекомендовал делать что-то вроде разделения сервера для использования Ngnix, а также Apache. Просто используйте Apache. Головная боль, связанная с балансировкой конфигов двух разных серверов, не стоит маржинальной выгоды. Апач в порядке. Но при этом вы должны рассматривать свои сайты WordPress PHP, Java-приложение и MySQL в одном и том же поле. По моему опыту, вам следует сделать следующее:

  1. Правильно настройте Apache: Apache - хорошее программное обеспечение, но оно сразу же потребляет много памяти. Например, я считаю, что по умолчанию разрешено 255 подключений в секунду? Я могу заверить вас, что большинство простых сайтов едва ли получают 40 подключений в секунду в хороший день. Так что адаптация Apache к вашему трафику поможет. Также есть KeepAlive установка в Apache, которая отлично работает! Но я считаю, что из коробки он настроен на MaxKeepAliveRequests из 100, что довольно безумно. Обычно я устанавливаю примерно 30 подключений с небольшим KeepAliveTimeout от 2 до 3 секунд. Ключ в том, чтобы KeepAliveTimeout чтобы соответствовать скорости, необходимой для загрузки средней страницы, с небольшими накладными расходами / медлительностью. Итак, если страница загружается за 1 секунду, выполните KeepAliveTimeout 2 секунды.
  2. Проверьте код своих сайтов WordPress на предмет потенциальных узких мест: Сконцентрируйтесь на ядре PHP и выясните, что вы можете. Обратите внимание на чрезмерные вызовы MySQL и файловой системы. Здесь вы сможете заставить приложение летать! Также проверьте memory_limit в твоем php.ini и убедитесь, что он не выше необходимого. Значение по умолчанию - 64 МБ, но во многих случаях его можно уменьшить до 32 МБ.
  3. Настройка MySQL или перенос на собственный сервер: После того, как я написал о MySQL выше, я понял, что вы можете разместить свой экземпляр MySQL на том же компьютере. Изучите оптимизацию производительности MySQL, запустив сценарий вроде Учебник по настройке MySQL. Без настройки MySQL съест все ресурсы и выйдет из строя. С настройкой MySQL будет работать лучше / быстрее, и ресурсы могут быть освобождены для других целей. Также рассмотрите возможность переноса своей базы данных MySQL на автономный сервер. Возможно, вам придется научиться правильно подключать к сети и брандмауэру сервера, чтобы разрешить вашим серверам доступ, но защитить от хакеров, но выигрыш в производительности будет большим.
  4. Рассмотрите возможность переноса приложения Java на другой сервер: Мое практическое правило - одно основное приложение Java на сервере. В общем, приложения Java могут потреблять много памяти по сравнению с настройками PHP, такими как WordPress. Если предоставить приложению Java собственный сервер, сайты WordPress станут намного счастливее.

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