LINUX.ORG.RU

Сообщения gobot

 

Видео останавливается когда загружаю маленькими порциями через MSE

Форум — Web-development

Экспериментирую с Media Source Extension, основу взял из https://developers.google.com/web/updates/2016/03/mse-sourcebuffer


  • Загружаю видеоролик через XMLHttpRequest
  • Разбиваю его на 20 кусочков через Blob & FileReader (1 кусок примерно 3 сек.)
  • Создаю MediaSource и добавляю в него буфер
  • Добавляю в буфер эти кусочки



Кусочки добавляю не сразу все, а один за другим, а именно когда в video опустошается буфер, то есть наступает событие waiting.


  • После загрузки файла и разбивки, сразу добавляю первый кусок для инициализации и установки duration
  • Видео начинает проигрываться, все отлично
  • Затем, когда в плеере нет новых данных для проигрывания (после события waiting), добавляю новый кусок
  • Видео снова начинает проигрываться, наступает canplay, playing, canplaythrough, timeupdate, timeupdate...
  • Цикл повторяется 3 раза хорошо
  • Когда временная шкала плеера доходит до 10.61 сек., то видео зависает



Видео зависает после добавления очередного куска на 10.61 сек., хотя новые данные в буфере есть(2.5 сек.), но почему то не происходит события canplay после добавления данных. Хром чего-то ожидает, хотя казалось бы есть новые данные - продолжай их играть. Никаких ошибок нет, ни в видео, ни в буфере, ни в MSE

Что мешает хрому проиграть очередной этот кусок не понятно, он просто останавливается и крутится штатное колесико и ожидает данные(?)



Заставить видео вновь начать играть можно двумя способами:
1) video.currentTime = video.currentTime //тупо установить текущую позицию на такую же
2) Подергать вручную временную шкалу, не важно куда чуть взад или вперед
3) Добавить новый кусок

Тогда видео продолжит снова играть, но останавливается уже на 31.9 сек.(уже подольше)

В каких случаях видео не останавливается


  • Если разбивать на меньшее количество кусков, например 5
  • Если добавлять новый кусок сразу после события onupdateend



Не могу понять что за магические метки времени на которых останавливается видео: 10.61 и 31.9 сек.

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

Вот пример кода, там можно заметить на 10 сек. что на шкале есть загруженные данные, но они не проигрываются
https://jsfiddle.net/1w4hyrke/1/

 , , , ,

gobot
()

Video wait MSE

Форум — Web-development

Проигрываю FLV(h264\aac) видео, данные идут через fetch, а потом в MSE. Для обработки FLV формата использую вот такую штуку https://github.com/Bilibili/flv.js/

Все бы хорошо, но постоянно появляется событие waiting на video элементе, хотя данные в буфере всегда есть с большим запасом (в video.buffered и в sourceBuffer.buffered, они синхронны всегда). Из-за этого идет отставание(и оно нарастает с каждым waiting событием) проигрывания видео.

В документации сказано
https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/waiting_event

The waiting event is fired when playback has stopped because of a temporary lack of data.

То есть событие наступает только когда нет данных. В моем случае буфер всегда есть в запасе
let start = video.buffered.start(0);
//187.34
let end = video.buffered.end(0);
//278.16
let currentTime = video.currentTime;
275.65
let delta = end -  currentTime;
//2.51

Из этого можно полагать что есть запас для проигрывания 2.51sec. То есть данные в буфере имеются ВСЕГДА, но периодически появляется это waiting событие. Оно появляется даже когда delta 10 и 30 секунд - вообще не важно сколько.

После некоторого времени видео вообще перестает проигрываться и останавливается, но не происходит никаких событий при этом, ни pause, abort, ended, suspend ... ничего нет, просто идет бесконечный progress и timeupdate. Стоит вручную подвинуть currentTime хоть на 1 сек. вперед или взад, то видео снова продолжает проигрываться.

Если бы были ошибки в demuxer то они бы появились на video или sourceBuffer, я так думаю, но никаких ошибок и событий не происходит.

Как отдебажить из-за чего возникает событие waiting и остановка видео в дальнейшем? Узнал что есть chrome://media-internals/ но там пока не понятно что отлавливать

 , , , ,

gobot
()

Как выбирается кодек в SDP

Форум — Web-development

Как устанавливается связь между 2 клиентами. Они обмениваются SDP, в котором описаны все поддерживаемые ими аудио\видео кодеки, а также уточненными параметрами этих кодеков. Вопрос в том, как именно выбирается кодек, если их перечислено несколько.

Вот допустим такая схема: pc1(только передает sendonly), p2(только принимает). pc1 генерирует SDP(createOffer) и передает его pc2. Как pc2 понимает каким именно кодеком будет кодировать поток pc1?

Пример реального SDP, который генерирует Chrome

c=IN IP4 0.0.0.0
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
a=sendonly
a=rtpmap:111 opus/48000/2
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
...
m=video 9 UDP/TLS/RTP/SAVPF 108 96 98 100 102 104 106 110 112 97 99 101 103 105 107 109 111
...
a=rtpmap:108 H264/90000
a=rtpmap:96 VP8/90000
a=rtpmap:98 VP9/90000
a=rtpmap:100 VP9/90000
a=fmtp:100 profile-id=2
a=rtpmap:102 H264/90000


a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
...
a=ssrc-group:FID 3916163788 593508736
a=ssrc:3916163788 cname:p2nRRSLsnzsCF8Xo
a=ssrc:3916163788 msid:9kHOR4nvbuRqbb0GWVQiybJbgMiOilZHabEW 69e2e9ce-ccc2-414c-8336-71e54f24fd62
a=ssrc:3916163788 mslabel:9kHOR4nvbuRqbb0GWVQiybJbgMiOilZHabEW
a=ssrc:3916163788 label:69e2e9ce-ccc2-414c-8336-71e54f24fd62
a=ssrc:593508736 cname:p2nRRSLsnzsCF8Xo
a=ssrc:593508736 msid:9kHOR4nvbuRqbb0GWVQiybJbgMiOilZHabEW 69e2e9ce-ccc2-414c-8336-71e54f24fd62
a=ssrc:593508736 mslabel:9kHOR4nvbuRqbb0GWVQiybJbgMiOilZHabEW
a=ssrc:593508736 label:69e2e9ce-ccc2-414c-8336-71e54f24fd62


Как видно из SDP, поддерживаемые аудио\видео кодеки перечислены в
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
m=video 9 UDP/TLS/RTP/SAVPF 108 96 98 100 102 104 106 110 112 97 99 101 103 105 107 109 111


В частности audio в порядке приоритета
opus/48000/2
ISAC/16000
ISAC/32000
...


Видео
H264/90000(level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f)
VP8/90000
VP9/90000
VP9/90000(profile-id=2)
H264/90000(level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f)
...


Как приемник (pc2) поймет какой именно кодек выбрал кодировщик(pc1)? В этом частном случае были выбраны первые кодеки (opus и H264). Но ведь перечислены и другие. Если кодек выбирается тупо первым из перечисления, то зачем тогда описывать другие? Не понятно

Почитал https://tools.ietf.org/html/rfc3264
   In all cases, the formats in the "m=" line MUST be listed in order of
   preference, with the first format listed being preferred.  In this
   case, preferred means that the recipient of the offer SHOULD use the
   format with the highest preference that is acceptable to it.

Предпочтительный формат означает, что получатель предложения ДОЛЖЕН использовать формат с наибольшим предпочтением, которое является приемлемым для него.

Получается, что кодек выбирается на основании ответа принимающего, то есть берется первый перечисленных pc2

 , , ,

gobot
()

Сервер сдох - не загружается

Форум — Admin

Работал месяца 4 на hetzner.com и сегодня перестал загружаться. Сапорт говорит что все ок

Ответ из сапорта

The drive check did not see any issue with the hardware:

-----------------%<-----------------
HDDTEST WCAZA5967379: Ok
HDDTEST WMAY03689708: Ok
HDDTEST 11106522340004610090: Ok
HDDTEST 111065183500046100D6: Ok
-----------------%<-----------------

The server is booted to the rescue system with password: ******

You should try to backup your data and then reinstall the system if you cannot fix the boot.


Не знаю с чего начать. Есть доступ к rescue shell. На сервере был(есть?) md raid6 вроде. Я уже не помню что там было. Как примонтировать\найти все raid? Нужно понять восстанавливаемый ли диск или нет и если нет, то заново установлю дебиан. А ещё лучше найти из-за чего сбой произошел

 , ,

gobot
()

Кто использует память

Форум — Admin

На сервере 15 гигов памяти

free -m
              total        used        free      shared  buff/cache   available
Mem:          15995       10377         437          21        5179        5293
Swap:          1048         450         598


ТОП показывает mysql VIRT=8G RES=1.7G

Останавливаю mysql, php-fpm
free -m
              total        used        free      shared  buff/cache   available
Mem:          15995        8633        1954          24        5407        7017
Swap:          1048         402         646


... и все равно кто-то использует 8 гигов памяти
Смотрю в ТОП - там ничего подозрительного. Как вычислить кто память жрет? И почему у mysql VIRT=8G, если в настройках innodb_buffer_pool_size=3G?

 ,

gobot
()

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

Форум — Admin

Есть раздел 100Gb, в нем есть папка /backup размер которой ~80Gb. Хочу из нее сделать TAR архив без сжатия

tar -cf all.tar /backup

и отправить его по ftp на другой сервер. Проблема заключается в том, что all.tar тоже примерно 80 гигов и не хватает места на разделе. Как бы создавать архив «на лету», без копирования данных и сразу отправлять поток на сервер? Можно конечно по одному файлу слать по ftp, но хочу для простоты помещать их сначала в контейнер

 , , ,

gobot
()

Out of memory

Форум — Admin

По не понятным причинам стал вылетать mysql сервер. Стало такое случаться последний месяц где-то, сначала не так часто, а сейчас уже почти каждый день валится. Памяти на сервере 15 гигов, через htop смотрю сижу больше 9 гигов памяти не использовалось(графики zabbix говорят также). Читал, что могут быть пики, которые не заметить и как раз в эти пики и вылетает по ходу.

В данный момент mysql VIRT=9084M, RES=3176M

Конфиг такой

innodb_buffer_pool_size = 6G
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 512M
innodb_flush_method = O_DSYNC


Все остальное по дефолту.


Feb  3 01:13:13 rdv kernel: [12610391.748903] Node 0 Normal: 2036*4kB (ME) 686*8kB (UME) 779*16kB (UME) 209*32kB (UME) 308*64kB (UM) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 52496kB
Feb  3 01:13:13 rdv kernel: [12610391.748911] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Feb  3 01:13:13 rdv kernel: [12610391.748911] 20546 total pagecache pages
Feb  3 01:13:13 rdv kernel: [12610391.748913] 5899 pages in swap cache
Feb  3 01:13:13 rdv kernel: [12610391.748913] Swap cache stats: add 192970232, delete 192963694, find 513890025/589162305
Feb  3 01:13:13 rdv kernel: [12610391.748914] Free swap  = 0kB
Feb  3 01:13:13 rdv kernel: [12610391.748914] Total swap = 1074172kB
Feb  3 01:13:13 rdv kernel: [12610391.748915] 4185545 pages RAM
Feb  3 01:13:13 rdv kernel: [12610391.748915] 0 pages HighMem/MovableOnly
Feb  3 01:13:13 rdv kernel: [12610391.748916] 90670 pages reserved
Feb  3 01:13:13 rdv kernel: [12610391.748916] 0 pages hwpoisoned
...processes...
Feb  3 01:13:13 rdv kernel: [12610391.749060] Out of memory: Kill process 24065 (mysqld) score 213 or sacrifice child
Feb  3 01:13:13 rdv kernel: [12610391.750270] Killed process 24065 (mysqld) total-vm:9301092kB, anon-rss:3341608kB, file-rss:0kB, shmem-rss:0kB


cat /var/log/syslog | grep «Out of memory»
Feb  2 22:01:42 rdv kernel: [12598900.498640] Out of memory: Kill process 65035 (mysqld) score 216 or sacrifice child
Feb  2 22:24:20 rdv kernel: [12600259.045621] Out of memory: Kill process 20674 (mysqld) score 215 or sacrifice child
Feb  2 22:46:23 rdv kernel: [12601582.218126] Out of memory: Kill process 28816 (mysqld) score 219 or sacrifice child
Feb  2 23:35:14 rdv kernel: [12604513.339722] Out of memory: Kill process 35001 (mysqld) score 220 or sacrifice child
Feb  3 00:28:22 rdv kernel: [12607700.986707] Out of memory: Kill process 54682 (mysqld) score 224 or sacrifice child
Feb  3 00:57:57 rdv kernel: [12609476.511797] Out of memory: Kill process 13654 (mysqld) score 221 or sacrifice child
Feb  3 01:13:13 rdv kernel: [12610391.749060] Out of memory: Kill process 24065 (mysqld) score 213 or sacrifice child
Feb  3 01:41:19 rdv kernel: [12612078.147444] Out of memory: Kill process 30852 (mysqld) score 220 or sacrifice child
Feb  3 02:00:49 rdv kernel: [12613247.978070] Out of memory: Kill process 39418 (mysqld) score 216 or sacrifice child
Feb  3 03:01:12 rdv kernel: [12616870.773658] Out of memory: Kill process 44571 (mysqld) score 225 or sacrifice child
Feb  3 03:38:12 rdv kernel: [12619090.028045] Out of memory: Kill process 3708 (mysqld) score 217 or sacrifice child
Feb  3 04:04:37 rdv kernel: [12620676.371188] Out of memory: Kill process 14891 (mysqld) score 231 or sacrifice child
Feb  3 05:09:46 rdv kernel: [12624583.826479] Out of memory: Kill process 27736 (mysqld) score 214 or sacrifice child
Feb  3 05:33:50 rdv kernel: [12626027.467635] Out of memory: Kill process 54957 (mysqld) score 213 or sacrifice child
Feb  3 06:00:21 rdv kernel: [12627620.009034] Out of memory: Kill process 63123 (mysqld) score 205 or sacrifice child
Feb  3 06:22:27 rdv kernel: [12628946.149432] Out of memory: Kill process 8480 (mysqld) score 217 or sacrifice child


Куда смотреть, на запросы, которые съедают память? Если да, то как их отловить? Или не обязательно в mysql дело?

 , ,

gobot
()

Вставить в слово невидимый символ

Форум — Web-development

Хочу придать некоторым словам некоторое колдовство. Например, в обычное слово ПРИВЕТ, вставить некоторый управляющий символ utf, и потом при парсинге текста проверять, присутствует он или нет и производить с этим словом некоторые махинации(обрезать букву последнюю, например)

https://ru.wikipedia.org/wiki/Управляющие_символы
Тут описаны невидимые символы, мне надо их добавлять в начале слова. Какой символ правильней будет добавить и вообще в том направлении я иду? Как проще сделать такое? Обрамлять в теги и придавать какие то классы - не вариант

 , ,

gobot
()

Как пользоваться cloudflare если он заблочен

Форум — Admin

Как пользоваться cloudflare если его некоторые(в частности 104.28.8.104) адреса заблочены в путинской России? Стоит ли писать в поддержку? Или забить и не пользоваться им?

Да, не работает только https, пишет connection reset(у половины). По http работает.

Роскомпозор
http://prntscr.com/prrmhn

 ,

gobot
()

soft restart сервиса на node

Форум — Admin

Есть у меня на node сервер websocket. Хочу его перезагружать, но чтобы подключенные клиенты не сбрасывались. Типа как ngix reload. Размышляю так: нужно сначала убирать listen на порту и...продолжать работу сервера? До тех пор пока последний клиент не отключился? Как снимать listen не знаю, сервер при этом отрубает всех клиентов. Какие размышления будут?

 , ,

gobot
()

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

Форум — Admin

После некоторого шаманства с GIT, исчезла папка upload, точнее вместо нее стала ссылка на саму же себя. Произошло это после pull репы, в которой upload была указана как ссылка. Предполагаю что git существующую папку перезатер ссылкой. Файлы удалились или нет? Если удалить эту ссылку, то что останется? В общем как вернуть папку?
Пока что пробовал через ext4magic, но что то не видит он этой папки и зависает или я не так делаю

 

gobot
()

Нужен ли мне vue, react, angular?

Форум — Web-development

Этот вопрос меня преследует уже год. Никак не могу понять нужен ли мне vue. Обновлять дом? Да, в некоторой степени это удобно, но и накладывает некоторые ограничения. Бесят эти v-onclick, я привык навешивать события не в тегах, а сразу на множество элементов по селекторам в jquery. Вся html разметка в бесконечных v-if v-html. Ну да, это здорово, меняешь 1 свойство и весь шаблон сказочно перерисовывается. Но чем больше я погружаюсь в vue, тем больше времени я трачу на решение поисков ответов на элементарные вопросы как сделать нечто по философии vue, не используя костыли.

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

Меньше пробовал react, уже не стал эксперементировать, посмотрел, такое же vue собственно, реактивность, шаблонны

На данный момент есть мысли что vue а тем более ангуляр не то чтобы упрощают разработку, а наоборот тормозят ее, отбирая время на бесконечное гугление и написание костылей. Больше разбираешься в устройстве молотка, чем забиваешь гвозди

Наверное я просто не вник в эти инструменты достаточно и у меня ничего не выходитс ними или использую устаревшую концерцию генерации шаблонов на сервере. Я просто не понимаю для чего нужен vue

 , ,

gobot
()

vue затирает h1

Форум — Web-development
<div id="app">
<h1 v-html="header">страница</h1>
</div>
var app = new Vue({
  el: '#app',
  data: {
      header: null
  }
});



После загрузки страницы h1 затирается. Как установить начальное значение header, чтобы vue брал за основу уже имеющийся текст внутри h1?

 

gobot
()

JS фреймворк для ajax api, подгрузки блоков

Форум — Web-development

Может есть что-либо готовое... С готовым АПИ для дергания ajax запросов типа request.api(url, success, fail) с интеграцией в UI(например пока идет загрузка крутится шарик, а потом контент вставляется сам в блок). Ещё нужно подгружать блоки с сервера, открывать их в modal окнах и прочие рутинные штучки. Есть всякие VUE, angular. Куда смотреть? Или такое самому только делать?

 ,

gobot
()

Не загружается GRUB: invalid arch independent ELF magic

Форум — Admin

После некоторого шаманства с RAID перестал загружатся дебиан.
Конфигурация такова: есть 4 диска sda, sdb, sdc, sdd и 1 RAID6 в который входят эти диски(потом я удалил 2). Ранее(когда не было raid) система нормально загружалась через sda, на котором находился grub.
После добавления 4 дисков к массиву при загрузке выдает такое сообщение «invalid arch independent ELF magic».

Что я делал в grub rescue

ls
(hd0) (hd0,msdos5) (hd0,msdos1) (hd1) (hd1,msdos5) (hd1,msdos1) (hd2) (hd2,msdos5) (hd2,msdos1) (hd3) (hd3,msdos5) (hd3,msdos1) (md/0)
set prefix=(md/0)/boot/grub
set root=(md/0)
ls /boot/grub
... i386-pc/ locale/ fonts/ grub.cfg ...
insmod ext2
insmod normal
error: invalid arch independent ELF magic


Потом загружался через live-cd kali, запускал RAID массив, монтировал его и пытался восстановить grub
mdadm -A --scan /dev/md0 /dev/sda1
mdadm: /dev/md/0 has been started with 2 drives (out of 4)
cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active (auto-read-only) raid6 sdd1[4] sdc1[2]
      4190208 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/2] [U_U_]

mount /dev/md0 /mnt

apt-get install grub-pc
grub-probe: error: failed to get canonical path of `overlay'.
grub-probe: error: failed to get canonical path of `overlay'.
grub-probe: error: failed to get canonical path of `overlay'.


grub-install --root-directory=/mnt /dev/md0

Installing for i386-pc platform.
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.


Дальше не знаю что делать

вывод fdisk -l
Disk /dev/sda: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *       2048 4196351 4194304    2G 83 Linux
/dev/sda2       4198398 6289407 2091010 1021M  5 Extended
/dev/sda5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/sdc: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdc1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdc2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdc5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/sdb: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdb2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdb5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/sdd: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdd1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdd2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdd5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/loop0: 752.14 MiB, 788676608 bytes, 1540384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/md0: 3.102 GiB, 4290772992 bytes, 8380416 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes



вывод lsblk -f
NAME    FSTYPE            LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINT
loop0   squashfs                                                               0   100% /usr/lib/live/mount/rootfs/filesystem.squashfs
sda
├─sda1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
├─sda2
└─sda5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sdb
├─sdb1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
├─sdb2
└─sdb5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sdc
├─sdc1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
│ └─md0 ext4                        dc2f4298-25af-4bda-abbf-a3c0a8fc9592  873.2M    49% /mnt
├─sdc2
└─sdc5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sdd
├─sdd1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
│ └─md0 ext4                        dc2f4298-25af-4bda-abbf-a3c0a8fc9592  873.2M    49% /mnt
├─sdd2
└─sdd5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sr0     iso9660           Kali Live 2019-08-27-11-08-45-00                     0   100% /run/live/medium

 ,

gobot
()

Не могу примонтировать склонированный диск

Форум — Admin

Хочу склонировать диск /dev/sda на /dev/sdb, оба они 3GB.

fdisk -l /dev/sda
Disk /dev/sda: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *       2048 4196351 4194304    2G 83 Linux
/dev/sda2       4198398 6289407 2091010 1021M  5 Extended
/dev/sda5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris



Делаю полный клон с таблицей разделов
dd if=/dev/sda of=/dev/sdb

В итоге получаю склонированный диск
fdisk -l /dev/sdb
Disk /dev/sdb: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdb2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdb5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Потом делаю
mount /dev/sdb1 /mnt/
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error


Что ему надо? Что за /dev/loop0 ?

До этого делал
dd if=/dev/sda1 of=/dev/sdb1

заметил что
file /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=dc2f4298-25af-4bda-abbf-a3c0a8fc9592 (needs journal recovery) (extents) (64bit) (large files) (huge files)

определяется как файл, вместо block special

Удалил rm /dev/sdb1 сделал повторно клон и примонтировался. Что было не совсем пойму. dd сначала файл создал обычный /dev/sdb1 ?

 , , , ,

gobot
()

Резко участились deadlock

Форум — Admin

Что то резко участились deadlock в mysql, в одной таблице. Раньше раз в год был 1 deadlock сейчас в день по 2-3 раза. После чего это произошло будет описано ниже.

Решил я создать индекс дополнительный. Вот собственно и все. После этого посыпались deadlock.

 ,

gobot
()

swap постоянно забит

Форум — Admin

На сервере debian почти постоянно забит на 100% swap, хотя память используется на 70% и ни разу не превышала этот порог.
Был давно установлен

vm.swappiness = 10

Но почему некоторые процессы продолжают скидывать в своп данные?

for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n | awk '$3 > 5000'

php-fpm7.0 15939 5080 kB
php-fpm7.0 6023 5080 kB
nginx 12113 5104 kB
php-fpm7.0 6019 5116 kB
php-fpm7.0 6018 5120 kB
php-fpm7.0 6015 5172 kB
php-fpm7.0 6021 5172 kB
php-fpm7.0 6017 5200 kB
php-fpm7.0 6010 5212 kB
php-fpm7.0 5997 5236 kB
php-fpm7.0 6013 5252 kB
php 25432 5288 kB
php-fpm7.0 6022 5304 kB
php-fpm7.0 6020 5308 kB
php-fpm7.0 6016 5356 kB
php-fpm7.0 6025 5804 kB
php-fpm7.0 6031 6308 kB
php-fpm7.0 6026 6456 kB
php 30006 7160 kB
php-fpm7.0 6030 7228 kB
php 31132 7328 kB
nginx 8061 8136 kB
nginx 12112 8204 kB
php-fpm7.0 6028 9252 kB
node 11408 9364 kB
node 7240 11812 kB
containerd 9854 12192 kB
node 8063 12732 kB
mysqld 23504 20824 kB
dockerd 7924 21808 kB
node 12525 35868 kB

 ,

gobot
()

php fpm убить запрос если клиент отсоединился

Форум — Admin

Есть связка nginx+php-fpm. Хочу чтобы убивались запросы со стороны php, если клиент отсоединился

Например клиент запрашивает http://host/script.php

wget --read-timeout=1 --no-check-certificate -t 1 https://host/script.php

Через 1 сек. клиент закрывает соединение(--read-timeout=1), но nginx не закрывает соединение с сокетом /run/php-fpm.sock
netstat -nap | grep php | grep CONNECTED | grep -v mast
unix  2      [ ]         STREAM     CONNECTED     51186    21008/php-fpm: pool  /run/php-fpm.sock

и скрипт продолжает работать

Сам script.php засыпает за 10000 сек.
<?php
sleep(10000);


fastcgi_ignore_client_abort on в nginx не помогает

Да, можно поставить в самом php лимиты max_execution_time или request_terminate_timeout, но хотелось бы чтобы nginx закрывал сам соединение c php, если клиент уже отсоединился и не ждет результата работы скрипта

 ,

gobot
()

Чтение файла с конца

Форум — Web-development

Ищу быстрый способ чтения построчно большого файла с конца.
Нашел такой вариант с fseek https://werxltd.com/wp/2010/10/29/reading-a-file-line-by-line-in-reverse-with... но он тормозной. Все примеры в гугле основаны на перемещении указателя, но почему то все тормозное. Неужели fseek операция такая ресурсоемкая?
Собственно нужно вот что. Анализ лог-файла за последний час(в кроне скрипт запускается каждый час) и отыскивание ошибок с оповещением админу. Читаю файл с конца и когда дохожу до строки X, то прерывается

Замерил

Считывание 10 000 строк с начала файла
time loganalizer.php
real    0m0.020s

Считывание 50 000 строк с начала файла
time loganalizer.php
real    0m0.036s

Считывание 10 000 строк с конца файла
time loganalizer.php
real    0m3.105s

Считывание 50 000 строк с конца файла
time loganalizer.php
real    0m15.547s


stat /var/log/nginx/access.log.1
Size: 2 497 557 076



разница просто сумасшедшая, с конца файла в 155 и 500 раз дольше

 , ,

gobot
()

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