Blog

  • После обновления ALERT — canary mismatch on efree() — heap overflow detected

    После очередного обновления ubuntu 8.04 LTS, Апач начал вываливаться с ошибкой
    ALERT — canary mismatch on efree() — heap overflow detected
    Долгие поиски выявили что баг описан уже и я не первый.
    Для меня это первый баг, который повлиял на стабильность работы сервера

    This bug has been fixed in CVS.

    Snapshots of the sources are packaged every three hours; this change
    will be in the next snapshot. You can grab the snapshot at
    http://snaps.php.net/.

    Thank you for the report, and for helping us make PHP better.

    Собирать свежий пхп из сорцов мне не хотелось(суровое детсво, где я много компилил..), я слил с ubuntu 8.10 sources.list
    сделал
    apt-get update
    apt-get install php5-common
    после чего установилась php 5.2.6
    После ночи работы пока всё работает

  • Оптимизация web-сервера: eAccelerator

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

    ставим php5-dev

    apt-get install php5-dev

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

    phpize

    ./configure —enable-eaccelerator=shared

    make

    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/»

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

    mkdir /var/cache/eaccelerator

    chmod 777 /var/cache/eaccelerator

    теперь можно перезапустить apache

    для контроля над тех процессом есть файл control.php
    в нём находим логин пароль и перекидываем в нужную нам папку на территории вэб сервера ну и заходим 🙂

  • Iptables SNAT

    iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 1.2.3.4Code language: Bash (bash)

    eth1 — внешний интерфейс сервера
    1.2.3.4 — внешний ИП сервера

  • iptables nat + torrent

    iptables -A INPUT -p tcp --destination-port 6881:6999 -j ACCEPT
    iptables -A OUTPUT -p tcp --source-port 6881:6999 -j ACCEPTCode language: Bash (bash)
  • iptables пробросить порт

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

    iptables -t nat -A PREROUTING -p tcp -d 91.195.101.20 --dport 7888 -j DNAT --to-destination 192.168.100.251:7888
    iptables -t nat -A POSTROUTING -p tcp --dst 192.168.100.251 --dport 7888 -j SNAT --to-source 91.195.101.20Code language: Bash (bash)

    Первое правило подменяет ip приёмника на внутренний ип, а второе обратно подменяет ип отправителя на внешний.