Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-18 17:18:47

Добрый день!!! Заранее хотел бы поблагодарить Автора сайта за столь интересный, и информативный ресурс, а также всех участников этого форума которые оказывают неоценимую помощь начинающим. Надеюсь, что и мне Вы не откажите в этой самой помощи.
Передомной была поставлена задача, настроить почтовый сервер, а также организовать виртуальный хостинг для наших клиентов. Все статьи относящиеся к данному вопросу я конечно же читал. Но меня больше беспокоят тонкости настройки, тюнинг, и тд. не рассматриваемые в данных статьях.
Теперь по порядку.
Конфигурация предполагаемого железа:
CPU: AMD Athlon 64 X2 Dual-Core 3600+
Memory: 2x1GB DDR II PC-6400(800MHz)
M/B: ASUS M2A-VM Socket AM2, AMD 690G, HT2000, Dual-Ch.DDR2 800,
PCI-eX16, Dual VGA(DVI/RGB), HD Audio, LAN 1Gb,SATAII 3.0Gb, RAID, EZ Flash 2, CrashFree BIOS 3.
HDD: 2x250GB 7200rpm, 16MB, SATA II-300

Софт:
OS: FreeBSD 7.0-RELEASE (amd64)
Bind 9.4.2
Apache 2.2.8
PHP 5.2.5
MySQL 5.1.23

Exim 4.69
Courier-IMAP 4.3.1

ProFTPD 1.3.1

Канал в мир: 100Mbit/s

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

Вопрос 2: Как скомпилировать Apache для оптимальной производительности?

Вопрос 3: Как правильно рассчитать значения параметров как: Timeout, MaxKeepAliveRequests, KeepAliveTimeout, StartServers , MinSpareServers, MaxSpareServers, MaxClients, MaxRequestsPerChild, и тд?

Вопрос 4: Как правильно определить объем занимаемой памяти конкретным процессом в моем случае это Apache?

Вопрос 5: Какой в действительности оптимальный размер процесса Apache, и что для этого необходимо сделать?

Вопрос 6: Как скомпилировать PHP для оптимальной производительности?

Вопрос 7: На какие переменные php.ini стоит обратить свое внимание для достижения максимальной производительности?

Вопрос 8: Какие самые часто используемые расширения php, и от каких лучше отказаться?

Вопрос 9: Как скомпилировать MySQL для оптимальной производительности?

Вопрос 10: На какие опции файла my.cnf нужно обратить внимание для увеличения производительности?

Вопрос 11: Какой тип таблиц лучше всего использовать и почему?

Вопрос 12: Для связи с базой данных лучше использовать сокет или порт?

Вопрос 13: С какими трудностями я столкнусь при большой нагрузке на MYSQL?

Вопрос 14: Как скомпилировать Exim для оптимальной производительности?

Вопрос 15: Как лучше всего организовать хранение почты пользователей?

Вопрос 16: Какой самый простой способ управления пользовательскими акаунтами?

Вопрос 17: Есть ли родная структура базы данных для Exim’a?

Вопрос 18: Как скомпилировать Courier-IMAP для оптимальной производительности?

Вопрос 19: Как скомпилировать ProFTPD для оптимальной производительности?

Вопрос 20: Как настроить ProFTPD для оптимальной производительности?

Вопрос 21: Какому пользователю принадлежат права на файлы и каталоги виртуальных пользователей которые находятся в базе данных MySQL. Для системных пользователей есть UID и GID как это дело обстоит у виртуальных пользователей.

Вопрос 22: Как лучше организовать структуру каталогов для виртуального хостинга.
Нужно ли выделять отдельную файловую систему для виртуальных хостов?

Остальные вопросы по мере обсуждения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение Morty » 2008-04-18 21:08:51

Код: Выделить всё

Вопрос 1: С какими опциями необходимо перекомпилировать ядро чтобы достичь максимальной производительности данной системы. Если возможно прокомментировать каждую опцию?
SMP - у тебя 2 ядра
maxusers 512 (либо 1024) ограничение в системе должно быть в любом случае, влияет на процессы еще на много чего

Код: Выделить всё

Вопрос 2: Как скомпилировать Apache для оптимальной производительности?

Код: Выделить всё

APACHE_HARD_SERVER_LIMIT=yes
WITH_APACHE_PERF_TUNING=yes
APACHE_HARD_SERVER_LIMIT=512
это как МИНИМУМ должно быть (анологично с яром 512 либо 1024)
Вопрос 3: Как правильно рассчитать значения параметров как: Timeout, MaxKeepAliveRequests, KeepAliveTimeout, StartServers , MinSpareServers, MaxSpareServers, MaxClients, MaxRequestsPerChild, и тд?
будешь смотреть в ходе работы, для начала можно по умолчниаю оставить - не умрет
Вопрос 7: На какие переменные php.ini стоит обратить свое внимание для достижения максимальной производительности?
тоже скорее всего будет видно потом, например если не известно сколько сейчас нада поставить время исполнения скрипта
max_execution_time = ??? если особенно не известно что сайт(ы) ьудут хотеть от пхп
Вопрос 8: Какие самые часто используемые расширения php, и от каких лучше отказаться?
лучше пообщаться с вэб челом - спросить что ему нада , но чаше всего 80 % модулей -))
но fribidi лучше не ставить, хотя бы потому что оно по дурацки собираеться , ну и еще не разу не видел чтобы оно кому то было нада
Вопрос 9: Как скомпилировать MySQL для оптимальной производительности?
собирай с тредами, с какой кодировкой - хз это отдельная тема для обсуждения, но лучше четко решить сразу
дабы потом не ловить камни в свой огород ....
вот мое

Код: Выделить всё

#----- Make conf per lia MYSQL
DEFAULT_MYSQL_VER=50
PORTSDIR?=      /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
WITH_LINUXTHREADS=yes
WITHOUT_INNODB=yes
.endif
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif
#---- Finito make conf per lia Mysql
Вопрос 10: На какие опции файла my.cnf нужно обратить внимание для увеличения производительности?
всё что buffer
так же посик по слову CPU и выставляешь ....
Вопрос 12: Для связи с базой данных лучше использовать сокет или порт?
сущесвтует мнение что через сокет - резче , но хз, у меня МУСЯ на сокете+петля
Вопрос 13: С какими трудностями я столкнусь при большой нагрузке на MYSQL?
может жеско загрузить проц, но если все будет гуд в my.cnf в направлении треды,проц, буферы то не должно,
либо будет блочиться, и все что будет пытаться обращаться в базу будет курить в окопе
Вопрос 22: Как лучше организовать структуру каталогов для виртуального хостинга.
Нужно ли выделять отдельную файловую систему для виртуальных хостов?
лучше каждый вирт хост держать в хомяке пользака который будет туда же черутиться по фтп
Либо ФТП также настривать как и апач - с виртуальными хостами, но тут возможно грабли повылазят

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение hizel » 2008-04-18 21:22:50

слишком много сервисов
что хорошо для одного сервиса плохо сказывается на другом
я бы их разнес на несколько девайсов
и дальше тонко рулили

и если вы читали статьи\документацию\форумы\списки рассылок
то по каждому вопросу у вас должно было бы уже сформироваться свое мнение ;)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение Morty » 2008-04-18 21:40:46

ну разносить или нет это уже нада смотреть на это со стороны ценовой целесообразности,
у меня есть железка намного слабее процом(остальное либо почти такое же либо слабее) и там стоит все это добро что автор спрашивает (кроме Курьера правда)
почтовых ящиков на сегодня около 270, и сайтов гдето до 10 - 15 но они не собо по хитам, 1-2 сайта на нем каждый по
100.000 хитов в день(если верить awstats), остальные по 3.000 - 30.000

и я не вижу не одной причины например разделять этот сервер на подсервреры - он себя окупает, с задачами справляеться,
проблем нет

Тоесть: нужно все прощитать финансовую сторну, нагрузку, поставленные задачи. Не покупать же под 5 сайтов отдельный сервак ? это же смешно

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение Morty » 2008-04-18 22:24:48

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

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-18 23:14:48

SMP - у тебя 2 ядра
maxusers 512 (либо 1024) ограничение в системе должно быть в любом случае, влияет на процессы еще на много чего
С SMP все понятно для двух ядерного проца опция нужная, но там есть еще вот такой интересный device mptable. Что это такое и с чем его едят. Нужно ли его мне использовать?

А как Вы расчитываете этот maxusers? Читал что посуте это максимальное число запущенных процессов. И еще помоему гдето слышал что если эту опцию не указывать или установить в ноль. Тогда ОС сама определит это значение в зависимости от доступной памяти.

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-19 0:56:10

Еще интересуют вот такие опции:

Код: Выделить всё

options         NMBCLUSTERS # ?
# Три опции ниже определяющие потребление системных ресурсов системы, 
# у когото был опыт использования даных опций в контексте повышения производительности?
options         MAXDSIZ=(1024UL*1024*1024)
options         MAXSSIZ=(128UL*1024*1024)
options         DFLDSIZ=(1024UL*1024*1024)

options         BLKDEV_IOSIZE=8192 # ?
# Наличие данных опций в ядре требует сам Apache2.x, но вот для чего они нужны?
options         ACCEPT_FILTER_DATA
options         ACCEPT_FILTER_HTTP
# С точки зрения безопасности позволяет предотвратить сканирование портов
# но почемуто не рекомендовано использовать для веб-серверов. Почему?
options         TCP_DROP_SYNFIN
# Поводу софт апдейта слышал два противоречивых мнения, одни советуют другие нет
# Я так понимаю с этой опцией увеличивается производительность дисковой подсистемы, а также
# шансы потерять информацию. Что посоветуете?  
options         SOFTUPDATES
# На тот случай если понадобится установить ограничение дискового пространства для пользователей.
options         QUOTA
options         HZ=100 # ?
# Позволяют манипулировать mbuf размера кластера, как это можно использовать
# для настройки максимальной производительности сети?
options         MCLSHIFT=12
options         MSIZE=512

options         MAXFILES=999 # ?
options         MAXMEM=(128*1024) # ?
# Я так понимаю чтото связано с частотой процессора?
device          cpufreq
device          hwpmc # ?
options         IPI_PREEMPTION # ?
options         MP_WATCHDOG # ?
Если кто знает еще какие опции для повышения производительности, пишите!!!

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-19 1:14:48

hizel писал(а):Если вы читали статьи\документацию\форумы\списки рассылок
то по каждому вопросу у вас должно было бы уже сформироваться свое мнение ;)
Свое мнение у меня сформировано, но поверте лучше учится на чужих ошибках чем на своих.
Что касается разнести сервисы по разным серверам то Morty верно подметил с финансовой точки зрения не целесообразно. С другой стороны работают же довольно таки нагруженные хостинг сервера с таким набором сервисов и нечего. Главное грамотно настроить. Вот собственно за этим я сюда и обратился.

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-19 1:26:01

Morty писал(а):Лучше каждый вирт хост держать в хомяке пользака который будет туда же черутиться по фтп
Либо ФТП также настривать как и апач - с виртуальными хостами, но тут возможно грабли повылазят
Какие грабли Вы имеете ввиду? В /home монтируем отдельную файловую, или он в составе /usr?

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение Morty » 2008-04-19 20:05:30

луче /home как отдельный раздел...а глюки - внимательно настраивать чтоб не окозалось что кому-то удалось выйти "за чрут" ...
что-то подобное тут пролетало...давно только
вот это
options TCP_DROP_SYNFIN
чтоб порты не сканили на серваке...но необходимость сомнительна 50%/50%, если у тебя будет
25,110,143,80 - об этом и так все знают , их сканировать не обязательно, можно просто "тыкнуть в них"
Более важны настройки каждого демона висящих на этих портах, чем сканирование портов. Но можно и вкл -)
эти
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
когда то тоже юзал - зачем уже сам не помню, и выключил - за ненадобностью
остальное не юзал

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение Morty » 2008-04-19 20:11:45

процессы можно щитать по такой формуле
16*maxusers+20 (либо без +20 , как запас)
тоесть 16*512+20=~8212 помоему этого с головой достаточно
у меня 512 юзаеться практически везде - шлюзы, прокси squid c AD авториз, и на почт+сайты серваке
покачто в практике это лучшее занчение, скажем проблем с этим не было

PS: не советую ставить на автопилот maxusers = 0 , а определить потолок

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение dikens3 » 2008-04-19 22:28:06

proxyd писал(а):# Наличие данных опций в ядре требует сам Apache2.x, но вот для чего они нужны?
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
netstat -Lan и смотри на значения (первое и второе). По умолчанию там только нули. Описание не помню что за что отвечает.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-21 14:03:15

А кто что может сказать по поводу ограничивает размер очереди для приема новых TCP соединений (Переменная: sysctl kern.ipc.somaxconn). В руководстве сказано что значение 128 слишком мало для загруженного Веб-сервера. Как расчитывается данная величина?

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-25 11:31:20

Morty писал(а):

Код: Выделить всё

APACHE_HARD_SERVER_LIMIT=yes
WITH_APACHE_PERF_TUNING=yes
APACHE_HARD_SERVER_LIMIT=512
Что то мне так кажется что эти строчки в /etc/make.conf абсолютно бесполезны для Apache 2.2.8

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение paix » 2008-04-25 22:28:28

:) к автору топика, совет:

взять путевую книгу и почитать.
Помните: очень просто потерять то, что не достигнуто собственным трудом на практике.

Какие цели вы преслудете? какая мистическая оптимальная производительность? чушь.
какие оптимизации? юзайте дефолт. дешевле будет себе и людям.
юзайте дефолт, пока не поймете, что вам что-то действительно нужно оптимизировать, пока не поймете зачем оптимизировать и что вы хотите получить. Юзайте дженерик! Наковыряв разных хитроумных опций ядра вы думаете система стала лучше работать? фиг!

зачем, поллинг 100? зачем какието максдирсайз на амд64 ? там и так под кернел спейс 2Гига по дефолту выделено(это столько, сколько у вас всего)
дефолт!!!

зачем оптимизации? для того же мускиля в 7ке оптмизации не актуальны, совет годится для 6ки.
SMP в 7ке тоже в дженерике.

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

Не увлекайтесь оптимизацией. 20% оптимизаций дают 80% результата (правило Паретто). Правильная оптимизация - это выбор правильных технологий!
Еще раз, сделайте все по дефолту, начинайте изучать систему, и когда поймете что что-то нужно оптимизировать - вперед, но самое главное - это стабильность.

(имхо)
With best wishes, Sergej Kandyla

Аватара пользователя
proxyd
мл. сержант
Сообщения: 84
Зарегистрирован: 2008-03-06 15:03:37

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение proxyd » 2008-04-26 1:53:40

paix писал(а): К автору топика, совет:
Какие цели вы преслудете? какая мистическая оптимальная производительность? чушь.
...
Ну давайте порассуждаем о том как корабли бороздят космическое пространство.
Цель: Построить максимально производительную систему, в рамках своего железа и пропускной способности канала.
Наковыряв разных хитроумных опций ядра вы думаете система стала лучше работать? фиг!
Для чего нужна перекомпиляция ядра написано в Хендбуке.
GENERIC это универсальное ядро, а это значит что оно не может лутше работать просто по определению. Зачем мне вкомпиленые устройства которых у меня нет, или которыми я пользоваться не буду. Тем более перекомпелированное ядро во многих случаях меньше дефолтного в двое. И это помоему достаточно весомые аргументы для того чтобы это делать.
какой апач? для чего? хард сервер лимиты и прочая бодяга...
Зачем мне дефолтный Apache, MySQL и т.д. если они не смогут обслужить 100Мбитный канал.
Еще раз, сделайте все по дефолту, начинайте изучать систему, и когда поймете что что-то нужно оптимизировать - вперед
Когда понимаешь что тебе нужна оптимизация, как правило уже слишком поздно. Намного более правильный способ, это предусмотреть все заблаговременно. Расчитать предполагаемую нагрузку, предусмотреть возможность масштабирования и т.д. и т.п.
Ну а если хочется получить много гемора, тогда поставить все по дефолту это самый верный способ.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Тонкости настройки Apache, PHP, MySQL, Exim, Courier-IMAP

Непрочитанное сообщение Alex Keda » 2008-04-28 0:56:28

знаете, чтобы обслужить на динамике 100 мегабитный канал...
вобщем надо очень мощный сервер... санки там, на 52 бошки или типа того...
или картинки рздавать увесистые...
в первом случае - расскажите как вы на санки поставили фряху.
во втором - лучше юзать нгинкс.
во всех остальных случаях - перечитайте что написал Паикс...
=========

Код: Выделить всё

hosting# uname -a
FreeBSD hosting.lissyara.su 7.0-RC1 FreeBSD 7.0-RC1 #0: Mon Dec 24 10:10:07 UTC 2007     root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
hosting#   
и мне покласть на оптимизации.
нефига сопли ловить в проценты - я лучше буду на дженерике сидеть.
Убей их всех! Бог потом рассортирует...