Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Оптимизация web-сервера: eAccelerator  (Прочитано 14987 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн saber

  • Автор темы
  • Участник
  • *
  • Сообщений: 224
    • Просмотр профиля
    • Блог админа
Оптимизация web-сервера: eAccelerator
« : 01 Декабря 2008, 12:30:41 »
Оригинал статьи у меня в блоге
http://brandykov.blogspot.com/2008/11/web-eaccelerator.html

продолжаю облегчать жизнь серверу.
как работает eAccelerator - все мы знаем что при обращении к .PHP файлу вэб сервер компилирует пхп файл в некую программу, которая в дальнейшем, что-то делает и выдаёт нам результат в виде html, ну и кто-то задумался(может отбукился :) ): "а зачем постоянно делать одну и туже работу - компилировать при каждом обращении один и тот же файл", и вот eAccelerator берёт откомпилированный php файл и складывает во временную папку и когда пользователь обращается к очередному пхп файлу в дело вступает eAccelerator, который проверяет есть ли уже "готовый" запрашиваемый файл, если находит готовый то сразу запускает его, тем самым облегчает жизнь серверу (значительно снижает нагрузку на процессор) например у меня нагрузка в часы пик с 70% упала до 7-25%

ставим php5-dev
   sudo apt-get install php5-dev
берём свежий дистрибутив с http://eaccelerator.net/
распаковываем, заходим в извлечённый каталог

    sudo phpize    sudo ./configure --enable-eaccelerator=shared    sudo make    sudo make install    cd /etc/php5/conf.d
Создаём конфигурационный файл для акселератора

    touch eacclerator.ini
вставляем в него содержимое
Цитировать
    zend_extension = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
    eaccelerator.shm_size = "0"
    eaccelerator.cache_dir = "/var/cache/eaccelerator"
    eaccelerator.enable = "1"
    eaccelerator.optimizer = "1"
    eaccelerator.check_mtime = "1"
    eaccelerator.debug = "0"
    eaccelerator.filter = ""
    eaccelerator.shm_max = "0"
    eaccelerator.shm_ttl = "0"
    eaccelerator.shm_prune_period = "0"
    eaccelerator.shm_only = "0"
    eaccelerator.compress = "1"
    eaccelerator.compress_level = "7"
    eaccelerator.allowed_admin_path = "/var/www/"

создаю каталог для кэша

    sudo mkdir /var/cache/eaccelerator
    sudo chmod 777 /var/cache/eaccelerator
теперь можно перезапустить apache

sudo /etc/init.d/apache2 restart
для контроля над тех процессом есть файл control.php
в нём находим логин пароль, правим на свои и перекидываем в нужную нам папку на территории вэб сервера ну и заходим :)
« Последнее редактирование: 06 Декабря 2008, 09:04:34 от victor53p »
odmin4eg.ru - Мои шпаргалки по ubuntu

Оффлайн victor53p

  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
    • Ubuntu в Воронежской области
Re: Оптимизация web-сервера: eAccelerator
« Ответ #1 : 07 Декабря 2008, 21:55:31 »
Цитировать
для контроля над тех процессом есть файл control.php
в нём находим логин пароль, правим на свои и перекидываем в нужную нам папку на территории вэб сервера ну и заходим

Можно пояснить, что имелось ввиду, чей файл control.php, где искать, т.е.по подробнее?
« Последнее редактирование: 07 Декабря 2008, 21:57:06 от victor53p »

Оффлайн saber

  • Автор темы
  • Участник
  • *
  • Сообщений: 224
    • Просмотр профиля
    • Блог админа
Re: Оптимизация web-сервера: eAccelerator
« Ответ #2 : 09 Декабря 2008, 20:02:56 »
в извлечённом каталоге eaccelerator-0.9.5.3
есть файл control.php с помощью которого можно управлять и смотреть результаты работы  eaccelerator'a

Операцию проводил и на 8.04 и на 8.10 всё отлично работает

victor53p, знаю пишите маны по полной настройке вэб сервера, был бы рад в ваших манах
получить высокопроизводительный вэб сервер

суть простая
nginx - как вэб сервер для статитики
apache2 + mod_php - как обработчик php файлов
eaccelerator - кэширует отгенеренные пхп странички и разгружает апач от лишней работы
+ mysql
в итоге получаем сервер, который выдержит довольно большую нагрузку при средних требованиях к аппаратной части
« Последнее редактирование: 09 Декабря 2008, 20:10:19 от saber »
odmin4eg.ru - Мои шпаргалки по ubuntu

Оффлайн Zend72

  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
    • Фото на документы в GIMP
Re: Оптимизация web-сервера: eAccelerator
« Ответ #3 : 13 Февраля 2009, 18:56:36 »
Столкнулся с неожиданной пролемой. После обновления PHP до версии 5.2.6 библиотека не подгрузилась Так как она была собрана для другой версии PHP Решил пересобрать и вот:
zend eaccelerator-0.9.5.3 $ sudo phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
/usr/bin/phpize: 189: /media/files/Soft/Linuxsoft/PHP_dev/eaccelerator-0.9.5.3/build/shtool: Permission denied
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.

zend eaccelerator-0.9.5.3 $

Установлен autoconf самой последней версии... Подскажите, в какую сторону копать?

Пробовал:
export PHP_AUTOCONF=autoconf213
export PHP_AUTOHEADER=autoheader213
Не вышло... На счет autoheader213 неуверен, пойду по другому попробую, но что то не уверен, что поможет. Может быть кто то сталкивался с такоей ошибкой?


РЕШИЛ ПРОБЛЕМУ.
Директория располоалась на NTFS разделе (все руки недоходят отформатировать...) Перенес в свою домашнюю директорию. Заработало ;)
« Последнее редактирование: 13 Февраля 2009, 19:33:05 от Zend72 »

Оффлайн masterY0da

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #4 : 03 Августа 2009, 19:24:10 »
Начал ставить этот пакет и при конфинурировании вылетает такая ошибка
checking for best semaphores type... configure: error: "You need to pass the user id eaccelerator will be running under when using sysvipc semaphores"

подскажите как победить?

Оффлайн flint2000

  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #5 : 01 Марта 2010, 12:18:23 »
eaccelerator.shm_size = "0"Ну это как-то не серьезно

Оффлайн nerezus

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #6 : 01 Марта 2010, 17:02:33 »
sudo apt-get install php5-xcache как вариант.

А производительность примерно одинакова.
Ничего, скоро APC в ядро внесут )

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #7 : 27 Августа 2010, 10:14:53 »
установил по инструкции, настройки ниже.
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir = "/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

пых_инфо сказал всё вижу, битрикс тоже удовлетворен наличием акселератора... только загвоздка в том, что я чёт не ощущаю разницы в скорости с акселератором и без оного... как проверить?

Оффлайн theFlame

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #8 : 27 Сентября 2010, 13:02:13 »
Ребят, помогите разобраться, если не взападло.

Настроил сервак с 10.04. eAccelerator скомпилил, но ни phpinfo(), ни php -v его не видит. За то control.php думает, что всё работает. Не могу понять, так должно быть с версией 0.9.6.1 или это из-за php 5.3.2?

Ставил так:

# aptitude install build-essential php5-dev
# cd /usr/local/src
# wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.zip
# unzip eaccelerator-0.9.6.1.zip && rm eaccelerator-0.9.6.1.zip
# cd eaccelerator-0.9.6.1
# phpize

Дальше получаю вывод следующего содержания:
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

Честно сказать, не понял, хорошо это, плохо или как правильно в такой ситуации делать. Поэтому пошел дальше.
# ./configure --enable-eaccelerator=shared
# make
# make install
# nano /etc/php5/apache2/php.ini

В конце добавил следующее:
zend_extension                  = "/usr/lib/php5/20090626+lfs/eaccelerator.so"
eaccelerator.shm_size           = "0"
eaccelerator.cache_dir          = "/var/cache/eaccelerator"
eaccelerator.enable             = "1"
eaccelerator.optimizer          = "1"
eaccelerator.check_mtime        = "1"
eaccelerator.debug              = "0"
eaccelerator.filter             = ""
eaccelerator.shm_max            = "0"
eaccelerator.shm_ttl            = "0"
eaccelerator.shm_prune_period   = "0"
eaccelerator.shm_only           = "0"
eaccelerator.compress           = "1"
eaccelerator.compress_level     = "7"
eaccelerator.allowed_admin_path = "/var/www/apache2-default/control.php"

Дальше:
# mkdir /var/cache/eaccelerator
# chmod 0777 /var/cache/eaccelerator
# /etc/init.d/apache2 restart

После чего, сделав php -v, получил ошибку:
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imagick.ini on line 1 in Unknown on line 0
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0

Руками в этих файлах заменил "#" на ";". Может и не надо было делать, но после этого ошибка пропала. Вывело информацию следующего содержания:
PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:41:55)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Никакого упоминания про eAccelerator не нахожу. Аналогично себя ведёт и phpinfo().

При этом это не рабочая станция, комп полностью настроен как сервер со всеми базовыми настройками. Пакеты, которые ставили, можно увидеть в мануале по установке ISPConfig 3 на Ubuntu Server 10.04 в пределах одного материала, допустим на этой странице: http://www.howtoforge.com/perfect-server-ubuntu-10.04-lucid-lynx-ispconfig-3-p4

Вижу, что у меня не стоит ни один зи пакетов zend. Возможно ли в этом дело? При этом в php -v идёт упоминание про Zend Engine. Может что-то нужно из этого поставить и настроить?

Т. е. вроде всё и ничего не понятно. Может кто подскажет или догадается, что я не так сделал или не настроил?

Пользователь решил продолжить мысль 27 Сентября 2010, 14:19:21:
Всё, ребят, прошу прощения, разобрался. После компиляции лучший способ было сделать стандартные вещи без тех велосипедов, которые можно найти в каждом мануале по всей сети.

# cp /usr/local/src/eaccelerator-0.9.6.1/eaccelerator.ini /etc/php5/conf.d/eaccelerator.ini
# mkdir /tmp/eaccelerator && chmod 0777 /tmp/eaccelerator
# /etc/init.d/apache2 restart
« Последнее редактирование: 27 Сентября 2010, 14:19:21 от theFlame »

Оффлайн egorchik007

  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #9 : 27 Сентября 2010, 20:46:37 »
спасибо, theFlame, за ссылку на мануал на how2forge) никак не находил))

Оффлайн PeoneEr

  • Любитель
  • *
  • Сообщений: 91
  • О_О
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #10 : 28 Сентября 2010, 17:23:02 »
Цитировать
Total memory   32.00 mb
Где можно увеличить ?

Оффлайн theFlame

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #11 : 29 Сентября 2010, 11:29:32 »
Цитировать
Total memory   32.00 mb
Где можно увеличить ?
Вот тут http://eaccelerator.net/wiki/Settings на родном сайте в самом верху есть описание параметра eaccelerator.shm_size
Как по мне, значение этого параметра лучше держать в значении "0", а дёргать его лучше на системном уровне с помощью
# echo значение_в_байтах > /proc/sys/kernel/shmmax
Ну, или по логике зайти в файл
# /proc/sys/kernel/shmmax
и поправить руками.
Тогда при значении этого параметра "0" акселератор будет оттуда брать системное значение. Тут нужно пониматься, что эта память выделяется под все задачи, необходимые для работы конкретного сайта и распределяется динамически между рнр, мускл, еакселератор и прочее. При этом есть смысл отключить функцию сжатия кеша, чтобы ограничить нагрузку на ресурсы.

У меня только такой вот ещё свой вопрос. Стандартная папка для кеша - /tmp/eaccelerator. По идее после перезагрузки система очищает каталог /tmp, что с одной стороны хорошо в случае ошибочной работы акселератора, но плохо, потому что чем-то нужно будет создавать заново эту папку. Как лучше поступить в таком случае?

Оффлайн PeoneEr

  • Любитель
  • *
  • Сообщений: 91
  • О_О
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #12 : 29 Сентября 2010, 13:36:40 »
Стоит значение 0. В байтах значение прописано. А на сайте все равно 32мб показывает.

Оффлайн theFlame

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #13 : 29 Сентября 2010, 15:48:57 »
Стоит значение 0. В байтах значение прописано. А на сайте все равно 32мб показывает.
И даже перегружал комп? ;))

Оффлайн PeoneEr

  • Любитель
  • *
  • Сообщений: 91
  • О_О
    • Просмотр профиля
Re: Оптимизация web-сервера: eAccelerator
« Ответ #14 : 29 Сентября 2010, 18:39:07 »
Да

Пользователь решил продолжить мысль 29 Сентября 2010, 19:03:14:
Цитировать
peoneer@peoneer:~$ cat  /proc/sys/kernel/shmmax
536870912
peoneer@peoneer:~$ cat /etc/php5/conf.d/eaccelerator.ini
[eaccelerator]

;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
;
; eAccelerator is compatible with Zend Optimizer's loader. Zend Optimizer
; must be installed after eAccelerator in php.ini. If you don't use scripts
; encoded with Zend Encoder then we do not recommend you install Zend Optimizer
; with eAccelerator.


; You must uncomment one (and only one) line from the following to load
; eAccelerator extension.
extension="eaccelerator.so"
;zend_extension="/usr/lib/php5/20090626+lfs/eaccelerator.so"
;zend_extension_ts="/usr/lib/php/modules/eaccelerator.so"

;extension="eaccelerator.dll"
;zend_extension_ts="c:\php4\eaccelerator.dll"
;zend_extension="c:\php4\eaccelerator.dll"

; The amount of shared memory (in megabytes) that eAccelerator will use.
; "0" means OS default. Default value is "0".
eaccelerator.shm_size = "0"

; The directory that is used for disk cache. eAccelerator stores precompiled
; code, session data, content and user entries  here. The same data can be
; stored in shared memory also (for more quick access). Default value is
; "/tmp/eaccelerator".
eaccelerator.cache_dir = "/var/cache/eaccelerator"

; Enables or disables eAccelerator. Should be "1" for enabling or
; "0" for disabling. Default value is "1".
eaccelerator.enable = "1"

; Enables or disables internal peephole optimizer which may speed up code
; execution. Should be "1" for enabling or "0" for disabling.
; Default value is "1".
eaccelerator.optimizer = "1"

; Enables or disables debug logging. Setting this to 1 will print information
; to the log file about the cach hits of a file.
eaccelerator.debug = 0

; Set the log file for eaccelerator. When this option isn't set then the data
; will be logged to stderr
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"

; A string that's prepended to all keys. This allows two applications that use the
; same key names to run on the same host by setting this in .htaccess or in the main
; configuration file for the whole webserver.
eaccelerator.name_space = ""

; Enables or disables PHP file modification checking. Should be "1"
; for enabling or "0" for disabling. You should set it to "1" if you want
; to recompile PHP files after modification. Default value is "1".
eaccelerator.check_mtime = "1"

; Determine which PHP files must be cached. You may specify the number of
; patterns (for example "*.php *.phtml") which specifies to cache or
; not to cache. If pattern starts with the character "!", it means to ignore
; files which are matched by the following pattern. Default value is "" that
; means - all PHP scripts will be cached.
eaccelerator.filter = ""

; When eAccelerator fails to get shared memory for new script it removes
; all scripts which were not accessed at last "shm_ttl" seconds from shared
; memory. Default value is "0" that means - don't remove any files from
; shared memory.
eaccelerator.shm_ttl = "0"

; When eAccelerator fails to get shared memory for new script it tries to
; remove old script if the previous try was made more then "shm_prune_period"
; seconds ago. Default value is "0" that means - don't try to remove any
; files from shared memory.
eaccelerator.shm_prune_period = "0"

; Enables or disables caching of compiled scripts on disk. It has no effect
; on session data and content caching.
; Default value is "0" that means - use disk and shared memory for caching.
eaccelerator.shm_only = "0"

; The script paths that are allowed to get admin information and do admin
; controls
eaccelerator.allowed_admin_path = "/srv/www/vtomcke.ru/free/info/control.php"
« Последнее редактирование: 29 Сентября 2010, 19:03:14 от PeoneEr »

 

Страница сгенерирована за 0.065 секунд. Запросов: 25.