← All posts tagged tech

fillest
? tech ipc concur Задаченька на прыще-ipc. Есть множество процессов-воркеров на одном хосте. Периодически в случайно выбранном из них запускается кот. Кот может работать дольше интервала запуска следующего кота (как cron), соотв. нужно предотвратить запуск следующего кота. Процесс с котом может быть жёстко ассасинирован в любой момент, например, oom-killer'ом. Соотв., нужно нечто, чистящееся ведром автоматически при таком раскладе.
Открывать на слушанье сокет это совсем быдло-вей. open("/tmp/lockfile", ... | O_EXLOCK)? Подводные камни (кроме вероятности удаления этого файла извне — её можно проигнорить)? Что-нибудь ещё?
На картинке кот по запросу "acne cat".

fillest
tech prog shit rant rabbitmq.com

надёёжьна, мамой клянуус!
Messages may be published as persistent, which makes the AMQP broker persist them to disk. If the server is restarted the system ensures that received persistent messages are not lost.
ни одного упоминания fsync
с трудом через гугл:
Marking messages as persistent doesn't fully guarantee that a message won't be lost. Although it tells RabbitMQ to save the message to disk, there is still a short time window when RabbitMQ has accepted a message and hasn't saved it yet. Also, RabbitMQ doesn't do fsync(2) for every message

как же надоели дегенераты на каждом шагук
fillest
mem tech py alloc Путон жрет память как путлер — младенцев? Пукан выходит на орбиту? Жмудауны не мержат нормальный аллокатор в систему?
sudo apt-get install libjemalloc1
LD_PRELOAD=/usr/lib/libjemalloc.so.1 python ...
Для проверки что взлетело: sudo pldd пид_твоего_шедевра | grep jemalloc
Перемога (у нас — вебня поделённая на неск процессов — с пяти гигов упало до двух)
Рилейтед буквы: pushingtheweb.com
fillest
tech Git hack RU Доступ к гитхабу по гит-протоколу для беловатых людей (в мордоре невозможно быть до конца белым):
nano ~/.ssh/config
Host github.com
ProxyCommand ssh -q tvoy_servak.рф nc %h %p

Для гитхаба-сайта:
Ежели ты, как и подобает всякому достойному господину, — лисобоярин, то ставь addons.mozilla.org
Делай ssh -D 1489 tvoy_servak.рф -N
И прописывай в аддон соотв socks5 на localhost:1489
Аддон даже умеет включать прокси только для указанных урл-паттернов, если порыться в настройках.

Ежели ты сирый хромой крестьянин, то должен страдать.
fillest
tech debug io profile perf (i have no idea, зачем я это сюда пишу, причем первым постом, но что-то вдруг захотелось)
Листая в brendangregg.com пример с мускулом, тут же вспомнил про временно отложенные неразрешенные монгопытки и осознал одну хитроту. Но сначала — прелюдия.
Вышло, что вороне где-то б-г послал кусочек монги, под мелкой но нагрузкой. Запросы тормозят, причем периодически разными скачками вроде бы без явного паттерна и корреляции с другими показателями, а для усиления ощущений она обитает на эмозоне и не умещается в память. Про себя она какие-то чиселки рассказывает, но бессвязные — не складывается картина, вобщем. Но периодически плотно шуршит iowait. И вроде и не локи, и user/sys не высок.
Закрадывается мысль — а вдруг это и правда io-боттлнек. И вариант "послать аффтарам бомбу с гвоздями и открыткой; переписать уже наконец под человеческий поцгрес" возможно просто так и не сработает (а тестить долго, сложно и синтетично). Особенно, учитывая что это омасон, т.е. неизвестно, что или кто там вместо харда, и сколько еще лохов сидят с тобой на железке и чем занимаются; прям как в старое доброе пыховековье.
И вот щас щелкнуло, что сферическое упирание в io (как и во всё прочее) — очень неоднозначная штука, т.к. io можно закодерировать неэффективно. Размеры страниц-буферов, шедулинги операций, журнал, да мало ли что еще. Мысль-то тривиальная конечно, но при прошлом обдумывании почему-то не возникла.
И вот интересно, как такое диагнозировать. Из первого, что приходит в голову — потрейсить какие-то сисколлы (впрочем с mmap-то это наверно вместе с ведром надо трейсить..), порисовать всякие длины, locality. Вобщем, что-то такое как профайлинг, но под адскую специфику disk io. А для исключения облакодилд погонять генерилку искуственного ровного io на предмет скачков (но это опять же, синтетика).
В рукаве еще есть карты под задачу — частично вынести запись за очередь с ручным батчингом, например, но хочется именно научиться аналитически отлаживать, по-инженерному, мол.