LINUX.ORG.RU

Сообщения gobot

 

Откуда ошибки на eth0

 

При возрастании трафика (> 200mbps) на интерфейсе растут ошибки. Что не так? надо сказать, что машина довольна слабая... Raspberry Pi (4 core), но все же, стоит 1GPBS в ней, значит должна теоретически такой трафик проглатывать?

RX packets 793084540  bytes 512344690042 (512.3 GB)
RX errors 117445  dropped 117445  overruns 0  frame 1
TX packets 1256437452  bytes 1675880930706 (1.6 TB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

gobot
()

Где хранит сертификаты Angie

 ,

Где Angie хранит загруженные по amce сертификаты? Хочу сохранить один никак не пойду где она лежат

acme main;
ssl_certificate $acme_cert_main;
ssl_certificate_key $acme_cert_key_main;


Спасибо всем, нашел

/var/lib/angie/acme

gobot
()

Как поделить файл между процессами

 

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

gobot
()

Что делать со свопом?

 

Скажи, а что нужно делать со swap памятью если она 100%? Я так и не понял

gobot
()

Почему ffmpeg запускают везде с 1 тредом?

 ,

Во многих примерах в гугле ffmpeg запускают с ключом -threads 1. Почему? Я только что проверил с -threads 12 он кодирует намного быстрее, точно не засекал но секунды на глаз бегут в раза 3 быстрее

gobot
()

Убить дочерний процесс bash

 ,

Запускается app -> bash -> ffmpeg

app убивает (SIGKILL) bash, а ffmpeg живет спокойненько
Через trap в баше SIGKILL не ловится. Как быть?

Код примерно такой

cleanup() {
   kill -9 "$FFMPEG_PID"
}


trap cleanup EXIT SIGINT SIGTERM SIGHUP TERM INT

fmpeg &
FFMPEG_PID=$!
wait


В самом ffmpeg можно конечно тайм-аут сделать, но как то это не кошерно... Охота сразу его пришибать

gobot
()

Bash: парсинг параметров

 ,

Неужели за долгие долгие долгие... ГОДА. В баше так и не сделали нормальный парсинг аргументов из КОРОБКИ? Неужели нужно вечно страдать, втыкать в каждый файлик лапшу из ИИ гугла одну и ту же?

while [[ "$#" -gt 0 ]]; do
    case "$1" in
        -o|--output)
            output_file="$2"
            shift # Consume the argument's value
            ;;
        -v|--verbose)
            verbose=true
            ;;
        -i|--input)
            input_value="$2"
            shift # Consume the argument's value
            ;;
        *)
            echo "Unknown parameter: $1"
            exit 1
            ;;
    esac
    shift # Consume the current argument (flag or unknown)
done


с этими корявыми закорючками, которые никогда не запомнишь?

Вот это вообще что такое?

while [[ "$#" -gt 0 ]]; do


Я до сих пор не могу это понять интуитивно. Кто это вообще придумывал такой синтаксис? Что он ел? Что пил?

;;

Зачем делать 2 точки с запятой?

gobot
()

Выкинул nginx, перешел на Angie

 ,

Выкинул nginx со всех серверов, установил Angie (форк nginx)
Теперь нет возни с сертификатами, оч. удобно

Из минусов: нет в ubuntu пакетов. Почему?

Кстати, почему нет тега angie (хм, добавился, но в выпадающем списке не было)?

gobot
()

Как заставить ffmpeg искать дорожку принудительно

 , ,

Если ffmpeg не нашел audio дорожку из INPUT, не начинать кодирование и продолжать\анализировать входной поток. Заголовок FLV сначала cодержит только video, потом прилетает новый заголовок где есть audio, но ffmpeg начинает кодировать сразу же ТОЛЬКО видео. Как быть?

Input #0, flv, from 'rtmp://127.0.0.1:1935/live/stream':
  Metadata:
    |RtmpSampleAccess: true
  Duration: N/A, start: 2816209.627000, bitrate: N/A
  Stream #0:0: Data: none
  Stream #0:1: Video: h264 (Constrained Baseline), yuv420p(progressive), 320x240, 7.50 fps, 7.50 tbr, 1k tbn, start 2816209.627000


Спустя некоторое время цепляется AUDIO
  Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p(tv, bt709, progressive), 360x202 [SAR 404:405 DAR 16:9], q=2-31, 128 kb/s, 20 fps, 1k tbn
    Metadata:
      encoder         : Lavc62.15.100 libx264
    Side data:
      CPB properties: bitrate max/min/avg: 0/0/128000 buffer size: 0 vbv_delay: N/A
  Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 48 kb/s
    Metadata:
      encoder         : Lavc62.15.100 aac


Если ко выходу добавить

-map a:0 -map v:0

то если нет аудио, ffmpeg завершается с ошибкой, повторный запуск ffmpegс этими параметрами (когда в стриме уже есть audio) — идет нормальная кодировка. Как бы заставить его ждать пока придет аудио, а не завершать работу?

gobot
()

Как сменить драйвер по ssh

 ,

Начал виснуть сервер, точнее сеть. Второй раз при пиковой сетевой нагрузке посыпались сообщения от драйвера r8169. Провайдер посоветовал сменить драйвер на r8168

Там вроде все просто описано, компилируешь (./autorun.sh), потом проверяешь lsmod | grep r8168.

Нужно ли для этого выключать интерфейс? Там написано что после установки драйвера выполните ifconfig ethX up. Значит до установки нужно выключать сеть? И как старый драйвер выгрузить (и нужно ли?), он же в ядре, что для этого нужно?

gobot
()

Сервер грохнулся

 

Сервер завис. Не отвечал никак и ни на что. После перезагрузки очухался. В логах ничего. Просто глухо с момента X.

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

В логах

journalctl -k -S -50m

r8169 0000:01:00.0 eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 5128 ms
r8169 0000:01:00.0 eth0: rtl_txcfg_empty_cond == 0 (loop: 42, delay: 100)
r8169 0000:01:00.0: can't disable ASPM; OS doesn't have ASPM control
r8169 0000:01:00.0 eth0: rtl_rxtx_empty_cond == 0 (loop: 42, delay: 100).


И ещё в момент делал strace процесса
strace -p pid
epoll_wait(3, [], 4096, 173)            = 0
epoll_wait(3, [], 4096, 1)              = 0
epoll_wait(3, [], 4096, 1000)           = 0
epoll_wait(3, [], 4096, 1000)           = 0
epoll_wait(3, [], 4096, 1000)           = 0
///
Больше ничего от него не было


Какие диагнозы?

gobot
()

Как собрать проект в Windows, но с Linux окружением

 , ,

Есть CLion, хочу собрать проект

В проекте есть CMakeLists.txt для CLion, но в этом файле содержатся команды специфичные для linux, например

execute_process(
        COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}/../../ && pwd"
        OUTPUT_VARIABLE DIR
)


как быть?

gobot
()

ffmpeg завис

 

FFmpeg завис и не отвечает на kill SIGTERM (убиваю через node)

Вот что он делает

strace: Process 3808110 attached
futex(0x79922ce03990, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, 3808948, NULL, FUTEX_BITSET_MATCH_ANY



Может кто-нибудь подскажет что он ждет и почему не реагирует?

gobot
()

lsof

 

lsof -n | wc -l
259508



Нормальна ли такая цифра или много?


lsof -n | awk '{print $1}' | sort | uniq -c | sort -n

   1850 php-fpm8.
   3410 nginx
   6880 zabbix_se
  14126 node
  19158 mysqld
 207252 mongod

gobot
()

Какой «нормальное» время доступа (await) и скорость к диску должна быть

 ,

Заметил, что zabbix начал (не было раньше) сыпать алерты о времени превышении доступа к диску (Linux: sda: Disk read/write request responses are too high (read > 20 ms for 15m or write > 20 ms for 15m))

Посмотрел графики (Сутки):

Server 1: Last 62ms min 0.4ms agv 60ms max 1163ms

Для сравнения посмотрел на другом сервере, там цифры на порядок меньше:

Server 2: Last 0ms min 0ms agv 0.4ms max 18ms

Server 1
hdparm -tT /dev/sda
 Timing cached reads:   34864 MB in  1.98 seconds = 17587.21 MB/sec
 Timing buffered disk reads: 766 MB in  3.00 seconds = 255.21 MB/sec

hdparm -tT /dev/md42
 Timing cached reads:   35312 MB in  1.98 seconds = 17830.18 MB/sec
 Timing buffered disk reads: 1316 MB in  3.01 seconds = 437.52 MB/sec


Server 2
hdparm -tT /dev/nvme0n1
 Timing cached reads:   32202 MB in  2.00 seconds = 16125.95 MB/sec
 Timing buffered disk reads: 6176 MB in  3.00 seconds = 2058.31 MB/sec


Сервера особо ничем не загружены, iotop показывает (top) что один процесс пишет 5M/s ну systemd-journald c nginx там ещё меньше

Какие вообще приемлемые показатели должны у await и скорость диска нормального? Понятно, что nvme шустрее на порядок, но все же, если сервер не гоняет огромные цифры.

Ну и в целом CPU IOWAIT avg 3%(c пиками до 23%, из общей загрузки проца 44%). Что смотреть нужно ещё?

Стоит ли поднимать планку чтобы до 40ms или искать причину в диске?

ATA device, with non-removable media
        Model Number:       Patriot Burst
        Serial Number:      C8B307980E0300711763
        Firmware Revision:  SBFM61.3
        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0

nvme list
/dev/nvme0n1 Samsung SSD 970 EVO Plus 500GB 500.11

gobot
()

1 Процесс грузится на 100%, но весь CPU загружен на 30%

 ,

1 процесс в TOPе загружен на 100% и впадает в ступор. Старые сетевые соединения держаться и обслуживаются, а новые нет. На сокет конект есть, но он висит бесконечно, нет ответа. Почему он не использует ВСЮ МОЩЬ моего дорогого процессора, за который я плачу огромные деньги? Все ядра загружены равномерно, в целом проц загружен всего на 30%

gobot
()

Nginx показывает время запроса 0 (ноль) секунд

 

Делаю тест в браузере (fetch), скачиваю JS (~1mb), консоль браузера показывает

Waiting for server 146ms
Content download 823ms
Total: 972ms

Но в логах вижу Nginx ($request_time) отдает за 0ms (бывает через раз отдает 0.3s)

...HTTP/1.1 200 1145976 0.000

Лог стандартный main
log_format main '$host $scheme $remote_addr $realip_remote_addr - [$time_local] "$request" $status $body_bytes_sent $request_time "$http_referer" "$http_user_agent"';

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

То есть Nginx отдал 1145976 байт за 0 сек.?

UDP. Вроде понял почему, если через одно TCP соединение гонять запросы то будет всегда - 0. Получается время всех запросов накапливается и когда оно закрывается то (что?)...в общем время посмотреть что ли?

UPD2.
Делаю через curl

HTTP/1.1" 200 1145976 0.004 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.004 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.004 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.004 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.254 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.005 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.000 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.052 "-" "curl/8.5.0"
HTTP/1.1" 200 1145976 0.004 "-" "curl/8.5.0"


И тут 0 бывает проскакивает, но заметно реже, чем через хром, но все же. Но CURL ведь каждый раз новое соединение устанавливает или че?


ВОПРОС2
==========
Почему хром показывает время запроса 900ms, а Nginx 0.3s?
Connection Start

Staled 0.74ms
DNS Lookup 128ms
Initial connection 153ms
SSL 73ms

Request
Request sent 0.18ms
Waiting for server  response 150ms
Content Download 498ms

Total 932ms

//Но в логах nginx этот же запрос показывает что выполнился за 0.3s
HTTP/1.1" 200 1145976 0.313



Кому верить? Разумеетя в хроме отключены все кеши + запрос делается с меткой времени (в хвост добавляется ?t=Date.now())

gobot
()

Что заставляет хром отправлять HTTP запрос Range

 , ,

Заметил, что иногда (на мобильном тел.) запросе js файлов с сервера Nginx, Chrome посылает запрос с заголовком Range. И почему то (пока не понял ещё | UPD. сервер посылает reset, я так думаю из-за client_body_timeout\send_timeout = 3s ) этот запрос раз через раз выдает ошибку и JS не скачивает и сайт грузится. Помогает только F5 с 2-3 раза.

Отчего хром может делать запрос такого типа?

То ли браузер детектит медленное соединение то ли чё не пойму

gobot
()

Процесс потребляет 20TB памяти

 

Сейчас смотрю htop, один процесс потребляет 20TB VIRT и подсвечено красным. Это что значит 20 ТЕРАБАЙТ виртуалки?!

gobot
()

Человеческое Название Unicode символов через javascript

 ,

Как определить название символов Unocode
Вот например 🤢 имеет код U+1F922

Иду на
https://www.compart.com/en/unicode/U 1F922
и вижу что название «Nauseated Face»

«🤢».charAt() выдает код uD83E, но это «UTF-16 Encoding». Как мне получить код U+1F922 в JS, чтобы потом спарсить через этот сайт название? Или какой нибудь другой способ получения человеческого названия. В общем нужно сделать поиск по символам, ввел «Face» и тебе вывалились все смайлики с этим названием

gobot
()

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