понедельник, 26 марта 2012 г.

zfs+mysql

http://lagman.su/2010/01/mysql-innodb-zfs-tuning/
http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
Тестирование MySQL: ZFS vs UFS плюс комменты
http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide
http://www.solarisinternals.com/wiki/index.php/ZFS_for_Databases
http://wiki.freebsd.org/ZFSTuningGuide

ИБП

Ippon smart winner 1500/2000

Стандартный комплект состоит из блока инвертора и батарейного блока.
В целом, ИБП неплохой, а учитывая его стоимость - замечательный. Главный плюс -- штатно можно поставить до 6 батарей, увеличивая время работы до 6 раз (но не нагрузку - не забываем, что если у нас 1500ВА, больше подключать нельзя, независимо от количества батарей). Плюс есть дополнительный SNMP модуль, хотя стоит он дороже дополнительной батареи - порядка 6к руб, вдобавок найти его очень сложно. Но это по сути мини-комп, поэтому можно сделать аналог.
Также дополнительно покупается стоечный комплект, но он дешёвый. Включает в себя рельсы, 2 панели спереди и сзади, винтики, крепёж для стойки. Насколько я помню, комплект универсальный -- можно ставить как инвертор+ББ, так и 2 ББ.

Для дома подходит плохо - очень шумный, вдобавок есть ревизии, когда встроенный вентилятор не отключается вообще. Для серверной это значения не имеет, а вот для дома - только если есть специальное отдельное помещение. С охлаждением инвертора также есть проблемы - в сети много схем доработки, в том числе для дома, чтобы охлаждало лучше и стало тише.

Батарейный блок (ББ) - внутри 4 батареи 12в 7.2/9АЧ (1500/2000ВА) и небольшая плата, на которой соединяются все провода и стоят 4 предохранителя. При выгорании любого предохранителя - отключит все следующие батареи, поскольку их подключение каскадное. Также это создаёт некоторые проблемы про замене. Одно хорошо - пока работает от сети, ББ можно отключать без выключения нагрузки, но после манипуляций с батареями желательно сделать самотестирование (если батареи при этом отключены, нагрузку отключит).
Сами аккумы внутри - дерьмовейшие CSB, которые через год уже теряют примерно половину ёмкости и более, начинают пухнуть и трескаться. Одна батарея у нас вообще коротнула внутри, оплавило весь ББ и бок инвертора. Полку разъело электролитом, видимо ставшим от таких температур жидким. Поэтому нужно планово заменять аккумы на другие, более качественные, например через год. Мы ставим дельты, серия для ИБП, кто-то советовал varta.
Тут многие начнут говорить "а вот в APC..." А в АРС то же дерьмо стоит! Просто с наклеечкой фирменной поверх, но в сети опять же полно фоток, где эту наклеечку оторвали, а там CSB или аналогичный трэш, поскольку это выгодно производителю, чтобы каждые 1-2 года меняли все батареи во всех ибп, а то и ИБП целиком. Это относится к сериям back и всяким smart, включая серверные, но не относится к железу уровня от 1 ляма.

Масса порядка 18кг -- 6 кг инвертор + 12кг ББ.

Итого: лучшее применение -- в стойках к серверам с 2 входами, по 2 ИБП, каждый вход на свой ИБП, не забывая правила монтажа ИБП (в самый низ). Также хорошо ставить в офисах на группу компов, от 3 и до 6-8, зависит от их мощности и мониторов, с ЭЛТ может даже 6 быть много, с ЖК иногда и на 8 загрузка менее 75%.
Для дома - желательна доработка.

среда, 21 марта 2012 г.

illumos

https://www.illumos.org/

Несколько ключевых разработчиков OpenSolaris при поддержке компании Nexenta Systems официально объявили о создании проекта Illumos, в рамках которого создан полностью свободное и развиваемое независимым сообществом разработчиков ответвление от операционной системы OpenSolaris. По заявлению разработчиков проект будет на 100% совместим на уровне ABI с оригинальным ядром Solaris, т.е. будет следовать изменениям в кодовой базе OpenSolaris, дополняя ее собственными разработками и поддерживая собственный набор изменений. Проект будет содержать в себе только открытые компоненты, включая системные библиотеки, ядро ОС и драйверы.
http://www.opennet.ru/opennews/art.shtml?num=27515

Если есть какие-то идеи и патчи к тому же zfs, лучше их проталкивать в этот проект -- больше шансов, что пойдёт в апстрим.

Есть и ОСи на его основе: nexenta stor, SmartOS

Судя по спонсорам LSi и Areca, для всех контроллеров на основе илюмоса лучше использовать именно эти фирмы.

вторник, 20 марта 2012 г.

Основы работы с git

Основные постулаты работы с кодом:

  • Каждая задача решается в своей ветке.
  • Коммитим сразу, как что-то получили осмысленное.
  • В master мержится не разработчиком, а вторым человеком, который производит вычитку и тестирование изменения
  • Все коммиты должны быть осмысленно подписаны.
  • Репозиторий должен держаться сухим и шелковистым
Инструкция-шпаргалка для начинающих

Git Wizardry. Азы.

Плюс настройка gitolite

понедельник, 19 марта 2012 г.

FastCGI: socket file descriptor (1103) is larger than FD_SETSIZE (1024)

Была год назад проблема с
(20)Not a directory: FastCGI: failed to connect to server "/home/abc/data/php-bin/php.sh": socket file descriptor (1103) is larger than FD_SETSIZE (1024), you probably need to rebuild Apache with a larger FD_SETSIZE
Сейчас снова всплыла после очередного обновления апача.

Фиксы:
make.conf:
.if ${.CURDIR} == ${PORTSDIR}/www/apache22
WITH_SSL=YES
WITH_SUEXEC=YES
PERF_TUNING=YES
WITH_MODACCEL=YES
HARD_SERVER_LIMIT=4096
#SUEXEC_DOCROOT=/home
SUEXEC_DOCROOT=/
SUEXEC_USERDIR=www
SUEXEC_LOGFILE=/var/log/httpd-suexec.log
SUEXEC_CALLER=www
CFLAGS+=" -DFD_SETSIZE=8192"
CONF_CFLAGS=" -DFD_SETSIZE=8192U"
.endif

В /usr/src/sys/sys/select.h:
...
#define FD_SETSIZE 8192U
...


После этого пересобираем апач и ap22-mod_fastcgi. Поведение с fcgid не проверялось.

Следующее поколение Wi-Fi — кратко о 802.11ac

http://habrahabr.ru/post/136728/

пятница, 16 марта 2012 г.

[apc-warning] Unable to allocate memory for pool

На одном проекте очень много стали занимать еррлоги. И забивало их с огромной скоростью строками
[apc-warning] Unable to allocate memory for pool

Первое - проверить версию АРС:
It might be a bug in APC; http://pecl.php.net/bugs/bug.php?id=16966
It is present in 3.1.4 and corrected in 3.1.5.

Второе - несколько твиков
apc.shm_size="128"
(у меня на 3.1.3 помогло), плюс "к размышлению" можно поиграть с параметрами
[apc]
apc.enabled="1"
apc.shm_size="256"
apc.stat="1"
apc.file_update_protection="2"
apc.ttl="3600"
apc.user_ttl="1200"
apc.gc_ttl="3600"
apc.num_files_hint="40000"
apc.rfc1867="1"
apc.lazy_functions=1
apc.lazy_classes=1

http://pecl.php.net/bugs/bug.php?id=16966
https://bugs.php.net/bug.php?id=58982

вторник, 13 марта 2012 г.

воскресенье, 11 марта 2012 г.

Оборудование Ubiquiti Networks (UBNT)

Интересуют точки доступа фирмы Ubiquiti Networks (UBNT), взяли на пробу 1 серии UniFi (далее речь про эту серию). Это точки для внутриофисного применения, с софт-контроллером.

Особенности: программный контроллер сети, позволяющий сделать единую вайфай сеть из множества точек. Есть прошивки, чтобы работать без такого контроллера, когда используется только 1 точка.
Питание по PoE (адаптер в комплекте[1][2]), так что нужен только 1 провод.
Есть версия большей мощности (200мВт)
Контроллер изначально виндовый, но есть бета под дебиан.

Недостатки: лан порт 100мбит - хоть и заявлено 300, вай-локалка физически больше 100мбит не будет;
Работает только на 2.4ГГц - при окне в 40МГц весь эфир делится всего на 2 независимых. Лучше бы была версия 2.4+5ГГц.

Также есть версия UniFi mini. Меньше покрытие, меньше цена.

"Да, к осени выйдет UniFi Pro на еще более шустрой платформе и с гигабитом." (линк 3, коммент)
" можно ждать появления версии pro — она будет поддерживать 802.3af, но цена будет выше"
UniFi Pro will have blue LED ring. It will also have 2 Gbit ports. оф форум
The Pro version will have two simultaneous radios on 2.4G and 5G. другая ветка
В общем, обещалось к концу 2011, но до сих пор (11 марта 2012) нету. А жаль, штука крайне интересная должна быть.

Настройка в L3
To perform L3 adoption with the discovery utility:
1. wait until the AP shows up
2. if the AP is not in default state. click "reset", specify the SSH username/password and click "Apply"
3. click on "manage", modify the inform URL and leave the SSH username/password as ubnt/ubnt and click "Apply"
4. open a browser to your remote UniFi controller and you should see it being "Pending Approval"
5. Click on "approve". You'll see it going to "Adopting" state, ignore it as it'll eventually become "Adoption Failed" or "Disconnected"
6. perform [3] again (no need to wait for [5] to finish)
7. AP is now managed by the controller
http://forum.nag.ru/forum/index.php?showtopic=72255

UP
2 недели испытаний - работает хорошо, 30 клиентов на точку тянет не напрягаясь, в отличии от длинка 2100ap, который 10 тянет со скрипом, на 15 уже глючит и подключает не всех + иногда работает, но скорость менее 100кб/с. Тут таких проблем нет. Работа в условиях бизнес-центра, где много соседей и весьма шумный эфир.

UP2
Есть более крутой аналог - Aruba, но по цене сравнима с cisco, и аппаратным контроллером с ценами от $5k

Линки
1. UniFi — корпоративный Wi-Fi с контроллером, доступный каждому. Первое впечатление
2. Ubiquiti UniFi в StandAlone режиме (без внешнего контроллера)
3. UniFi 2.0 Хотспот для кафе и гостиниц. Офисный Wi-Fi. Обзор нового бесплатного контроллера
4. оф. FAQ - желательно ознакомиться

Примечания
1 инжектор не стандарта 802.3af, а свой собственный (см линк1), возможно решается через их же адаптер
2 инжектор совместим (?) также с микротиком (в магазине 2)

среда, 7 марта 2012 г.

nginx: ограничиваем коннекты и скорость

Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов по заданному ключу или, как частный случай, число запросов с одного IP-адреса.

limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
location / {
...
limit_req zone=one burst=10;
}

burst в данном случае это превышение "над" лимитом, то есть

http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

Также нужно ограничивать подключения с 1 айпи во много потоков, это делается через другой модуль: ngx_http_limit_conn_module

limit_zone zone_name $binary_remote_addr 10m;

server {
location / {
limit_conn zone_name 8; <-- number of connections per IP
}
}

Скорость:
if ($slow) {
set $limit_rate 4k;
ngx_http_core_module.html#limit_rate
А также limit_rate_after

Такие вещи как: limit_zone zone_name $binary_remote_addr 10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

можно устанавливать как в блоке server, так и глобально в http. Как я понимаю, также имеет значение имя этих переменных, если больше 1 проекта.

ISPManager: всякие заметки

Этот пост будет изменяться и дополняться по мере приведения заметок в порядок.

При создании нового домена он заполняется каталогом webstat и файлом index.html. Убираем:
# rm -rf /usr/local/ispmgr/etc/www.skel/*

Очистка кэша:
/usr/local/ispmgr/sbin/pkgctl cache
killall -9 ispmgr

Основной конфиг располагается в /usr/local/ispmgr/etc/ispmgr.conf

Когда много mysql баз, работа с ними в админке крайне медленная - каждый раз пересчитывается их размер. Отключить - в конфиг:
Option HideDbSize

Задать по умолчанию режим работы для php в fastcgi:
Option ForcePhpFastCgi

Разрешить создание домена и его поддоменов на разных пользователей:
Option PermitRootMixDomain

куда делся режим "PHP как FastCGI"

forum.ruweb.net/viewthread.php?fid=18&tid=2813

В шаблонах VDS для FreeBSD-6 имелось 3 режима работы PHP:
- PHP как модуль Apache;
- PHP как CGI;
- PHP как FastCGI.

Во FreeBSD-8 их осталось только два:
- PHP как модуль Apache;
- PHP как CGI.

Поэтому часто приходится слышать вопрос: куда делся режим "PHP как FastCGI"?

Дело в том, что режим "PHP как модуль Apache" на новых VDS претерпел изменения. Теперь Apache там собран с поддержкой MPM-ITK, который позволяет запуск каждого виртуального хоста под отдельными uid и gid. Иными словами, php-скрипты в этом режиме будут обрабатываться от имени владельца домена, что повышает безопасность и снимает некоторые ограничения (например, safe mode - отключен).
Таким образом, в большинстве случаев оптимальным режимом работы PHP на VDS с FreeBSD-8 теперь является "PHP как модуль Apache".


Что делать, если для сайта крайне необходим режим "PHP как FastCGI"?

К сожалению, просто так вернуть его не получится - в частности нужно пересобрать Apache без поддержки MPM-ITK. Это означает, что он перестанет обновляться автоматически вместе с шаблоном, и забота об актуальности Apache в дальнейшем целиком ложится на плечи владельца VDS.

Если вы понимаете последствия данного шага, вернуть "PHP как FastCGI" можно следующим образом:

1) открываем файл /etc/make.conf и удаляем строчку "WITH_MPM=itk" из блока:

.if ${.CURDIR:N*/usr/ports/www/apache22} == ""
WITH_MPM=itk
WITH_SUEXEC=yes
SUEXEC_DOCROOT=/
WITH_PROXY_MODULES=yes
.endif

2) удаляем apache-itk:
# pkg_delete -f apache-itk-2.2.21

3) устанавливаем apache (без itk):
# cd /usr/ports/www/apache22 && make install clean

4) устанавливаем mod_fcgid:
# cd /usr/ports/www/mod_fcgid && make install clean

5) открываем файл /usr/local/etc/apache22/httpd.conf и добавляем строчку:
LoadModule fcgid_module libexec/apache22/mod_fcgid.so

6) в том же файле во всех виртуальных хостах (если они уже есть) меняем:
AssignUserID имя_юзера имя_юзера
на
SuexecUserGroup имя_юзера имя_юзера

7) открываем файл /usr/local/ispmgr/etc/ispmgr.conf и удаляем оттуда строчку:
Option ApacheMPM

8) убиваем все процессы ISPmanager:
# killall ispmgr

9) если после этого режим "PHP как FastCGI" не появился, добавляем строчку:
Option ForcePhpFastCgi
в файл /usr/local/ispmgr/etc/ispmgr.conf и повторяем пункт 8.

nginx и TLS 1.2?

Офдока1: только 1.0
офдока2: есть и 1.2
Since version 1.0.5, nginx uses “ssl_protocols SSLv3 TLSv1” and “ssl_ciphers HIGH:!aNULL:!MD5” by default, so configuring them explicitly only makes sense for the earlier nginx versions. Since versions 1.1.13 and 1.0.12, nginx uses “ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2” by default.

Похоже, большинство лин-дистрибутивов будут требовать ручной пересборки нгинха на последние версии, чтобы можно было активировать 1.2. Тем более, в некоторых он вообще древний как помёт мамонта. Встречались 0.7 и даже 0.6.

According to Compatibility with the OpenSSL Library, GnuTLS cannot fully replace OpenSSL.
http://askubuntu.com/questions/53638/can-i-use-nginx-and-gnutls-together
Что с учётом того, что разрабы openssl никак не могли разродиться на поддержку 1.2, делает всю картину несколько грустной. С другой стороны, у кого-то уже и 1.2 работает.