/
05 May 2010Добро пожаловать на блог о *Nix cистемах.
Добро пожаловать на блог о *Nix cистемах.
Мы рады представить вам Latency Based Routing (LBR) для Amazon Route 53, высоконадежный и рентабельный сервис. LBR одна из самых запрашиваемых функций, которая поможет вам улучшить производительность ваших приложений в глобальном масштабе. LBR направляет ваших пользователей прямо в конечную точку AWS, будь то EC2 инстанс, Elastic IP или ELB балансер.
Так говорится в официальном анонсе новой функции от Amazon для Route53 DNS.
AWS сообщают, что постоянно собирают анонимную информацию о задержках до конечных пользователей, сохраняют в RDS, и с помощью этих данных проводят сравнительные анализы этих самых задержек.
Схема работает таким образом, что Route 53 автоматически определит ближайший к клиенту датацентр и отдаст IP вашего приложения в нем.
Эта функция работает для записей “A”, “AAAA”, “CNAME”, “TXT”, а также для Route 53 специфических “ALIAS to A” и “ALIAS to AAAA” типов записей.
Цены:
$0,750 за миллион запросов – Первый млрд. запросов / месяц
$0,375 за миллион запросов – После 1 млрд. Запросов / месяц
Запросы к альясам, которые закреплены к Elastic Load Balancers бесплатны. Эти запросы включены в отчет(usage report) как “Intra-AWS-DNS-Queries”.
Промучался я с этим добрый час или полтора. Понадобилось мне перести БД с системного диска, для облегчения жизни оного. Сделал по стандартной схеме: стоп mysql, cp /newHDD/mysql/, ln -s …, старт mysql. И не заводится mysql. Что я только не делал, с правами, симлинками, в конфиге напрямую прописывал новый путь к базам, в логах было все одни и те же месседжи:
1 2 3 4 5 6 7 8 9 | [Note] Plugin 'FEDERATED' is disabled. /usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. InnoDB: Operating system error number 13 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'create'. InnoDB: Cannot continue operation. |
Проблема лежала совсем в другом месте. Как оказалось, во всем был виноват apparmor.
Решаем добавлением этих строк в:
/etc/apparmor.d/usr.sbin.mysqld
1 2 | /new-mysql-dir/ r, /new-mysql-dir/** rwk, |
1 | /etc/init.d/apparmor restart |
Когда я добрался до настройки git для моего небольшого проектика у меня появилась небольшая проблема. После того как я сгенерировал ключ и добавил его на GitHub(http://help.github.com/linux-set-up-git/), при проверке появилась следующая ошибка:
1 | #Agent admitted failure to sign using the key.Permission denied (publickey). |
Решение:
1 | ssh-add ~/.ssh/id_rsa |
Проверяем:
1 2 | ssh -T git@github.com Hi unixway! You've successfully authenticated, but GitHub does not provide shell access. |
Устанавливаем MySQL-python через pip. Вылетает с такой ошибкой:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 | Downloading/unpacking MySQL-python==1.2.3 (from -r requirements.txt (line 5)) Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded Running setup.py egg_info for package MySQL-python sh: mysql_config: not found Traceback (most recent call last): File "<string>", line 14, in <module> File "/home/django/build/MySQL-python/setup.py", line 15, in </module><module> metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 24, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found Complete output from command python setup.py egg_info: sh: mysql_config: not found Traceback (most recent call last): File "<string>", line 14, in <module> File "/home/django/build/MySQL-python/setup.py", line 15, in </module><module> metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 24, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found ---------------------------------------- Command python setup.py egg_info failed with error code 1 Storing complete log in /home/django/.pip/pip.log </module></string></module></string> |
Решение:
1 | apt-get install libmysqlclient-dev |
Вот такая ошибка появлялась при переносе пхпшной части сайта с Apache2 на FastCGI.
1 | FastCGI sent in stderr: "PHP Parse error: syntax error, unexpected $end in |
Избавляемся от нее включением в php.ini следующей опции:
short_open_tag = On
Что позволяет нашему интерпритатору одинаково понимать в нашем коде
< ? и < ?php
Сделаем небольшой чеклист при использовании SSD.
Если у вас есть возможность перенести/переставить все на новую файловую систему, то лучше это сделать.
По моему мнению для FreeBSD это конечно ZFS, для Linux btrfs, и возможно любая не журналируемая.
Но можно просто отключить в работающей FS журнал:
1 | tune2fs -o journal_data_writeback /dev/sda1 |
Далее стоит вынести временные файлы в память. Некоторые еще советуют вынести в память /var/log/. Правим /etc/fstab следующим образом:
1 2 3 | tmpfs /tmp tmpfs defaults 0 0 tmpfs /var/tmp tmpfs defaults 0 0 tmpfs /var/lock tmpfs defaults 0 0 |
Добавляем следующие опции к монтированию, /etc/fstab:
1 2 3 4 | ###Для ext4 noatime,discard,data=writeback,errors=remount-ro ###Для btrfs defaults,noatime,compress,nobarrier,nodatacow,ssd |
Меняем I/O планировщик в ядре на noop. Так как он лучше работает с SSD:
1 2 3 | aptitude install sysfsutils #Добавляем следующее в /etc/sysfs.conf block/sda/queue/scheduler = noop |
У SSD есть два режима active и suspend. Увеличим время нахождения в диска в suspend, что бы уменьшить энергопотребление.
И еще одна опция, которая увеличит время между записям на диск.
Добавляем в /etc/sysctl.conf
1 2 | vm.laptop_mode=5 vm.dirty_writeback_centisecs = 15000 |
Выше мы перенесли tmp в память, но броузеры тоже весьма агрессивно работают с файловой системой. Что бы избежать лишних операций записи, перенесем кеш броузера в память:
Добавляем в /etc/fstab:
1 2 3 | none /ramfs ramfs defaults,size=250M 0 0 #создаем папку, даем права mkdir /ramfs ; chown user:user /ramfs |
Добавляем к ярлыку(для Ubuntu 11.04 “~/.local/share/applications/{$BROWSER_NAME}.desktop”) chrome опцию
–disk-cache-dir=”/ramfs”
Ну и последним для тех кто не хочет использовать кеш вообще:
Firefox->about:config->browser.cache.disk.enable: false
В запуск chrome добавим такую опцию(для Ubuntu 11.04 “~/.local/share/applications/{$BROWSER_NAME}.desktop”) –disk-cache-size=0
Все было написано весьма быстро, поэтому если кому интересны подробности, пишите в комментах-добавлю.
Thanks Arsen.
Итак мы хотим получать отчеты о состоянии серверов на мейл.
Расскажу на примере Ubuntu, которая оказалась под рукой.
Устанавливаем
aptitude install logwatch
копируем конфиг в /etc/, что бы при обновлении не затерлись наши правки
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
Делаем основные изменения
vim /etc/logwatch/conf/logwatch.conf
MailTo = nw@gmail.com
Output = mail
Format = html
Detail = High
Подразумевается, что почтовик у вас настроен, и письма уходят с сервера без проблем.
Кстати уже можно проверять работу вашего нового сервиса, следующим образом
/usr/sbin/logwatch –mailto nw@gmail.com
Если все нормально, то к вам на почту придет письмо с отчетами по вашему серверу.
Программа при установке сама позаботилась о периодичности отчетов, но это можно изменить при желании в
vim /etc/cron.daily/00logwatch
Вот так, быстро и полезно.
Статья не моя, но очень полезная и интересная. Автор http://vkontakte.ru/id5067693.
Несколько дней назад у меня возникло желание автоматизировать получение моих любимых сериалов. Таким образом задача была ясна.
Материальная база уже имелась.
1) Домашний компьютер с debian 6.0 консольный.
2) Установленный на нем Transmission.
3)Желание.
После некоторого поиска был выбран нужный скрипт и работа пошла.
Для Ubuntu 10.04 LTS пакет sun-java6 был убран. Рекомендуют использовать openjdk-6
Если вы не можете сделать такой переход с проприетарных Sun JDK/JRE на OpenJDK, вы можете установить sun-java6 из так называемых Canonical Partner Repository.
Достаточно выполнить следующую команду в консоли:
1 | add-apt-repository "deb http://archive.canonical.com/ lucid partner" |
Не забываем о:
1 | aptitude update |
Сегодня я покажу как бороться с такой ошибкой при master-slave репликации.
У меня она вылетала при попытке создать большую таблицу на мастер сервере. Оказывается проблема заключается в следующем.
“in Innodb row level locks are implemented by having special lock table, located in the buffer pool where small record allocated for each hash and for each row locked on that page bit can be set.”
Что примерно означает, что Innodb блокирует строки при помощи специальной таблицы, которая расположена в boofer pool…
По умолчанию значение innodb_buffer_pool_size равно 8M. В документации MySQL говорится, что вы можете выставить это значение равным до 80% размеру оперативной памяти в системе, но так же и говорится, что нужно быть осторожнее, и не стоит отдавать максимум,если вам того не нужно.
Итак решение заключается в добавлении/изменении опции в my.cnf:
1 2 | [mysqld] set-variable=innodb_buffer_pool_size=512M |
Рестарт сервиса. Далее я удалил табличку на мастере и заново создал. На слейве она появилась без всяких ошибок.
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Mar | ||||||
| 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 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||