Výkon kamerových serverů

Byl jsem donucen analyzovat některé problémy na několika kamerových serverech - obvykle potíže s výkonem (nadměrný load).

Dobrá zpráva je, že ve vhodné konstelaci se to dá vyladit a jeden server toho zvládne hodně. Mám tu nějaké šest let staré čtyřjádro s 8GB RAM a zvládá to 21 fullHD kamer s loadem hluboko pod 1.

Vypadávající kamery

Tohle je největší problém. Kamera, která vůbec nefunguje, celý systém trochu zatěžuje, protože pořád dochází k restartu stahování videa - ale není to nic kritického.
Vypadávající kamera dokáže vygenerovat za hodinu desítky vadných mpeg souborů (buď opravdu vadných nebo s délkou 0 bajtů). Z takových souborů se pořád dokola generují náhledové obrázky videa, ffmpeg si s tím neumí poradit a podivně se zacykluje. Postupně během několika dnů tam takových procesů visí desítky až stovky a výkon serveru to dokáže zcela degradovat.
Samozřejmě by to asi šlo nějak analyzovat a takové soubory průběžně odstraňovat - ale je otázka, jestli není jednodušší takové kamery prostě vyměnit.

Moderní kernel

Výkon serverů s Ubuntu 20.04 je zjevně lepší než 18:04. Takže by to chtělo staré servery upgradovat.

Problémy s ftp serverem

Současné proftpd má v Ubuntu 20.04 nějaký problém a po několika hodinách provozu začně zahlcovat paměť. Nějaké oprava na to asi není. Dá se to řešit restartem služby z cronu jednou za hodinu, což je sice strašné, ale docela to funguje.
Dělám nějaké pokusy s vsftpd, ale je to na dlouho a dokud se to nezkusí na zatíženém serveru, tak to nebude průkazné.

Úložiště pro archív videí

Dneska to víceméne všude funguje tak, že vider z kamer jdou na lokální harddisk a následně se jednou za hodinu přesunou nějak jinam - buď na jiný lokální disk nebo na NAS.
Doba pokročila, všichni mají spoustu kamer a tak se každou hodinu přesouvají běžně desítky GB - což ten server docela zatěžuje.
Mám tady teď dva moderní rotační disky 16TB v RAID0 s podporou stripe (tj. není to v podstatě RAID, jde jenom o spojení dvou disků do jednoho - ale soubory se rozkládají na oba disky, takže by to měl fungovat dvakrát rychleji než jeden disk). Bez problémů to ukládádá 300 MB za sekundu - takže je otázka, jestli by nestálo za to ta videa ukládat přímo na tento disk s archívem - přesun by potom byl otázkou maximálně několika sekund, protože fyzicky by se nic nepřesouvalo.
Budu s tím ještě experimentovat.

H264+

Zkoušel jsem na jedné 4K kameře Hikvision zapnout H264+ a ta video jsou opravdu menší - u scén s malým pohybem až o dvě třetiny. Teoreticky má to video horší kvalitu (u souvislých ploch typu bílá stěna), ale to je asi dost subjektivní a já tam žádný markantní rozdíl nevidím. Možná je to v určitých situacích zajímavé.

Zmenšování obrázků za letu

Pro “realtime” sledování v prohlížeči se obrázky zmenšují (snižuje se rozlišení). Pokud se dívá několik lidí, nebo je na ploše hodně kamer, tak to ten server docela zatěžuje. Asi by šly zvážit dvě věci:

  • Nezmenšovat to. Vzniklo to kdysi dávno a doba možná pokročila a ti klienti by to možná a menšího poču obrázků zvládali docela dobře (u fullHD obrázků docela určitě).
  • Neukládát u 4K kamer obrázky v plném rozlišení. Lidem, co mají fullHD obrazovku, to stejně k ničemu není, protože to nikdy neuvidí.
    Tady asi nejde najít univerzální řešení, které by vyhovolalo všem - muselo by se to nějak nastavovat (a hlavně vyzkoušet jestli to něco vůbec přinese).

Lepší monitoring

Celkově je největší problém asi to, že případné problémy nejdou moc vidět a dokud to nějak jede, tak to jede, a až to nejede, tak je pozdě něco zkoumat.
Chtělo by to:

  • Vědět, že kamera neukládá video, případně jsou tam problémy (nulové délky souborů, mnoho souborů za hodinu apod.).
  • Mít historické záznamy o velikosti videí za kameru / hodinu / den a celkově lépe sledovat velikost celého archívu.
  • Znát nějaké průměrné velikosti obrázků - opět za kameru / hodinu / den.
  • Ukládat časy všech těch servisních operací (přesun do archívu, čištění disku, generování náhledů) - bez toho je člověk naprosto slepý.

Co s tím

Všechny činnosti s kamerama berou hodně času a je to dost neproduktivní činnost.

  • Asi by si každý měl zvážit ty upgrady serveru (nové ubuntu).
  • Fakt by to chtělo řešit údržbu, tj. vyřazovat staré problematické kamery.
  • Asi by se dalo dost věcí vylepšit i na straně softwaru - ale to by musel být nějaký tlak a musel by to být placený upgrade nebo něco takového.

Asi z toho nic převratného nejde vyčíst - ale aspoň se dá ujistit, že to je v mezích normálu.

Screenshot 2022-01-14 at 9.22.04

Teoreticky by to už mohlo začít hlásit, zatím jsem to ale nějak cíleně netestoval.

Je to rozhodně zajímavé; navíc to dělá brutální rozdíl třeba proti starým SD kamerám, kde je ta komprese velice neúčinná - takže 4K kamera si za den vezme 254 MB, ale SD kamera 1.4 TB (modrá je 4K, zelená je SD).

Screenshot 2022-01-14 at 9.19.52

Všechny tyto věci jedou pouze na nové verzi…

Už to hlásí, dneska při výpadku mě došly issues u kamer co se nestahovaly…