…В детстве нас воспитывают согласно концепции о том, что существуют некие “взрослые”, которые во всем “разбираются” и точно знают, как устроен этот мир изнутри… Мы все растем и верим в эту сказку… только для того, чтобы потом с ужасом осознать, что теперь мы – и есть эти “взрослые”, и все “взрослые” вокруг нас, это такие-же дети, как и мы! Отличие только в том, что теперь у этих детей есть уже свои дети – и никто из этих “взрослых” не понимает толком: ЧТО ЗА ХУЙНЯ ТВОРИТСЯ ВОКРУГ?
– Джо Роган
via http://blog.brj.pp.ru/post/66915325 79
– Джо Роган
via http://blog.brj.pp.ru/post/66915325
"Петров молчит, собираясь с мыслями. В его мозгу рождаются одна за другой красочные метафоры, которые позволили бы донести до окружающих сюрреализм происходящего, но как назло, все они, облекаясь в слова, начинаются неизменно словом «Блять!», совершенно неуместным в рамках деловой беседы."
http://alex-aka-jj.livejournal.com/6698 4.html
http://alex-aka-jj.livejournal.com/6698
cat /proc/net/netstat | \
awk '(f==0) { i=1; while ( i<NF) {n[i] = $i; i++ }; f=1; next} \
(f==1){ i=1; while ( i<NF){ printf "%s = %d\n", n[i], $i; i++}; f=0} '
http://bugs.debian.org/cgi-bin/bugrepor t.cgi?bug=566819
Делаем по аналогии:
Делаем по аналогии:
1. strace -ff -e execve -s 1024 -p[pid 1906] execve("/opt/firefox-3.6/firefox", ["/opt/firefox-3.6/firefox", "http://......"], [/* 53 vars */]) = -1 ENOENT (No such file or directory) 2. gconftool -R / | grep firefox -B1 ... /desktop/gnome/url-handlers/ftp: command = /opt/firefox-3.6/firefox "%s" -- /desktop/gnome/url-handlers/http: command = /opt/firefox-3.6/firefox "%s" ... 3. gconftool -t string -s /desktop/gnome/url-handlers/https/command 'x-www-browser "%s"' 4. gconftool -t string -s /desktop/gnome/url-handlers/http/command 'x-www-browser "%s"' 5. ... 6. ...
Очередь соединений по портам: ss -nlt
grep socket_inode /proc/net/tcp (socket_inode можно посмотреть в /proc/pid/fd/ или netstat -pnlte)
Ссылки по теме:
1. http://www.lexa.ru/nginx-ru/msg11814.ht ml
>На linux это можно посмотреть с помощью netstat -ntp
>Все соединения в состоянии ESTABLISHED, но еще не ассоциированные с процессом - это те самые, из listen queue.
2. http://anight.livejournal.com/19313.htm l
3. http://mdounin.livejournal.com/7207.htm l
grep socket_inode /proc/net/tcp (socket_inode можно посмотреть в /proc/pid/fd/ или netstat -pnlte)
Ссылки по теме:
1. http://www.lexa.ru/nginx-ru/msg11814.ht
>На linux это можно посмотреть с помощью netstat -ntp
>Все соединения в состоянии ESTABLISHED, но еще не ассоциированные с процессом - это те самые, из listen queue.
2. http://anight.livejournal.com/19313.htm
3. http://mdounin.livejournal.com/7207.htm
SLEEP=5; while sleep $SLEEP; do cat /proc/net/dev ; done | sed 's/:/: /' | awk '/eth|lo/ {
printf "%s %010.1f %010.1f\n", $1,
($2-pi[$1])*8/1024/1024/'$SLEEP',
($10 - po[$1])*8/1024/1024/'$SLEEP';
pi[$1]=$2;
po[$1]=$10
}';
interface input_Mbit/sec output_Mbit/sec
Когда выполняется снятие роли writer с ноды, агент подключается к mysql, в цикле в количестве max_kill_retries раз с интервалом в секунду выполняется просмотр текущих процессов и убиваются все непишушие (т.е. те, которые не выполняют insert, update, alter и некоторые другие). После того, как процессов не осталось либо истекло число попыток (max_kill_retries), устанавливается режим read_only и снимается ip-адрес роли. Далее роль передается на другой узел.
Очевидно, что цикл ожидания процессов не защищает от того, что могут приходить новые клиенты, а также неприятным выглядит то, что читающие процессы убиваются. К сожалению, не весь софт работает с транзакциями, поэтому более корректным было бы блокирование попыток новых подключений на этапе снятия роли. Это можно выполнить с помощью файрвола. Коммит https://github.com/chernomor/mysql-m mm/commit/31ca3f21d637fac137a8b0e6061833 9d759d0fa9 реализует данное поведение.
Для использования необходимо наложить патч и внести изменения в mmm_common.conf:
При использовании blocking_type=soft перед запуском цикла ожидания запускается команда iptables_block_cmd, цикл убивает процессы только после истечения лимита попыток. Команда iptables_unblock_cmd выполняется после установки режима read_only=ON.
В результате, после запуска iptables_block_cmd новые соединения не устанавливаются, но старые продолжают работать (благодаря опции -state NEW), это позволяет дать процессам время на корректное завершение.
Длительность таймаута можно регулировать опцией max_kill_retries в конфиге mmm_common.conf
Очевидно, что цикл ожидания процессов не защищает от того, что могут приходить новые клиенты, а также неприятным выглядит то, что читающие процессы убиваются. К сожалению, не весь софт работает с транзакциями, поэтому более корректным было бы блокирование попыток новых подключений на этапе снятия роли. Это можно выполнить с помощью файрвола. Коммит https://github.com/chernomor/mysql-m
Для использования необходимо наложить патч и внести изменения в mmm_common.conf:
blocking_type soft iptables_block_cmd iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -j REJECT iptables_unblock_cmd iptables -D INPUT -p tcp --dport 3306 -m state --state NEW -j REJECT
При использовании blocking_type=soft перед запуском цикла ожидания запускается команда iptables_block_cmd, цикл убивает процессы только после истечения лимита попыток. Команда iptables_unblock_cmd выполняется после установки режима read_only=ON.
В результате, после запуска iptables_block_cmd новые соединения не устанавливаются, но старые продолжают работать (благодаря опции -state NEW), это позволяет дать процессам время на корректное завершение.
Длительность таймаута можно регулировать опцией max_kill_retries в конфиге mmm_common.conf
git-bzr (http://github.com/kfish/git-bzr) позволяет осуществлять двунаправленную синхронизацию
Чтобы он заработал в lenny пришлось пересобрать bzr и bzrtools из squeezy, а также поставить python-fastimport:
bzr branch lp:python-fastimport python_fastimport && cd python_fastimport && python setup.py install
Штатный fastimport не работает.
Чтобы он заработал в lenny пришлось пересобрать bzr и bzrtools из squeezy, а также поставить python-fastimport:
bzr branch lp:python-fastimport python_fastimport && cd python_fastimport && python setup.py install
Штатный fastimport не работает.