LINUX.ORG.RU

Сообщения gobot

 

lsof

Форум — Admin
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) и скорость к диску должна быть

Форум — Admin

Заметил, что 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%

Форум — Admin

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

 ,

gobot
()

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

Форум — Admin

Делаю тест в браузере (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

Форум — Admin

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

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

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

 , ,

gobot
()

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

Форум — Admin

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

 

gobot
()

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

Форум — Development

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

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

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

 ,

gobot
()

Почему по FTP качает долго

Форум — Admin

Сервер 1gbps, мой комп оптика, торенты качает реально на 10mbps, а вот по FTP 1гиг скачивал минут 20. И-за чего такое может быть? Причем на всех серверах такое

 

gobot
()

Восстановить файл

Форум — Admin

Пол дня скрипт писал, правил по FTP, а потом перезатер GITом.

git reset --hard origin/master
git pull origin master


В репе была старая версия. То есть файл я в GIT добавил. А потом его тупо по ФТП правил и перезатер PULLом

Как можно выковырять откуда-то либо? Кэши FTP может или GIT история. Но хотя там истории то нет, т.к. я не комитил

 ,

gobot
()

Нет /var/log/syslog

Форум — Admin

Debian 12.11

Почему-то нет файла /var/log/syslog

 

gobot
()

iptables: блокировка ботов перебирающих порты

Форум — Admin

Тема такова: пытаюсь блокировать ботов, создал правила

-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ports_tcp
-A INPUT -p udp -j ports_udp

-A ports_tcp -p tcp -m multiport --dports 80,443,25 -j ACCEPT
-A ports_tcp -j LOG --log-prefix "TCP connection to forbidden port"
-A ports_tcp -j SET --add-set bots_tcp src

-A ports_udp -p udp -m multiport --dports 53 -j ACCEPT
-A ports_udp -j LOG --log-prefix "UDP connection to forbidden port"
-A ports_udp -j SET --add-set bots_udp src


В логи пишется, в ipset добавляется нормально. Но пока просто информативно. Хочу блочить их (воткнуть потом правило ipset), но для подстраховки, чтобы не с 1 раза, а например с 3 раза. Пока не знаю как реализовать

UDP
За пол часа в ipset добавилось 170 TCP-адресов и 17 UDP. Есть ли смысл их блокировать постоянно или достаточно просто DROP? В основном это хостинги всякие

censys.com
googleusercontent.com
censys-scanner.com
pfcloud.io
shadowserver.org
DigitalOcean

И ещё такая особенность, пара адресов бомбили сервер по UDP больше месяца. Какой в этом смысл? Для чего это все делается?

 ,

gobot
()

Слетели все драйвера

Форум — Admin

После перезагрузки Ubuntu слетели все драйвера, в том числе erthernet. Ничего не пойму. lshw -C network показывает сетевуху в статусе unclaimed. Все перекопал уже, даже не знаю в каком направлении двигаться )

 

gobot
()

iptables шалит

Форум — Admin
-A limits -p tcp -m tcp --dport 1666 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 5 --connlimit-mask 32 --connlimit-saddr -m comment --comment "max conn" -j LOG_LIMIT

-A LOG_LIMIT -j LOG --log-prefix "limit"
-A LOG_LIMIT -j REJECT --reject-with tcp-reset

line 26: RULE_APPEND failed (Invalid argument): rule in chain LOG_LIMIT



Что не так? Если просто -j DROP писать то норм, НО, охота чтобы было понятно пользователю, а не тупо timeout ждать...

Пока что помогает только дублирование всего правила c LOG...но это тупо и неудобно

 

gobot
()

Стоил ли сжимать http ответ

Форум — Admin

Стоил ли сжимать http ответ gzip nginx'ом? Картинки и так сжатые, а json? Посмотрел ютуб не сжимает ничего. Кто вообще сжимает?

 , ,

gobot
()

journalctl обрубает

Форум — Admin

journalctl обрубает строки (если они не влазят в консоль по ширине)

 ,

gobot
()

systemd - начал перезагружать все сервисы

Форум — Admin

ВНЕЗАПНО - все сервисы начали systemd перезагружаться, в том числе journald. Такое ощущение что перезагрузилась машина, НО uptime показывает 45 days

Что за дичь?

journalctl -k

Jul 15 15:31:36 Schrodinger kernel: workqueue: pm_runtime_work hogged CPU for >10000us 1027 times, consider switching to WQ_UNBOUND
Jul 16 06:55:30 Schrodinger systemd[1]: systemd 255.4-1ubuntu8.8 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2>
Jul 16 06:55:30 Schrodinger systemd[1]: Detected architecture x86-64.
Jul 16 06:55:39 Schrodinger systemd-journald[2164748]: Received SIGTERM from PID 1 (systemd).
Jul 16 06:55:39 Schrodinger systemd[1]: Stopping systemd-journald.service - Journal Service...
Jul 16 06:55:39 Schrodinger systemd[1]: netplan-ovs-cleanup.service - OpenVSwitch configuration for cleanup was skipped because of an unmet condition check (ConditionFileIsExecutable=/usr/bin/ovs-vsctl).
Jul 16 06:55:39 Schrodinger systemd[1]: systemd-networkd-wait-online.service: Deactivated successfully.
Jul 16 06:55:39 Schrodinger systemd[1]: Stopped systemd-networkd-wait-online.service - Wait for Network to be Configured.


Сам systemd не перезагружался
ps  -eo pid,lstart,cmd | grep systemd

      1 Sat May 31 10:20:04 2025 /usr/lib/systemd/systemd --system --deserialize=116
   1035 Sat May 31 10:20:43 2025 @dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
   1063 Sat May 31 10:20:43 2025 /usr/lib/systemd/systemd-logind
 833252 Wed Jun 11 04:02:37 2025 /usr/lib/systemd/systemd --user
1196408 Tue Jul 15 16:53:14 2025 /usr/lib/systemd/systemd --user
1258567 Wed Jul 16 06:55:20 2025 /bin/sh /usr/lib/apt/apt.systemd.daily install
1258572 Wed Jul 16 06:55:20 2025 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install


=======
1259657 Wed Jul 16 06:55:36 2025 systemctl restart background.service chat.service containerd.service cron.service exim4.service fail2ban.service fwupd.service http-achacha.service http.service mongod.service multipathd.service mysql.service nginx-ws.service nginx.service php8.3-fpm.service polkit.service proftpd.service redis-server.service rsyslog.service snmpd.service srs-dev.service srs.service ssh.service supervisor.service systemd-journald.service systemd-networkd.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service thermald.service udisks2.service upower.service websocket.service zabbix-agent.service zabbix-server.service
=======
Это что за процесс??


1259725 Wed Jul 16 06:55:36 2025 /usr/lib/systemd/systemd-timesyncd
1260095 Wed Jul 16 06:55:38 2025 /usr/lib/systemd/systemd-resolved
1260099 Wed Jul 16 06:55:38 2025 /usr/lib/systemd/systemd-udevd
1260144 Wed Jul 16 06:55:39 2025 /usr/lib/systemd/systemd-journald
1260152 Wed Jul 16 06:55:39 2025 /usr/lib/systemd/systemd-networkd
1260154 Wed Jul 16 06:55:39 2025 /usr/sbin/thermald --systemd --dbus-enable --adaptive




Запущен 31 мая. Но отчего он стал перезагружать все подряд?


ОПАЧКИ! Какая то дичь needrestart походу гадит

checks which daemons need to be restarted after library upgrades. It is inspired by checkrestart from the debian-goodies package.

Сразу возникает вопросов на 3 отдельных темы: Кто? Зачем? Почему?

 

gobot
()

Таймаут http

Форум — Development

client -> nginx (:443) -> app1 (:8080) -> POST http://remote/api/clients -> nginx2 -> app2

nginx, nginx2 - обычный nginx :-)
remote - либо 127.0.0.1 либо второй сервер удаленный
app1 - это node веб сервер на express
app2 - C++ приложение, в котором есть http сервер

В самом axios установлен timeout 5000. и он иногда срабатывает и клиенту отдается ошибка со стороны app1. Отчего срабатывает timeout не понятно. nginx2 в логах nginx регистрирует ответ от app2 с нормальным статусом (201), время запроса ~5 сек. и отдает app1 (но он уже отключился? по timeout). Ошибок нет от nginx. Если сокет отключился, куда передает nginx ответ? Или axios сокет не убивает, а только timeout генерирует? Пробовал дебажить, видно что timeout генерирует сам node socket, глубже не копал. И отчего может быть этот timeout? nginx2 получает ответ от app2 почти моментально, сверял логи, до секунды. Такое ощущение, что когда запрос на nginx2 приходит, он его в каком то буфере держит 5 сек., а потом отправляет на app2 и поэтому timeout. Что может быть?

Смотрел только

netstat -nlp4 | grep app2


на предмет Recv-Q - очередь на сокет не растет (я каждую сек. дрочил консоль, это нормально?), то есть app2 успевает все запросы обрабатывать. В самом nginx \ kernel ошибок нет (логов)

Сначала думал может запрос передается медленно, в nginx установил допом
client_body_timeout 3;
reset_timedout_connection on;
send_timeout 3;


Но тогда ngix отдавал бы с 408 статусом и axios от бы раньше отваливался, но постоянно ошибка timeout 5000.

Связка nginx2 -> app2.


map $http_authorization $api_dev_deny {
    default "1";
    "9342759823475947238979"  "0";
}
server {
    server_name exampla.com;
    access_log   /var/log/nginx/exampla.com.log main;
    error_log   /var/log/nginx/exampla.com.error.log;
    listen 80;
    listen 443 ssl; # managed by Certbot

    location ~ ^/api/(.*)$ {

        if ($api_dev_deny) {
            return 401;
        }
        proxy_pass http://127.0.0.1:1986/$2$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
    }
}

 , ,

gobot
()

setInterval async

Форум — Development

Вот
https://stackoverflow.com/questions/52184291/async-await-with-setinterval

Ещё это
https://www.npmjs.com/package/set-interval-async

Нужно

setInterval(async function(){
   await blabla();
}, 1000)


И нужно чтобы не запускалось тупо каждую сек. пока blabla() не изрезолвиться. И чтобы при первом запуске blabla() сразу запускалось, а потом по таймеру. И чтобы если blabla выдаст исключение, то таймер останавливался (это как опция).

Ничего не нравится. А нужно что то типа, максимально простое


function timer(){
  //реализация
}

const timer1Cancel = timer(async function(){
   await blabla();
}, 1000)


setTimeout(()=>{
  timer1Cancel()
}, 60 * 1000)



Свой код наговнякал, но он мне не нравиться, ищу гениев которые в 1 строчку сделают

 , ,

gobot
()

Как определить почему падает сервис

Форум — Admin

systemctl status http
5h 49min ago

Утром проверяю, перезагрузился 5 часов назад. Беда беда. До этого работал пару дней.

Смотрю логи.

journalctl -u http --grep "Stating HTTP" 
...00:27:39... Stating HTTP...


Грепаю снова по этому вмемени уже
journalctl -u http --grep "00:27:39" 
...00:27:39... Stating HTTP...
journalctl -u http --grep "00:27:38" 


Ничего не нашел, никаких CORE, segfault и прочего кошмара. Все ровно ровно...и...Stating HTTP...

journalctl -k
-- No entries --


Где ещё что посмотреть можно? Причина перезагрузки? Сама машина uptime 40 дней.

/var/lib/systemd/coredump пусто
/usr/local/myservice-bin -пусто

core нет нигде

 

gobot
()

В nginx попасть в нужный upstream

Форум — Admin

Нужно по запросу, например http://example.com/?port=8082 попасть на 127.0.0.1:8082

upstream nodes {
    server 127.0.0.1:8082;
    server 127.0.0.1:8083;
    server 127.0.0.1:8084;
    server 127.0.0.1:8085;
}

location / {
  proxy_pass http://nodes;
}



Есть какой то sticky, но мне не удалось его завести. Насколько я понял он доступен только в комм. версии nginx?

Другие примеры только тупо так
if ($request ~ "8082") {

  proxy_pass http://127.0.0.1:8082;

}

if ($request ~ "8083") {

  proxy_pass http://127.0.0.1:8083;

}

...


Но как то коряво мне кажется. Как сделать четко? Вообще хотелось бы конечно ещё чтобы списочек upstream удаленно брался, но опять же в коммерческой версии это?

 , ,

gobot
()

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