LINUX.ORG.RU

Сообщения fMad

 

Тулкит для графической утилитки

На чём сейчас можно написать небольшой настольны фронт для приложения в стеке Linux и C?

На фронте будет пара табличек и формочки редактирования, управления, отображения состояния бакенда

 ,

fMad
()

Управление кешированием

Имеется набор сложных данных, объединённых в группы

Все группы имеют TTL

Есть функция доступа к данным через связи с группами FIND

Протокол доступа предусматривает три реакции в случае истечения TTL

  1. промолчать – значит можно удалить группу и данные и запустить обновление
  2. ответить ошибкой – значит можно удалить группу и данные и запустить обновление
  3. вернуть значение не смотря на устаревание – значит должен быть кеш данных

тип реакции хранится в свойствах групп

При этом, после обнаружения истечения TTL группы запускается поток обновления данных всей группы

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

Метод обновления так же описан в свойствах группы

Нужно исключить параллельный запуск обновления одной группы и перестать учитывать TTL группы просроченных данных в кеше

Группы и данные хранятся в uthash таблицах groups и records для хранения данных для кеша для групп с 3 типом реакции реализовал параллельную таблицу cache_groups

FIND в поисках группы оббегает сначала groups и при неуспехе ищет в cache_groups

в случает обнаружения истечения TTL ==> меняю в группе свойство active=0

и отправляю указатель на группу в очередь для обновлений

обновление подразумевает получение набора данных для генерации новых значений records для groups (разными методами)

если использовать метод первоначальной инциализации данных, а он длинный и не линейный, то получается, что FIND начнёт видеть перед кешем ещё не полностью восстановленные данные группы

как восстановить данные после обновления?

в обновлении генерировать в GROUPS скрытый для FIND набор данных для группы

или как то другому можно управлять кешированием?

 ,

fMad
()

Статическая маршрутизация на микротике

Имеется микротик с белым адресом через PPPoE (pppot-out1)

Как настроить маршрутизацию так, чтобы заходящие на белый адрес пакеты на 53 порт передавались локальному сервер 192.168.10.2 на порт 1053 (и ответы уходили обратно)

так чтобы сервер 192.168.10.2 видел реальные IP клиентом, а не IP роутера (сейчас настроен NAT проброс порта 53<>1053)

 ,

fMad
()

В чём смысл (sl): query: sl IN ANY +E(0)D

Последние два дня с серверов

inetnum: 217.12.105.0 - 217.12.105.255 netname: ALFA-BANK-COMMON2

идёт большой трафик на 53 порт, в запросе qtype=255 и QNAME=(sl) d в количество 1500 запросов в секунду, я насчитал 2794 сервера с которых льётся этот трафик

зачем они это далают?

 ,

fMad
()

Ansible и Python 3.12

Попробовал свои плейбуки на серверах с новой Ubuntu24, там где Python 3.12 и поймал несовместимость на уровне requests/urllib3

То-есть, скрипт плейбука сгенерированный ансамблем на более раннем Python 3.10 не работает в среде Python 3.12, скорее всего и в обратную сторону тоже не будет работать

И как теперь запускать плейбуки на разных машинах?

 ,

fMad
()

Stunnel для Docker контейнеров

Как можно лучше организовать проброс канала с шифрованием в докер контейнеры?

Имеют сервер с базой, к которой можно подключить через stunnel4

Ansible разворачивает сервера с докерами, на серверах Ansible настраивает stunnel4 в качестве клиента и настраиваю accept на интерфейс docker0 у которого адрес плавающий (accept = 172.17.0.1:65432)

А затем подключаюсь внутри контейнеров docker-compose exec db psql postgresql://user:passw@172.17.0.1:65432/dbname

Причём это соединение с главной базой может использоваться между разными пользователями хоста, то-есть изолировать его не имеет особого смысла

Но это такое временное решение, нужно какое то стационарное, но вот какое? (открывать stunnel наружу не нужно)

 ,

fMad
()

Bind9 в контейнере Docker

Имеется сетка на несколько доменов в интернете, с несколькими локальными сетями

Имеется, своя DNS инфраструктура, где bind9+DNSSEC как мастер на VDS в рунете, и несколько slave серверов так же на различных VDS

Хочу перенести bind master внутрь DMZ, прокинуть 53 порты и перенастроить Slave на работу с новым мастером, а также настроить мастер для обслуживания локальной сетки и связанных витуальных

Так вот: имеет ли смысл заморачиваться с мастером внутри Docker контейнера или по классике?

ps: ещё бы какой то web редактор зон для админов

 ,

fMad
()

Как локально переопределить внешний домен?

Имею следующую проблему:

есть API securepayments.sberbank, всё работало как обычно, но сегодня часть запросов стала ломаться (сапорт пытаются решить, но чтото долго)

видимо у них бакенд за двумя барансировщиками и один не принимает запросы

пробовал в /etc/hosts добавить securepayments.sberbank.ru только IP рабочий, но приложения (видимо из-за SSL) всё равно резольвят через DNS и часть запросов не проходит

есть ли какой то способ залочить чужой домен на рабочий IP без престройки приложения?

 ,

fMad
()

В vim перестал работать Esc

Заметил, что в последние две недели в vim перестала работать клавиша Esc, комбинация Ctrl+[ работает как положено

Сначала перестала работать в терминале MacOS (через ssh) но воспринял как должное

Теперь отвалилась на всех компьютерах где периодически обновляется Ubuntu

Сама кнопка работает в других приложения,

xev показывает

( читать дальше... )

эффект проявляется в терминалах типа mate tilix xterm как вернуть норльный Esc в vim ?

 

fMad
()

coqui_stt training живое ли ?

Есть такой проект coqui_stt они форкнули mozilla deepspeech, то-есть на выходе ожидается сетка способная парсить вафли в текст

собрал докер с поддержкой nvidia

взял у mozilla датасет для нашего языка, поставил на тренировку

скрипт тренировки висит, в nvtop видно что скрипт тренировки использует 60% памяти, нагрузка на GPU скачет с 20 до 50%

https://ctrl.vi/i/mLo06EVbZ

и так висит целый день

интересно это датасатанисты так и задумали или фича такая?

 

fMad
()

Django Замена символов входящих POST

Обнаружил, что некоторые пользователи присылают различные варианты букв ЙйЁё, то-есть, вместо обычной букв ЙйЁё приходит комбинация ИиЕе и символов с кодам 774 и 776 и как следствие некоторые брОвзеры криво отображают эти символы

Соответственно нужно где то делать replace. И вот думаю в какой части стека (nginx/uwsgi/django/postgres) лучше проводить эту замену? Если добавлять мидлварь в Django то там ломается request.POST.getlist добавлять триггеры в постгрессе как то совсем дико получается Может на уровне uwsgi можно добавить какой то прокси?

 

fMad
()

Статическая пересборка

Имеется ли у нас возможность сохранить динамически слинкованную программу в виде статически слинкованного бинарника, который затем можно запустить в системе где не установлены некоторые динамические библиотеке ?

Пробовал сохранить дамп с помощью gcore, а потом запускать через gdb и видимо это не совсем то что нужно

нужно иметь возможность сохранить работающую игру, чтобы затем иметь возможность запустить её на другом компьютере с linux без заморочки с установкой зависимостей

или может быть есть инструмент для пересборки динамического приложения в статическое?

 

fMad
()

За счёт чего такой прирост производительности и есть ли он вообще?

Тестирую новенький NVME диск в связке с LVM/RAID0

для начала запускаю бенч на корневом разделе который размещён на NVME

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --bs=4k --iodepth=64 --readwrite=randrw --rwmixread=75 --size=4G --filename=testfile

test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [m(1)][100.0%][r=475MiB/s,w=158MiB/s][r=122k,w=40.5k IOPS][eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=967354: Fri Jan 20 16:08:51 2023
  read: IOPS=122k, BW=477MiB/s (500MB/s)(3070MiB/6433msec)
   bw (  KiB/s): min=484400, max=494952, per=100.00%, avg=488777.33, stdev=2638.53, samples=12
   iops        : min=121100, max=123738, avg=122194.33, stdev=659.63, samples=12
  write: IOPS=40.8k, BW=159MiB/s (167MB/s)(1026MiB/6433msec); 0 zone resets
   bw (  KiB/s): min=160680, max=165056, per=100.00%, avg=163478.00, stdev=1347.77, samples=12
   iops        : min=40170, max=41264, avg=40869.50, stdev=336.94, samples=12
  cpu          : usr=21.74%, sys=43.69%, ctx=445460, majf=0, minf=6
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=785920,262656,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=477MiB/s (500MB/s), 477MiB/s-477MiB/s (500MB/s-500MB/s), io=3070MiB (3219MB), run=6433-6433msec
  WRITE: bw=159MiB/s (167MB/s), 159MiB/s-159MiB/s (167MB/s-167MB/s), io=1026MiB (1076MB), run=6433-6433msec

Disk stats (read/write):
  nvme0n1: ios=781546/261240, merge=0/11, ticks=395602/2057, in_queue=397662, util=98.54%

получаю вот такие скорости чтения/записи:

read: IOPS=122k, BW=477MiB/s (500MB/s)(3070MiB/6433msec)

write: IOPS=40.8k, BW=159MiB/s (167MB/s)(1026MiB/6433msec);

затем создаю 6 пустых балванок

dd if=/dev/zero bs=1500M count=1 of=raid/sda{1..6}.dd

затем монтирую как устройства /dev/loop{15..20} и уже из них делаю LVM/RAID0

lvs -a -o name,copy_percent,devices  vgdata
  LV       Cpy%Sync Devices                                                                                  
  lvmirror          /dev/loop15(0),/dev/loop16(0),/dev/loop17(0),/dev/loop18(0),/dev/loop19(0),/dev/loop20(0)
losetup -l|grep sda
/dev/loop19         0      0         0  0 /root/raid/sda5.dd                                       0     512
/dev/loop17         0      0         0  0 /root/raid/sda3.dd                                       0     512
/dev/loop15         0      0         0  0 /root/raid/sda1.dd                                       0     512
/dev/loop18         0      0         0  0 /root/raid/sda4.dd                                       0     512
/dev/loop16         0      0         0  0 /root/raid/sda2.dd                                       0     512
/dev/loop20         0      0         0  0 /root/raid/sda6.dd                                       0     512

монтирую полученную FS в дирикторию raid

mount |grep raid
/dev/mapper/vgdata-lvmirror on /root/raid type ext4 (rw,relatime,stripe=96)

запускаю бенч уже на этой файловой систем и получаю удвоение производительности

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --bs=4k --iodepth=64 --readwrite=randrw --rwmixread=75 --size=4G --filename=testfile

test: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.28
Starting 1 process
Jobs: 1 (f=1): [m(1)][100.0%][r=738MiB/s,w=247MiB/s][r=189k,w=63.2k IOPS][eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=967394: Fri Jan 20 16:09:19 2023
  read: IOPS=190k, BW=743MiB/s (779MB/s)(3070MiB/4130msec)
   bw (  KiB/s): min=750888, max=775560, per=100.00%, avg=761323.00, stdev=7770.14, samples=8
   iops        : min=187722, max=193890, avg=190330.75, stdev=1942.54, samples=8
  write: IOPS=63.6k, BW=248MiB/s (260MB/s)(1026MiB/4130msec); 0 zone resets
   bw (  KiB/s): min=251480, max=259656, per=100.00%, avg=254520.00, stdev=2730.45, samples=8
   iops        : min=62870, max=64914, avg=63630.00, stdev=682.61, samples=8
  cpu          : usr=29.35%, sys=70.53%, ctx=197, majf=0, minf=8
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=785920,262656,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=743MiB/s (779MB/s), 743MiB/s-743MiB/s (779MB/s-779MB/s), io=3070MiB (3219MB), run=4130-4130msec
  WRITE: bw=248MiB/s (260MB/s), 248MiB/s-248MiB/s (260MB/s-260MB/s), io=1026MiB (1076MB), run=4130-4130msec

Disk stats (read/write):
    dm-0: ios=739484/247392, merge=0/0, ticks=3636/1212, in_queue=4848, util=97.59%, aggrios=130986/43776, aggrmerge=0/0, aggrticks=648/234, aggrin_queue=883, aggrutil=96.38%
  loop19: ios=130874/43894, merge=0/0, ticks=646/233, in_queue=880, util=96.38%
  loop17: ios=131194/43558, merge=0/0, ticks=654/234, in_queue=888, util=96.38%
  loop15: ios=131019/43749, merge=0/0, ticks=651/235, in_queue=886, util=96.38%
  loop18: ios=130916/43848, merge=0/0, ticks=649/240, in_queue=888, util=96.38%
  loop16: ios=131062/43706, merge=0/0, ticks=648/232, in_queue=879, util=96.38%
  loop20: ios=130856/43901, merge=0/0, ticks=644/232, in_queue=877, util=96.38%

получаю вот такие скорости чтения/записи:

read: IOPS=190k, BW=743MiB/s (779MB/s)(3070MiB/4130msec)

write: IOPS=63.6k, BW=248MiB/s (260MB/s)(1026MiB/4130msec);

действительно ли этот тест показывает повышение производительности и за счёт чего оно происходит?

 ,

fMad
()

Вентиляция на GTX

Первые завёл дискретную карту GTX 1050 TI (БУ) (ради nvenc) и не имею опыта работы с такими девайсами

заметил что при включении ПК видеокарта запускат вертиляторы и выключает когда проходит тестирование биос

После загрузки ОС всё работает хорошо, но вызывает подозрение то, что вертилятор на карте не работает.

Когда запускаю Unigine_Valley-1.0, утилита NVIDIA Settings показывает что температура растёт до 62, а вертилятор работает на скорости 29% от максимума, там же можно вручную выставлять скорость вертиляции

на ощупь радиатор видеокарты горячее чем горчий кофе и рука едва держит несколько секунд

не ужели это нормальное поведение и биос карты при такой температуре сама выставляет такие обороты вертиляции и можно ли как то изменить такое поведение?

 

fMad
()

Странное поведение DHCP на роутере

Ставлю сервер на антресоль, рядом с роутером (Huawei HG8245H) через провод, ожидал что роутер выдаст серверу что-то из диапазона 192.168.100.*, так же как роутер выдаёт Wifi клиентам и настольнику по проводу

но сервер через DHCP получает 10.44.163.41 и 0.0.0.0 10.44.160.1 0.0.0.0 UG 100 0 0 enp5s0f1

если на второй интерфейс сервера переключаю провод с роутера на настольник (с настроенным DHCPD) то сервер получает 192.168.0.101 и нормально взамодействует с настольником, если настроить статически то в локальке с настольником тоже работает

если статически настроить для сети с роутером, то роутер пингует но трафик ни какой не пропускает

netplan вот такой

network:

ethernets:

enp5s0f0:

    addresses:

        - 192.168.0.101/24

    nameservers:

        addresses: [8.8.8.8, 8.8.4.4]


enp5s0f1:

  dhcp4: true

version: 2

в чём может быть проблема?

UDP: проблема была в кабеле

 

fMad
()

Django+Postgresql репликации

Реализую архитектуру в которой мастер-сайт находится на локальных ресурсах и изменения контента и каталога происходят локально с последующей автоматической репликацией (логической) на зеркала в докер-контейнерах размещённых в разных местах (странах), файловый контент раздаётся через CDN, тут схема отточена и прекрасно работает

Но большой зуд вызывает обратный поток данных в виде заказов и запросах (из ЛК) поступающих на зеркальные ноды от клиентов. например, когда на российском и арабских сайтах создаётся заказ с совпадающим порядковым номером

  1. логическая репликация не подходит по причине дублирования примарикей на зеркалах и пересечения на мастербазе

  2. кастомные типы для примарикей доставляют проблемы на уровне django: миграции, тестирование и автоматическое развёртывание

  3. замена примарикей на UUID тоже не самое приятное решение, так как придётся всё переделывать и точно так же не даст 100% гарантии от дублей, а мне не охота потом разруливать эти проблемы

пока вижу решения либо celery очереди выполнять на мастер сайте, но тогда возникает проблема в живучести этих сетевых очередей и потере запросов

либо обернуть всё входящее api врапером и пушить из зеркальной очереди на мастер апи-сервер со своей внутренней очередью с последующей уже написанной пост-обраткой на мастере

может быть ещё какой то вариант есть реализации обратной репликации?

 ,

fMad
()

Firefox, chromium-browser Snam и новые ядра

На VPS работает сессия FluxBox+VNC чтобы была возможность запускать постоянно Firefox или Chromium через Selenium

и регулярно отваливается Firefox и Chromium

cmd_run.go:1053: WARNING: cannot start document portal: dial unix /run/user/0/bus: connect: permission denied

/user.slice/user-0.slice/session-17.scope is not a snap cgroup

лечится обновлением ядра и перезагрузкой, сейчас опять такое произошло, но в репозитарии нет новых ядре и процесс замер

это какая подстава с этим Snap

как можно выкрутиться?

странно, откуда /run/user/0/bus берётся

 , ,

fMad
()

как раздать большой файл?

Раньше мы делали примерно так: transmission-create Server.vdi -t udp://tracker.openbittorrent.com:80

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

как сейчас раздать файл не несколько десяток гигов без регистрации и смс?

зы: с этими трекерами заработало спустя полчаса

udp://tracker.openbittorrent.com:80/announce

udp://tracker.openbittorrent.com:6969

 

fMad
()

MacPro 1.1 и Linux

Поставил на эту железку Ubuntu20.04 тормозит всё безобразно, дрова на видюшку не ставятся, даже удивтельно как можно тормозить на 32 гигах

как расшевелить? какую видюшку лучше поставить? сейчас пробовал geforce 210 и 9600GT и ещё какую то p345

 ,

fMad
()

PostgreSQL и sync

Подскажите как отследить и исправить следующее странное поведение PostgreSQL

Иногда, теряются данные накопленные за день на dev сервере, то-есть в течении дня вносятся некоторые правки и иногда сервер откатывается к утреннему состоянию, когда был накачен бека

все записи в базе как будто только из бекапа, в логах тоже нет ничего свежего, как будто восстановился из снапшота

дев-сервер, железка, на которой работаю сам, откатываются базы с которыми работают через сеть другие сотрудники, откат происходит чаще всего когда я делаю чтото вызывающее sync, например git commit/push но коммит вообще ни как не связан в базой

возможно нужно как то включить логирование на какой то внешний сервер или PostgreSQL где то ведёт журналы

 

fMad
()

RSS подписка на новые темы