#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 для таблиц со многими строками
- Настройка правильного индекса в таблицах
-
Вы могли бы установить некоторые ограничения для поискового бота
Комментарии:
1. Если у вас действительно сайт с интенсивным трафиком и вы настроили nginx в качестве своего веб-сервера, я придерживаюсь мнения, что вы могли бы также пройти весь путь и заменить Apache для обработки PHP на php-fpm . Но в остальном, я думаю, что это хороший список, чтобы заставить кого-то начать (хотя многие из них предполагают, что у вас очень большая база данных MySQL … если у вас не так много строк, вы можете не беспокоиться о разделении, например). Однако, если вы можете позволить себе второй сервер, разгрузка MySQL на другой сервер помогла бы.
Ответ №2:
Ну, есть два подхода к кэшированию веб-приложений
- Вы кэшируете запрос, я имею в виду использование ob_start (), ob_flush () и т.д. Вы получаете данные в ответ, помещаете эти данные в файл и просто отвечаете на этот файл в следующий раз, вам следует позаботиться о дисковом пространстве и удалить файлы с помощью cron… (преимущества: сокращение операций ввода-вывода и использования памяти)
- Вы можете кэшировать агрегированные данные, чтобы в следующий раз предотвратить интенсивную агрегацию…
выбирай))