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

11

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

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

Unkwntech
источник

Ответы:

26

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

  • для части L

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

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

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

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

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

PQD
источник
1
Если я могу добавить это, я недавно написал в блоге о безопасных резервных копиях с помощью стратегий push и pull через amazon s3. не подходит для банковских данных, но все, с чем вы будете доверять amzon, должно быть в порядке. logaholic.de/2009/05/21/…
Карстен
Я действительно заметил это сообщение в блоге, прежде чем вы прокомментировали; -]. хороший в любом случае. Вы всегда можете зашифровать свою резервную копию, чтобы сделать ее более безопасной.
PQD
3

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

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

Антуан Бенкемун
источник
хорошая точка зрения. Я могу только предположить, что вашим узким местом могло быть реагирование подсистемы ввода-вывода / накопителя. может быть, тогда разделение данных на двух разных дисках / с хорошим контроллером диска также может помочь. в любом случае, больше памяти и больше процессоров - это всегда хорошо, но тогда вы получите больше возможных точек отказа.
PQD
Ну, я не уверен, что это были дисковые операции ввода / вывода, потому что большинство (скажем, 90%) обращений к SQL были кэшированы. Я думал о переключении контекста процессора, но я не знаю, может ли это играть значительную роль.
Антуан Бенкемун
1

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

Карстен
источник
Мне очень нравится eAccelerator. Это дает лучшую производительность для моих сайтов.
TheHippo