Как я могу предотвратить исчерпание памяти с помощью приложения CakePHP?

Я работаю на VPS-сервере (Quad Core с 768 МБ оперативной памяти. Я использую Apache и использую APC в качестве механизма кэширования по умолчанию). Я получаю около 2000 посетителей в день с максимум 100 одновременными посетителями.
Согласно CakePHP DebugKit, мои самые ресурсоемкие страницы занимают около 16 МБ, а остальные страницы в среднем занимают около 10 МБ.

  • Это использование памяти нормально?
  • Нормально ли для моей памяти узкое место при 2000 посетителях на страницу?
  • Должен ли я рассмотреть возможность обновления моего плана до 2 ГБ ОЗУ?

Я также заметил, что визуализация View занимает большую часть памяти, около 70% на большинстве страниц.

Я отслеживаю использование своего ресурса, когда у меня около 50 или более одновременных пользователей, я получаю 0 свободных МБ.

Спасибо

0

Решение

Вы также должны проверить ваши другие процессы. Исходя из моего опыта, MySQL занимает больше памяти, чем что-либо еще в любом стеке, который я запускаю. Вы также должны реализовать лучшее кэширование страниц, чтобы PHP не приходилось трогать, когда в этом нет необходимости. Но Apache — это также память, которую нужно точно настроить. Если вы хотите придерживаться Apache, тогда запустите Varnish перед ним.

Кроме того, сохраните APC, но также добавьте Memcached. Это намного быстрее.

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

@burzum совершенно прав, однако, что вы должны просто переключиться на nginx. На данный момент это намного лучше, чем Apache. Но, просто чтобы поставить вас на правильный путь, довольно много людей используют nginx в качестве обратного прокси-сервера перед Apache, и хотя это ускоряет работу сервера, это совершенно не нужно, потому что nginx может делать практически все, что вам нужно. без апача. Не беспокойтесь об использовании Varnish перед nginx, потому что nginx может выступать в качестве своего собственного обратного прокси.

Лучше всего внедрить nginx с помощью apcu (обновите php до 5.5, если это возможно, чтобы повысить производительность), использовать memcached и реализовать встроенные в nginx возможности микрокэширования. Если ваш сайт интенсивно читает и легко пишет, то вы можете заметить, что nginx позаботится обо всем, просто извлекая кэшированную копию из memcache. Хотя это помогает с памятью, это также помогает с обработкой. Процессоры моих серверов обычно используют 3-5% во время пиковых нагрузок.

1

Другие решения

Это использование памяти нормально?

Да, это не кажется высоким для обычного приложения CakePHP.

Нормально ли для моей памяти узкое место при 2000 посетителях на страницу?

Я думаю, да, я не «серверный парень».

Должен ли я рассмотреть возможность обновления моего плана до 2 ГБ ОЗУ?

Я бы попробовал сначала переключиться на Nginx. Apache — это монстр, поедающий память, по сравнению с Nginx, просто найдите несколько отметок, случайный один я выбрал с помощью быстрого поиска от этот стр.

введите описание изображения здесь

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

1

По вопросам рекламы [email protected]