Назад | Перейти на главную страницу

Советы по производительности сервера LAMP

Какие советы по производительности можно предложить тем, кто использует сервер LAMP?

В том случае, если что-то специфично для дистрибутива, я нацелен на Debian.

Это действительно зависит от вашей загруженности.

  • для L часть

    • получить много памяти,
    • если вы можете перейти на более 4 ГБ, перейдите на 64-разрядную версию.
    • для разделов, в которых хранится ваш контент, журналы и данные MySQL, используйте параметры монтирования: noatime, nodiratime.
    • используйте отдельные физические диски / наборы рейдов, в идеале храните данные SQL, журналы и контент, который вы обслуживаете, - каждый на отдельном шпинделе.
  • для А часть вашего стека - ну, может быть, вы хотите полностью заменить его на nginx или lighthttpd, или, может быть, просто оставьте Apache для динамического контента и создайте отдельный сервер (например, эти два или mathopd) для статического содержимого. Взглянуть Вот для дополнительных опций. Если вы собираетесь запускать и Apache, и другой сервер в одном компьютере, вам подойдет второй IP-адрес. Чтобы уменьшить задержку для конечного пользователя, используйте http / 1.1 с keep-alive. Рассмотрите возможность использования CDN для статического контента.

  • для M часть вашей лампы - взгляните на mysqlperformanceblog. с макушки:

    • регистрировать медленные запросы,
    • дать достаточно памяти,
    • рассмотрите возможность использования innodb.
    • если у вас много текста для поиска - используйте сфинкс и у вас есть пакетное задание, которое перестраивает индекс.
    • рассмотрите возможность уничтожения запросов, которые выполняются дольше XYZ секунд. Лучше расстроить 1% пользователей, чем в пиковое время вывести из строя весь сайт. Но это действительно зависит от того, обрабатываете ли вы операции с наличными или показываете красивые картинки.
    • используйте memcached, если можете, для кеширования результатов более «дорогих» SQL-запросов. Не забывайте аннулировать кеш при изменении содержимого SQL. С другой стороны, у меня довольно мало сайтов, где все данные удобно помещаются в памяти, и для этого MySQL работает быстро, и нет необходимости в дополнительном кеше.
  • для п

    • установить таймаут выполнения для скриптов.
    • рассмотреть возможность использования некоторых Ускоритель PHP / кеш кода операции. Я был вполне доволен xcache, но сейчас не использую.
    • если у вас интенсивная обработка ЦП - кешируйте результаты и сохраняйте их в SQL или memcached

На самом деле это не совет по производительности, но стоит делать резервные копии вне офиса. В самом деле.

Я действительно предлагаю разделить MySQL и Apache / PHP на двух разных машинах.

Например, у меня была одна машина (C2D E6600), на которой всегда повышалась средняя загрузка до 2,0 и выше. Я установил MySQL на второй компьютер (P4C 3Ghz), и после этого оба средних значения нагрузки не превышали 0,2-0,3. Поэтому я перешел с очень медленного сайта на быстрый сайт с двумя серверами, имеющими большой запас производительности.

Для части P вы можете рассмотреть кеширование кода операции с помощью, например, APC. Можно также рассмотреть mod_fastcgi с php вместо mod_php по умолчанию.