Оптимизация сервера. Разгоняем LAMP

Прислано: seaji

сб, 13/03/2010 - 11:26

Привет всем.
Вот несколько советов по поводу оптимизации сервера.
Все эти советы взяты из презентации: http://www.slideshare.net/csixty4/lamp-optimization
Автор: http://www.slideshare.net/csixty4
Цифры обозначают номера слайдов. Я не стал приводить полный листинг, только по существу.
Не смотря на то, что LAMP это Linux Apache MySQL PHP, данные советы помогли мне разогнать сервер на винде :)

1. LAMP Optimization

Dave Ross :: Suburban Chicago PHP & Web Development Meetup :: SuburbanChicagoPHP.org :: October 1, 2009 (Название, автор, место проведения и дата проведения презентации).
Мне нравятся быстрые сервера
4. Я не сисадмин, но я знаю что мне нужно.
5. Мне нужны быстрые сервера
6. LAMP - Linux Apache MySQL PHP

7. Оптимизация Linux:

а). Избегать использования подкачки памяти.
б). Выключите статстику доступа к файлам
в). Купите еще сервер.

8. vmstat -S M Virtual memory statistics in Megabytes (or Kilobytes) позволяет следить за состоянием виртуальной памяти.

9. “Free” drop + High “Swap” = Тормоза. Эти параметры можно отследить командой vmstat -S M

10. Вообщем, вставляйте себе как можно больше RAM, это дешево и эффективно.

11. “Access Timestamp” - Журналирование доступа к файлам.

12. “I agree, we really should do something about atime.” - Linus Torvalds, 2007
Статистика в Юниксовый системах: http://en.wikipedia.org/wiki/Stat_%28Unix%29
Обновление статистики при каждом чтении файла приводит к падению производительности.

13. Отредактируйте /etc/fstab в четвертой колонке добавьте: noatime,nodiratime
Сохраните, перезагрузитесь.

15. Купите еще сервер, настройте кластер баллансировки нагрузки.

Оптимизация Apache

16. Оптимизация Apache

а). mod_cache
б). Keep the riff-raff out
в). Increase MaxClients

17. a2enmod cache mem_cache - устанавливаем mod_cache
18. Кешируйте статичную информацию в оперативке (RAM)

20. mod_evasive – модуль, замещающий mod_access, обеспечивая функциональные возможности для защиты от DoS атак. Модуль отклоняет быстро повторяющиеся запросы с одного адреса, ипользуя внутреннюю таблицу.
21. Защита от назойливых ботов, сканеров и атак.
22. Вы получите более равномерное распределение ресурсов между всеми клиентами.

23. MaxClients в Вашем файле httpd.conf
24. Это число нужно подобрать так, что бы эффективно обрабатывать всех паралельных клиентов.
26. Данная настройка потребует увеличения оперативки, так что не жалейте RAM.

Оптимизация MySQL

27. Оптимизация MySQL

а). Key Buffer
б). Query Cache
в). InnoDB

28. Key Buffer в файле настроек my.cnf
29. Руководит кеширование индексов таблиц
30. key_buffer_size=128M
Стоит выбирать 20-25% от всей доступной оперативки.

31. Query Buffer в файле настроек my.cnf
32. Кеширует обработанные селекты
33. query_buffer_size=64M Стоит выставлять половину от key_buffer_size

Мои личные замечание:
Стоит так же обратить внимание еще на две переменные tmp table size и max tmp tables
tmp_table_size - у меня стоит 2M, но тут нужно пробовать и смотреть сколько временных таблиц будет записано на диск. При досточно высоком tmp_table_size временные таблицы будут создаваться только в оперативке, что намного быстрей чем их запись на диск. Причем общая память будет вычисляться так: tmp table size * max tmp tables

35. InnoDB database engine
36. InnoDB лочит только ряды а не целиком таблицы
37. Получаем более быстрые операции UPDATE
38. Эта система оптимизирована для доступа по ключам
39. Получаем более быстрые операции SELECT и UPDATE

Оптимизация PHP

40. Optimizing PHP

а). Upgrade to PHP 5.3
б). Install an accelerator
в). Enable output buffering

41. PHP 5.3 имеет встроенный mysqlnd
42. Это нативный драйвер
43. Работает быстрее до 30%

44. Акселераторы PHP
а). Alternative PHP Cache (APC) : ускоряет в 3x-5x раз
б). eAccelerator
в). XCache
г). Zend Optimizer+

45. Буферизация вывода
46. Вообще то, буферизация немного замедляет выполнение кода
47. Однако браузер получает всю страницу сразу
48. Субъективно это ощущается быстрее

49. Вопросы? davidmichaelross.com daveross.tel

Ну и на последок, вставка от меня. Здесь много говорилось про активное исользование RAM. Я нашел для себя програмку для мониторинга памяти под виндой: RAMpage

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано orb в сб, 13/03/2010 - 11:35.

«а). Upgrade to PHP 5.3»
низя


Опубликовано eagle в сб, 13/03/2010 - 12:09.

"orb" написал(а):

Upgrade to PHP 5.3»
низя

Можно, но придется повозиться с модулями.
У меня РНР 5.3.1. После допила работают все модули что ставил.


Опубликовано Oleksa@drupal.org в сб, 13/03/2010 - 12:26.

"seaji" написал(а):

7.
в). Купите еще сервер.

"seaji" написал(а):

15. Купите еще сервер, настройте кластер баллансировки нагрузки.

:)


Опубликовано Azerot в сб, 13/03/2010 - 12:30.

Открыл почитать. Думаю может чего интересного напишут.
Во-первых, ничего нового.
Во-вторых, у автора в голове каша, потому что следует различать настройку и оптимизацию.
В третьих многие советы спорны или просто неверны, например считать что установка дополнительной памяти в сервер - это дёшево.
В общем пионерская статья для пионеров.


Опубликовано seaji в сб, 13/03/2010 - 12:45.

"Azerot" написал(а):

пионерская статья для пионеров.

Согласен.
Самое оно для тех, кто ни бум-бум в настройке серверов, а читать километры мануалов времени нет.
Профи смогут настроить более тонко. Это точно.


Опубликовано volocuga в сб, 13/03/2010 - 13:02.

2 раза упоминается "Купите еще сервер"

Можно (и нужно) было переводить не дословно - немного запутано

Респект за труды


Опубликовано seaji в сб, 13/03/2010 - 13:18.

"volocuga" написал(а):

Можно (и нужно) было переводить не дословно

Я вообще не видел смысла в переводе, слов не так уж и много и они все понятны. Но раз уж я захотел вставлять комментарии от себя, то решил перевести кое что.
Спасибо что оценили :)


Опубликовано mensh@drupal.org в сб, 13/03/2010 - 13:27.

Дэйв Росс написал: «Я не сисадмин, но я знаю что мне нужно».

Разруха в государстве происходит от таких певунов.


Опубликовано seaji в сб, 13/03/2010 - 13:40.

Не понял причем здесь "разруха".
Я то же могу сказать "Я не автомеханик, но знаю что мне нужно от машины, чтоб она ехала и причем быстро." :)


Опубликовано mensh@drupal.org в сб, 13/03/2010 - 13:53.

"seaji" написал(а):

Не понял причем здесь "разруха".

Это я к тому, что каждый должен заниматься своим делом, а не пиз..жом.


Опубликовано alexandr.poddubsky в сб, 13/03/2010 - 22:48.

а как же фронты разгружающие тяжелый апач во много раз? тот же ngnix например?


Опубликовано mensh@drupal.org в вс, 14/03/2010 - 04:29.

"shamaner@drupal.org" написал(а):

а как же фронты разгружающие тяжелый апач во много раз? тот же ngnix например?

Ему проще сервер докупить.


Опубликовано Dan в вс, 14/03/2010 - 08:37.

Два сервера. И памяти. А nginx - это не спортивно :)


Опубликовано seaji в вс, 14/03/2010 - 08:56.

Прям как взъелись все. И ни одного дельного совета...
Мне помогли советы по MySQL. Я записал для себя.
Не нравится не читайте.


Опубликовано Dеmimurych в вс, 14/03/2010 - 09:00.

"Azerot" написал(а):

дополнительной памяти в сервер - это дёшево.

Разве?

сколько стоит сейчас планка в 4 гб? в районе 200 уе?

это простите средняя оплата за 5 дней работы программиста в региональном центре.

т.е. Вы хотите заплатить в несколько раз больше специалисту чтобы он тюнинговал ваш сервер, тратил время на оптимизацию приложения для работы с 1гб оперативной памяти вместо того чтобы купить один раз планку в 4гб?

Память сейчас стоит на порядок дешевле чем труд программиста или системного администратора.


Опубликовано Dеmimurych в вс, 14/03/2010 - 09:03.

"seaji" написал(а):

Мне помогли советы по MySQL. Я записал для себя.

те советы по mysql
это советы шамана. Возьмите это вылейте в то - профит.

Они могут быть просто вредны, уже хотя бы потому что будут попусту расходовать вашу РАМ.

Раз уж Вы не понимаете как работает ваш сервер обрати внимание на скрипты автоматической настройки.

Для mysql это либо tuning-primer.sh либо mysqltuner.pl (в гугле сразу найдете)

Они анализируют работу сервера (который должен иметь аптайм не менее 48 часов) и выдают вполне сносные советы по оптимизации вашего сервера.


Опубликовано mensh@drupal.org в вс, 14/03/2010 - 09:16.

"seaji" написал(а):

Не нравится не читайте.

Не понимаю, на что обижаетесь?
В Ваш адрес ни слова упрека не было, лишь поблагодарили за перевод.
Критика вся в адрес Давидки. Здесь же обсуждается то, что написал этот гура.
Я, например, считаю, что обсуждения подобных опусов полезны и благодарен Вам за то, что Вы его перевели.


Опубликовано Azerot в вс, 14/03/2010 - 09:22.

Цитата:

сколько стоит сейчас планка в 4 гб? в районе 200 уе?

Не сравнивайте говённую память в ваш домашний комп с памятью, которая вставляется в сервер. Это всё-равно что ладу сравнивать с мерседесом. Так что умножайте на 2, но не в этом дело. Дело в том, что так можно до многого договориться.

Типа, нахрен настраивать сервер и напрягать специалиста, если покупка второго сервера стоит всего как его две заработные платы? Увольняем нахрен админа и каждые 2 месяца покупаем новый сервер, вместо того, чтобы настраивать старые, вы видимо это предлагаете? :)


Опубликовано mensh@drupal.org в вс, 14/03/2010 - 09:44.

 
 
Вражину надо знать в лицо.


Опубликовано Dan в вс, 14/03/2010 - 10:21.

"Dеmimurych" написал(а):

сколько стоит сейчас планка в 4 гб? в районе 200 уе?

Думаю DDR3 с ECC обойдётся в $700-$800. Но и неделя работы адекватного программиста тоже не $200 будет стоить.
По-любому одно другим заменить нельзя. Для кривого/неоптимизированного кода никакой памяти не хватит, но и в серваке тоже памяти должно быть достаточно. Золотую середину никто не отменял.


Опубликовано seaji в вс, 14/03/2010 - 10:35.

"Dеmimurych" написал(а):

tuning-primer.sh либо mysqltuner.pl

Спасибо, такое полезно знать.


Опубликовано Dеmimurych в вс, 14/03/2010 - 11:04.

"Azerot" написал(а):

Не сравнивайте говённую память в ваш домашний комп с памятью, которая вставляется в сервер. Это всё-равно что ладу сравнивать с мерседесом. Так что умножайте на 2, но не в этом дело. Дело в том, что так можно до многого договориться.

Вам было бы полезно узнать на каком железе работает гугл.
И каковы были причины выбора именно таких решений.
Вы будет спорить с тем что гугл эффективен?

"Azerot" написал(а):

Типа, нахрен настраивать сервер и напрягать специалиста, если покупка второго сервера стоит всего как его две заработные платы? Увольняем нахрен админа и каждые 2 месяца покупаем новый сервер, вместо того, чтобы настраивать старые, вы видимо это предлагаете? :)

Так и поступают. До те пор пока администрирование парка серверов не выходит дороже. Чем оптимизация ПО.
Будете с этим спорить?
я отошлю вас к таким проектам как facebook или тот же вконтакт.


Опубликовано riyuzakki в вс, 14/03/2010 - 11:40.

"mensh@drupal.org" написал(а):

Дэйв Росс написал: «Я не сисадмин, но я знаю что мне нужно».

"seaji" написал(а):

Я то же могу сказать "Я не автомеханик, но знаю что мне нужно от машины, чтоб она ехала и причем быстро."

seaji, Вы неправильно интерпретировали фразу Росса. Она на самом деле такова: "Я не автомеханик, но я знаю, что если открыть капот, и ударить молотком вот сюда, машина поедет быстрее".
Росс в моих глазах выглядит отчаянным виндузятником. "Давайте, говорит, настроим сервер так, чтоб он жрал много-много памяти! Память ведь докупить проще простого. А еще давайте выключим статистику файловой системы!" Может он еще и логи выключить придумает?
Вы бы лучше почитали про разные файловые системы ext3, ext4, reiserfs, xfs и т.д. Ведь не зря же их столько придумали, а? Наверное, они заточены под разные задачи? Ах, простите, я забыл, что в виндах кроме тупого ntfs`а ничего нет.


Опубликовано seaji в вс, 14/03/2010 - 11:56.

"riyuzakki" написал(а):

Ах, простите, я забыл, что в виндах кроме тупого ntfs`а ничего нет.

Пять с плюсом.
Прямо в точку :)


Опубликовано mensh@drupal.org в вс, 14/03/2010 - 15:06.

"riyuzakki" написал(а):

х, простите, я забыл, что в виндах кроме тупого ntfs`а ничего нет.

А fat?


Опубликовано RxB в вс, 14/03/2010 - 15:07.

Да, давайте тогда уж:
FAT16
FAT32
CDFS
Чего ещё было?


Опубликовано Dan в вс, 14/03/2010 - 16:19.

FAT12 :)

Ещё мифическая WinFS. Почти есть. Чуть-чуть осталось.


Опубликовано riyuzakki в вс, 14/03/2010 - 22:51.

"Dan" написал(а):

Ещё мифическая WinFS. Почти есть. Чуть-чуть осталось.

В которой тоже "не будет фрагментации"! *ROLF*


Опубликовано Valeratal в вс, 14/03/2010 - 22:25.

да, иногда проще купить новый сервер, чем переписывать друпал :)


Опубликовано eagle в пн, 15/03/2010 - 06:36.

"Dеmimurych" написал(а):

т.е. Вы хотите заплатить в несколько раз больше специалисту чтобы он тюнинговал ваш сервер, тратил время на оптимизацию приложения для работы с 1гб оперативной памяти вместо того чтобы купить один раз планку в 4гб?

Одно другому не помеха. Но расход $$$ должен зависеть от эффективности и необходимости капиталовложений в проект(ы).
Можно и спеца нанять и память добавить при желании, в любом случае нужно искать оптимальное решение.

Если на сайте бывает 100 с плюсом посетителей в день, то и шареда с 32Мб хватит, а если сайт висит в топах, то и пара серваков (один под базу другой под скрипты) лекго окупятся .


Опубликовано Valeratal в пн, 15/03/2010 - 06:57.

тут вопрос действительно в целесообразности
пока можно просто добавлять - проще добавлять
то есть, поставить нжинс фронтэндом - это простое решение (автор почему то не в курсе этого)
переписать мэмкэш, так чтобы он не лочил таблицы - это решение сложное

p.s. ПРо сайт окупающий хостинг. От сайта, висящего в топах, хотелось бы доход а не просто "окупаемость" и оборот средств.


Опубликовано Siegfrid@drupal.org в пн, 15/03/2010 - 07:50.

Про мониторинг и поиск узких мест неплохо написано у Sunder van Vugt - Pro Ubuntu server administration. Что понравилось, описан процесс поиска узких мест и их устранения.


Опубликовано Azerot в пн, 15/03/2010 - 08:04.

Цитата:

Вам было бы полезно узнать на каком железе работает гугл.
И каковы были причины выбора именно таких решений.
Вы будет спорить с тем что гугл эффективен?

А вам было бы полезно узнать КАК работает гугл. И что гугл не работает на LAMP.
А вот потом уже начинать спорить.

Цитата:

я отошлю вас к таким проектам как facebook или тот же вконтакт.

А я отошлю вас обратно. Потому что facebook не использует например MySQL, а использует Cassandra, а также советую потрудиться и подумать о том, что и гугл и фейсбук и вконтакте - это решения, где парк серверов составляет сотни и тысячи машин, где выход из строя одной машины не приведёт к потере даже 1% общей производительности системы. В то время как выход из строя одного сервера в 2-3 и даже 5 серверной конфигурации - это серьёзный удар по общей производительности системы.


Опубликовано PVasili в пн, 15/03/2010 - 08:36.

"riyuzakki" написал(а):

Ах, простите, я забыл, что в виндах кроме тупого ntfs`а ничего нет.

- ну не 1 а 3.
А зачем зоопарк их ФС?
Лучше иметь одну отказоустойчивую, нормальную ФС, чем кучу не пойми чего и терзаться в муках выбора ;)

з.ы. Ладно десктопы с <1%, но сервера...
Был удивлен, что *nix и тут стала заметно проигрывать
Так и до Web серверов скоро дойдет?


Опубликовано riyuzakki в пн, 15/03/2010 - 09:45.

"PVasili" написал(а):

Лучше иметь одну отказоустойчивую, нормальную ФС

Не согласен. Ножовка для распиливания, молоток для забивания.

"PVasili" написал(а):

*nix и тут стала заметно проигрывать

Я бы не стал особо верить пендосо-ньюсам. Во-первых, смотря что считать серверами. У меня стоит машинка, которая служит двум задачам: демонстрация возможностей линукс-десктопа и пробуждение вейконланом офисных серверов по утрам. Его можно сервером назвать? Тогда запишите +1 в никсовые сервера. Во-вторрых, там где *nix платформа позволяет создать конфигурацию 10 сервисов - 1 сервер, винда "порекомендует" (читай потребует) купить еще серверов. Штук эдак девять.


Опубликовано PVasili в пн, 15/03/2010 - 10:08.

"riyuzakki" написал(а):

Не согласен. Ножовка для распиливания, молоток для забивания.

- ну дак в Win толпы кричащих ламеров не пытаются забивать ножовкой и пилить молотком.
Тем более не перетирают по 10 раз на всех форумах почему молоток глючит при распиливании и как нужно "развести" зубья для забивания гвоздей, и когда будет новая неглючная версия пакетов гвоздей для берёзы, и почему гвозди для березы не работают на бетта - сборке молотка для липы.

"riyuzakki" написал(а):

Его можно сервером назвать? Тогда запишите +1 в никсовые сервера. Во-вторрых, там где *nix платформа позволяет создать конфигурацию 10 сервисов - 1 сервер, винда "порекомендует" (читай потребует) купить еще серверов. Штук эдак девять.

- ребята, вы что-то путаете. Все пересчитывают на $, и сервера - это то, что называется серверами, а не наколеночное творчество. Попробуйте так же пересчитать количество установленных 2008, которые рассылались даром.
Других методик и цифр я не видел. Буду рад примерам с URL-ами.

Пока десктопы <1% (хотя тут многие и кричали что *nix победно шествует), сервера за Win ~75%. По Web у меня нет более-менее достоверных данных.
Я не против *nix и других OS, очень даже за :). Я просто привожу статистику.


Опубликовано Valeratal в пн, 15/03/2010 - 10:24.

тема была вроде про оптимизацию именно на LAMP
а обсуждают файловые системы

где, черт возьми, "железная рука модератора"? :)


Опубликовано mensh@drupal.org в пн, 15/03/2010 - 10:40.

"Valeratal" написал(а):

где, черт возьми, "железная рука модератора"? :)

Билла Гейтса призываете?


Опубликовано mensh@drupal.org в пн, 15/03/2010 - 10:45.

"PVasili" написал(а):

Пока десктопы <1% (хотя тут многие и кричали что *nix победно шествует), сервера за Win ~75%.

Ваши сайты на Win-серверах?


Опубликовано mensh@drupal.org в пн, 15/03/2010 - 10:48.

"PVasili" написал(а):

Лучше иметь одну отказоустойчивую, нормальную ФС

Почему бы не собирать автомобиль одной модели?

P.S. Был в налоговой, только подъехал, а здесь уже холивары развели.


Опубликовано riyuzakki в пн, 15/03/2010 - 10:51.

"PVasili" написал(а):

Все пересчитывают на $

тогда все ясно

"PVasili" написал(а):

ну дак в Win толпы кричащих ламеров не пытаются забивать ножовкой и пилить молотком

Да что Вы говорите?

"PVasili" написал(а):

Я не против *nix и других OS, очень даже за

А вот я против, очень даже против поделок M$. Они очень хорошие маркетологи. Настолько хорошие, что построили фабрику по клонированию говна, и умудряются клонированое говно продавать. И пусть меня не называют криворуким ламером, не сумевшим настроить винду. У меня за плечами достаточно опыта разработки под винду. Достаточно на столько, чтобы плюнуть на это кривое поделие, собрать и настроить под себя генту.

"Valeratal" написал(а):

тема была вроде про оптимизацию именно на LAMP
а обсуждают файловые системы

где, черт возьми, "железная рука модератора"? :)

Да уж. Приношу извинения за несдержанность.
Но ведь выбор ФС тоже относится к теме оптимизации LAMP. Чего нельзя сказать о W* за отсутствием выбора ;)


Опубликовано Valeratal в пн, 15/03/2010 - 11:47.

ну, вроде никто виндос-хостинг для друпала здесь не рекомендовал

лучше расскажите, на чем работает спортбокс (или ньюсспортбокс)
который тянет до миллиона хитов, и 250-300к уников


Опубликовано Dan в пн, 15/03/2010 - 14:29.

Василий, не надо защищать NTFS. Лучше про рынок и про то, сколько винд стоит у юзеров. А про ntfs не надо.


Опубликовано vgoodvin в ср, 17/03/2010 - 09:15.

"PVasili" написал(а):

сервера за Win ~75%

Какие именно сервера? Откуда статистика?
Я в свою очередь тоже не против Win :), но только не как замену LAMP.
А NTFS хороший велик, как и большинство продуктов MS, IMHO.


Опубликовано PVasili в ср, 17/03/2010 - 09:59.

"vgoodvin" написал(а):

Откуда статистика?

я давал ссылки. Кстати, на диске с 2008 сервером Drupal включен в комплект, как и много чего ещё...


Опубликовано vgoodvin в ср, 17/03/2010 - 10:50.

На пингвинах (не на всех но на большинстве популярных) и на фряхе (другие BSD не смотрел) друпал как и много чего еще в репозиториях лежит. Устанавливается все стандартным путем.


Опубликовано alexandr.poddubsky в ср, 17/03/2010 - 12:27.

вы че спорите то. винда была изначально для раб станций то есть для домохозяек. И да крутые серваки мелкософта защищают ламерские серваки на никсе от ундер атак хацкеров. кто не знает почитайте.


Опубликовано riyuzakki в ср, 17/03/2010 - 13:35.

"shamaner@drupal.org" написал(а):

И да крутые серваки мелкософта защищают ламерские серваки на никсе от ундер атак хацкеров.

Ага-ага. И почтовые шлюзы у них на экзиме, а CRM - оракловый зибель...


Опубликовано mensh@drupal.org в ср, 17/03/2010 - 13:37.

Linux (произносится — „линукс“), являясь свободным клоном операционной системы Unix, превращает любой компьютер в рабочую станцию, дающую вам в руки всю мощь Unix.

Linux используют везде, где требуется высокая производительность и надежность. В ряде стран мира Linux начинают использовать в официальных учреждениях, борясь против монополии Microsoft, которая, играя на лени человека, успешно продвигала на рынок в течение последних 2-х десятков лет свой „продукт“, призванный оглуплять и отуплять человечество.

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


Опубликовано riyuzakki в ср, 17/03/2010 - 13:39.

#define Linux Drupal

"mensh@drupal.org" написал(а):

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


Новое на сайте

Ссылки партнёров