Кэширование для уменьшения нагрузки (PHP и MYSQL)

#php #mysql #caching #memcached

#php #mysql #кэширование #memcached

Вопрос:

я получаю много обращений от Google, но это не похоже на то, что пользователь всегда попадает на одну и ту же страницу. Пользователь всегда получает другую страницу. Таким образом, кэширование с помощью memcached не будет работать, я думаю, потому что пользователь всегда попадает на другую страницу, которую необходимо сгенерировать и кэшировать.

Что бы я мог сделать, чтобы уменьшить нагрузку с сервера. Я уже внедрил sphinx search, который помог мне снизить нагрузку и скорость страницы поиска.

Есть идеи по снижению нагрузки?

Комментарии:

1. можете ли вы полностью кэшировать страницы своего сайта? вводит ли пользователь какие-либо данные на страницы?

2. например, я получаю много обращений к поисковым страницам, поэтому пользователь вводит некоторые данные

3. вам нужно ускорить поиск? или ответ сервера в целом?

4. поиск уже выполняется быстро, загрузка занимает 1-2 секунды. Мне нужен более быстрый ответ сервера, а также уменьшение моей нагрузки. МОЯ машина — двухъядерная 2 ГБ оперативной памяти

Ответ №1:

  • Используйте разделы MySQL
  • Используйте кэш кода операции (например, eaccelerator)
  • Используйте nginx в качестве интерфейса (для всего статического содержимого), apache в качестве серверной части
  • Возможно, используйте некоторые решения NoSQL
  • Правильно настройте свой сервер MySQL (для innodb)
  • Я предлагаю использовать движок InooDB для таблиц со многими строками
  • Настройка правильного индекса в таблицах
  • Репликация MySQL

  • Вы могли бы установить некоторые ограничения для поискового бота

Комментарии:

1. Если у вас действительно сайт с интенсивным трафиком и вы настроили nginx в качестве своего веб-сервера, я придерживаюсь мнения, что вы могли бы также пройти весь путь и заменить Apache для обработки PHP на php-fpm . Но в остальном, я думаю, что это хороший список, чтобы заставить кого-то начать (хотя многие из них предполагают, что у вас очень большая база данных MySQL … если у вас не так много строк, вы можете не беспокоиться о разделении, например). Однако, если вы можете позволить себе второй сервер, разгрузка MySQL на другой сервер помогла бы.

Ответ №2:

Ну, есть два подхода к кэшированию веб-приложений

  1. Вы кэшируете запрос, я имею в виду использование ob_start (), ob_flush () и т.д. Вы получаете данные в ответ, помещаете эти данные в файл и просто отвечаете на этот файл в следующий раз, вам следует позаботиться о дисковом пространстве и удалить файлы с помощью cron… (преимущества: сокращение операций ввода-вывода и использования памяти)
  2. Вы можете кэшировать агрегированные данные, чтобы в следующий раз предотвратить интенсивную агрегацию…

выбирай))