Оптимизация php+mysql

MySQL базы данных сервер оптимизация кэширование

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

Вопросы:
1. Какие вообще есть методы оптимизации в подобных случаях, о которых я, возможно, не знаю ?
2. Часто видел сравнения xCache ,eAccelerator, memcached. Так и не понял толком что для чего предназначено. Посоветуйте чем лучше воспользоваться ? Слышал что xCache не использует TCP соединение и за счет это работает быстрей (если сайт расположен на одном сервере), так ли это ?
3. На сервере, 4 ГБ RAM, Вполне возможно всю базу держать в оперативке, как лучше это сделать ? Мне в голову приходит только использование MEMORY таблиц в mysql (запись делать в обычные таблицы и триггером их синхронизировать с MEMORY-таблицами, а вся выборка уже из них) насколько удачен такой способ? может быть Вы знаете другие более оптимальные ?
Еще как вариант хранить БД в tmpfs, но это для меня очень туманная перспектива. И что будет если сервер упадет и данные не успеют сохранится на диске ?

Заранее спасибо.
Ответы:
Ответ: 42.
Слова ты слышал правильные, осталось разобраться что для чего предназначено.
Разберёшся как работает memcache, eAccelerator и php-fpm - всё настроишь как надо, не осилишь - нанимай толкового сисадмина.
memcached good-вещь + используй PHP Data Objects (PDO). Мутить с MEMORY не советую.
PDO не использует абстрактных слоёв для подключения к БД, наподобие ODBC, а использует для разных БД их «родные» драйверы, что позволяет добиться высокой производительности.
1. Внедряйте кеширование всей малоактивной динамики в сам CMS.
2. xCache и eAccelerator не используют TCP соединение, предпочтительнее использовать xCache - он быстрее и активнее развивается (на мой взгляд), а memcached в вашем случае не оправдан
3. не пользуйтесь MEMORY таблицами - лучше изучите работу xcache_put() xcache_get() функций (в случае использования xcache), а MySQL настраивайте при помощи mysqltuner'ом, не держите базы в tmpfs, лучше папку куда сбрасываются временные таблицы (обычно /tmp) смонтируйте на tmpfs, только выделите мегабайт 300-500


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.