[RC-LAB] Оптимизация ПО

Первой статьей в рубрике RC-LAB будет рассказ об оптимизации PHP и Apache для вебсервера.
picture-992
Мы будем собирать наш веб-сервер на рабочем сервере, где и будут запускаться скрипты. Обратите внимание, что основной акцент будет установлен на оптимизации при компиляции, по этому файлы конфигурации берите со статьи по установке веб-сервера.

Смотрим свой процессор cat /proc/cpuinfo (для тестовых целей взята была слабенькая, но реальная машинка).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Celeron(R) CPU 2.80GHz
stepping : 9
cpu MHz : 2800.453
cache size : 256 KB
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc up pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm
bogomips : 5600.90
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management:

И исходя из параметров mmx, sse и sse2 устанавливаем значение к переменной CFLAGS, список соотношения флаг/параметр можно просмотреть здесь.

1
export CFLAGS="-O3 -msse -mmmx -march=nocona -funroll-loops -mfpmath=sse,387"

конфигурируем PHP с параметром —disable-all, и добавляем только необходимые опции (например —enable-ssl).

При конфигурации апача отключаем ненужные нам модули (список для каждого сервере может быть разным, а может — пустым):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--disable-authn-file
--disable-authn-default
--disable-authz-host
--disable-authz-groupfile
--disable-authz-user
--disable-authz-default
--disable-auth-basic
--disable-include
--disable-filter
--disable-charset-lite
--disable-log-config
--disable-env
--disable-setenvif
--disable-version
--disable-mime
--disable-status
--disable-autoindex
--disable-asis
--disable-cgid
--disable-cgi
--disable-negotiation
--disable-dir
--disable-actions
--disable-userdir
--disable-alias

Если Вы — разработчик, то советую добавить опцию —enable-debug для PHP и —enable-maintainer-mode для Apache. Это не повлияет на производительность программ, но немного увеличит объем самого бинарника.

И только после этого делаем make install clean.

На этом все, но тесты продолжаются и я буду дополнять данную рубрику интересными наработками.