olemskoi.ru

Добавлен пакет php-pecl-sphinx 1.0.4

Комментариев нет

В репозиторий добавлен пакет php-pecl-sphinx 1.0.4 из репозитория REMI.

03.09.2010

Написал Игорь Олемской

Обновление php-pecl-memcache из SVN, исправление ошибки «delete» для последних memcached

Комментариев нет

В репозитории «Southbridge» обновлен php-pecl-memcache 3.0.4 до последней версии из SVN, в которой исправлена ошибка взаимодействия с последними версиями memcached (CLIENT_ERROR bad command line format).

22.08.2010

Написал Игорь Олемской

Отличная книга по настройке, оптимизации и масштабированию PostgreSQL

Комментариев нет

В книге описаны теория и практические советы по настройке, оптимизации и масштабированию PostgreSQL. Очень рекомендую!

http://postgresql.leopard.in.ua/

16.08.2010

Написал Игорь Олемской

Рубрики: Мои записи

Хинты по работе с MegaCLI-рейдом (DELL)

Комментариев нет

http://bigkernel.com/tag/megacli/

22.07.2010

Написал Игорь Олемской

Рубрики: Мои записи

CentOS RPM ruby enterprise 1.8.7-2010.02 и rubygems 1.3.2

Комментариев нет

В тестовый репозиторий CentOS добавлен ruby enterprise 1.8.7 (2010.02) и rubygems 1.3.2.

Для подключения репозитория Southbridge добавьте следующие строки в /etc/yum.repos.d/southbridge-testing.repo:

[southbridge-testing]
name=Southbridge test packages repository
gpgcheck=1
gpgkey=http://rpms.southbridge.ru/RPM-GPG-KEY-southbridge
enabled=1
baseurl=http://rpms.southbridge.ru/testing/$basearch/

Для установки ruby 1.8.7 запустите:

yum install ruby-enterprise ruby-enterprise-rubygems

22.07.2010

Написал Игорь Олемской

Gearman и PHP — асинхронные задачи (перепечатка)

Комментариев нет

gearman

Gearman — это сервер организации и распределения задач, или проще говоря сервер очереди сообщений. Gearman включает множество функциональных особенностей — балансировка, асинхронное/синхронное выполнение, приоритеты и т.п. В этой статье, на примере с PHP, реализуем простой механизм отложенной отправки почты.

Суть

Зачем вообще нужны такие решения, как Gearman, читайте в статье “Очередь сообщений — что это и зачем?“. Наша задача реализовать отложенную отправку почты, т.к. это довольно ресурсоемкая операция и может сильно влиять на скорость ответа приложения клиенту.

Установка

Установка происходит в два этапа. Сначала ставим сам сервер (исходники качаем тут):

tar -xvzf  gearmand-version.tar.gz
cd gearmand
./configure
make; make install

Теперь устанавливаем php расширение:

pecl download gearman-0.7.0
tar -xvf gearman-0.7.0.tgz
cd gearman-0.7.0
phpize
./configure
make
make install

Не забываем добавить “extension=gearman.so” в php.ini. Если все хорошо, то phpinfo () покажет нам:
php-info-gearman

Клиент

В нашем клиенте (основное приложение) отправка email сообщений будет осуществляться путем регистрации новых задач на сервере Gearman:


...
$mail = array(
  'to' => 'test@gmail.com',
  'subject' => 'Привет',
  'body' => 'Это тестовое сообщение',
);
...

# Подключаемся к серверу
$client= new GearmanClient();
$client->addServer();
# Регистрируем задачу для фонового выполнения
# "sendmail" - это тип задачи
# $mail - это данные письма
$result = $client->doBackground("sendmail", serialize($mail));

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

Обработчик задачи

Обработчик — это отдельное приложение (скрипт), который “слушает” сервер на предмет появления новых задач. Как только задача приходит — он выполняет связанную с ней логику (в нашем случае это будет отправка письма с помощью почтового сервера).


# Создаем "воркера" и подключаемся к серверу задач
$worker= new GearmanWorker();
$worker->addServer();

# Регистрируем обработчик события "sendmail"
# "send_mail" - это имя функции, объявленной ниже
$worker->addFunction("sendmail", "send_mail");

while (1)
{
  echo "Ждем работы...\n";

  $ret= $worker->work();
  if ($worker->returnCode() != GEARMAN_SUCCESS) break;
}

# Функция реальной отправки почты
# В аргумент ей передается объект задачи
function send_mail($job)
{
  $workload= $job->workload();
  $data = unserialize($workload);
  mail($data['to'], $data['subject'], $data['body']);
}

Полезные ссылки

Google Bookmarks Digg I.ua Ru-marks Ruspace Zakladok.net Reddit delicious Technorati Yahoo My Web News2.ru БобрДобр.ru Memori.ru rucity.com
Related posts:
  1. Очередь сообщений на основе PHP и MemcacheQ

installing CentOS from USB pen drive (перепечатка)

Комментариев нет

Понадобилось у становить CentOS на машину которая не умеет загружаться по сети и не оказалось под рукой CD-ROM. Создаем загрузочную флешку для установки CentOS

вставляем флешку в usb порт, появляется новое устройство /dev/sdd теперь запустим fdisk

fdisk /dev/sdd

удалим все разделы создадим:
/dev/sdd1 размером 15 MB
/dev/sdd2 всё остальное пространство

/dev/sdd1 нужно сделть Bootable, т.е. загрузочным и переходим к установке:
wget http://mirror.yandex.ru/centos/5.4/os/i386/images/diskboot.img
dd if=diskboot.img of=/dev/sdd1

если размер USB диска позволяет, то форматируем /dev/sdd2 в ext3
mkfs.ext3 /dev/sdd2
и копируем в этот раздел содержимое установочного диска.

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

ip_conntrack perfomance

Комментариев нет

Интересный комментарий из статьи http://rackerhacker.com/2008/01/24/ip_conntrack-table-full-dropping-packet/

Some readers may be interested to know what ip_conntrack is in the first place, and why it fills up. If you run an iptables firewall, and have rules that act upon the state of a packet, then the kernel uses ip_conntrack to keep track of what state what connections are in so that the firewall rule logic can be applied against them. If you have a system that's getting a lot of network activity (high rates of connections, lots of concurrent connections, etc) then the table will accumulate entries.

The entries remain until an RST packet is sent from the original IP address. If you have a flaky network somewhere between you, and the clients accessing your server, it can cause the RST packets to be dropped due to the packet loss, and leave orphaned entries in your ip_conntrack table. This can also happen if you have a malfunctioning switch or NIC card... not necessarily a routing problem out on the internet somewhere.

Typically when I've seen this trouble crop up is when a server is the target of a DDoS attack. Filling up the ip_conntrack table is a relatively easy way to knock a server off line, and attackers know this.

As Major suggested, you can get short term relief by increasing the size of the table. However, these entries are held in memory by the kernel. The bigger you make the table, the more memory it will consume. That memory could be used by your server to serve requests if you really don't need the stateful firewall capability. Don't waste resources on this feature if you really don't need it.

Another option to consider is turning OFF iptables rules that use ip_conntrack so the state able is not used at all. Anything with «-m state» or «-t nat» can be turned off. If you want to just flush all your iptables rules you can do an «iptables -P» to set a default allow policy and «iptables -F» to flush all the rules. On an RHEL or CentOS system you can just do «service iptables stop».

Once iptables is no longer using ip_conntrack, you can reclaim the memory the table was using by unloading the related kernel modules.

rmmod ipt_MASQUERADE
rmmod iptable_nat
rmmod ipt_state
rmmod ip_conntrack

Then you will have an empty ip_conntrack that will stay empty. I mention this because a lot of sysadmins have hordes of iptables rules installed as a matter of course, and don't recognize the downside of having them present. You can still use iptables, but to avoid the use of ip_conntrack simply don't use rules based on stateful logic.

18.06.2010

Написал Игорь Олемской

Рубрики: Мои записи

Вышел CentOS 5.5 (перепечатка)

Комментариев нет

Представлен релиз Linux дистрибутива CentOS 5.5, основанный на пакетной базе Red Hat Enterprise Linux 5.5. В отличие от RHEL в CentOS объединены в единый репозиторий пакетов и в один установочный комплект пакеты как из серверной, так и из десктоп редакции RHEL. CentOS 5.5 поставляется для платформ i386 и x86_64 в сборках: LiveCD (689 Мб), DVD [...]

Добавлен новый пакет swfmill-0.3.0

Комментариев нет

В репозиторий Southbridge добавлен новый пакет swfmill-0.3.0.

26.04.2010

Написал Игорь Олемской