У меня есть веб-сервер, на котором в настоящее время размещены два сайта 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 в одном и том же поле. По моему опыту, вам следует сделать следующее:
KeepAlive
установка в Apache, которая отлично работает! Но я считаю, что из коробки он настроен на MaxKeepAliveRequests
из 100, что довольно безумно. Обычно я устанавливаю примерно 30 подключений с небольшим KeepAliveTimeout
от 2 до 3 секунд. Ключ в том, чтобы KeepAliveTimeout
чтобы соответствовать скорости, необходимой для загрузки средней страницы, с небольшими накладными расходами / медлительностью. Итак, если страница загружается за 1 секунду, выполните KeepAliveTimeout
2 секунды.memory_limit
в твоем php.ini
и убедитесь, что он не выше необходимого. Значение по умолчанию - 64 МБ, но во многих случаях его можно уменьшить до 32 МБ.Что касается настройки MySQL, это может занять несколько недель вначале. Причина в том, что сценарии настройки основаны на реальном трафике, который видит MySQL. Таким образом, вы в основном делаете свой сайт живым для мира, ждете 2 дня (по крайней мере), запускаете сценарии настройки, а затем ждете еще несколько дней, чтобы настроить еще немного. Примерно через неделю вы сможете настроить MySQL для работы так же хорошо, как и с вашей настройкой.