abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 2
    včera 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 7
    včera 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 13
    včera 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    včera 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 11
    včera 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    včera 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 1
    8.10. 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    8.10. 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 10
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2825 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Memory profiling vo WSGI middlewari

    8.8.2015 19:30 | Přečteno: 5139× | Web | Výběrový blog | poslední úprava: 8.8.2015 19:29

    Dnešný blog bude o použití heapy na hľadanie memory leakov v python wsgi aplikácii.

    Profiler heapy je súčasťou balíka guppy. Nainštalovať sa dá štandardne cez pypi (pip install guppy).

    Tutoriálov k heapy na internete moc nie je, jeden z mála ako-tak použiteľných je tu. Ukážka použitia heapy:

    from guppy import hpy
    hp = hpy()
    
    # inicializácia aplikácie
    hp.setrelheap()
    kriticka_cast()
    heap = hp.heap()
    
    print(heap)

    WSGI Middleware

    Middleware je funkcia (alebo funkcionálny objekt) s parametrami environ (prostredie nastavené webserverom, okrem iného obsahuje query string a požadovanú cestu) a start_response (funkcia ktorá sa musí zavolať pred vrátením generátora).

    Riadenie som zabezpečil GET parametrami debugmem_relheap (nastavenie referenčnej hodnoty heapu, po zavolaní bude zapisovať rozdiely voči tejto hodnote), debugmem_live (zapnutie pdb) a debugmem_dump (zápis snapshotu do súboru profile.hpy)

    # -*- coding: utf-8 -*-
    from guppy import hpy
    
    from .wsgi import application
    
    
    class StatsMiddleware(object):
        def __init__(self, app):
            super(StatsMiddleware, self).__init__()
            self.app = app
            self.hp = hpy()
    
        def start_ok_response(self, start_response):
            status = '200 OK'
            response_headers = [('Content-type', 'text/plain')]
            start_response(status, response_headers)
    
        def __call__(self, environ, start_response):
            if 'debugmem_dump' in environ.get('QUERY_STRING', ''):
                heap = self.hp.heap()
                heap.dump('profile.hpy')
    #            heap_response = [
    #                '\nHeap\n',
    #                str(heap),
    #                '\nrcs\n',
    #                str(heap.byrcs),
    #                '\nrcs[0]\n',
    #                str(heap.byrcs[0].byid),
    #                '\nrp\n',
    #                str(heap.get_rp()),
    #                '\nModules\n',
    #                str(heap.bymodule),
    #            ]
                self.start_ok_response(start_response)
    #            for item in heap_response:
    #                yield item
            elif 'debugmem_live' in environ.get('QUERY_STRING', ''):
                heap = self.hp.heap()
                self.start_ok_response(start_response)
                import pdb
                pdb.set_trace()
            elif 'debugmem_relheap' in environ.get('QUERY_STRING', ''):
                self.hp.setrelheap()
                self.start_ok_response(start_response)
            else:
                for item in self.app(environ, start_response):
                    yield item
    
    
    application = StatsMiddleware(application)
    

    Použitie

    Po obalení vlastnej wsgi alikácie do middlewaru je možné ovládať profiler pomocou GET parametrov. Zvyčajný postup je:

    Zobrazenie priebehu stavu pamäte v grafe

    Pre ukladanie profilu v určených intervaloch je možné použiť jednoduchý skript (použitie ./skript http://adresa/):

    #!/bin/bash
    
    ADDRESS=$1
    REPEAT_COUNT=10
    
    curl "${ADDRESS}" > /dev/null
    curl "${ADDRESS}?debugmem_relheap"
    
    while true
    do
        for i in `seq $REPEAT_COUNT`
        do
            curl "${ADDRESS}" > /dev/null
        done
        curl "${ADDRESS}?debugmem_dump"
    done

    Zobraziť graf je možné cez integrovaný prehliadač heapy:

    from guppy import hpy
    hp = hpy()
    hp.pb('profile.hpy')

    Použitie v pdb

    Pre prepnutie aplikácie do debuggeru pdb stačí zavolať url s parametrom ?debugmem_live. Aktuálne štatistiky s v lokálnej premennej heap:

    (Pdb) heap
    Partition of a set of 189233 objects. Total size = 27139464 bytes.
     Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
         0  72048  38  6146088  23   6146088  23 str
         1  48920  26  4136056  15  10282144  38 tuple
         2  10719   6  2580752  10  12862896  47 unicode
         3   2383   1  1796200   7  14659096  54 dict (no owner)
         4  13848   7  1661760   6  16320856  60 function
         5    661   0  1615096   6  17935952  66 dict of module
         6  12111   6  1550208   6  19486160  72 types.CodeType
         7   1557   1  1415928   5  20902088  77 dict of type
         8   1557   1  1406488   5  22308576  82 type
         9   2313   1   331656   1  22640232  83 list
    <702 more rows. Type e.g. '_.more' to view.>
    
    (Pdb) heap.byrcs
    Partition of a set of 189233 objects. Total size = 27140232 bytes.
     Index  Count   %     Size   % Cumulative  % Referrers by Kind (class / dict of class)
         0  65049  34  5867160  22   5867160  22 types.CodeType
         1  16121   9  1903488   7   7770648  29 function
         2  23610  12  1809464   7   9580112  35 tuple
         3   5071   3  1709360   6  11289472  42 type
         4   4407   2  1655128   6  12944600  48 function, tuple
         5  12880   7  1585352   6  14529952  54 dict of type
         6   7195   4  1553200   6  16083152  59 dict of module
         7    465   0  1217688   4  17300840  64 function, module
         8  10607   6   792688   3  18093528  67 dict (no owner)
         9   2665   1   555704   2  18649232  69 dict of module, tuple
    <2579 more rows. Type e.g. '_.more' to view.>
    
    (Pdb) heap[5].byrcs
    Partition of a set of 661 objects. Total size = 1615096 bytes.
     Index  Count   %     Size   % Cumulative  % Referrers by Kind (class / dict of class)
         0    464  70  1216640  75   1216640  75 function, module
         1    179  27   342728  21   1559368  97 module
         2     15   2    38760   2   1598128  99 function, module, types.FrameType
         3      1   0    12568   1   1610696 100 dict (no owner), dict of email.LazyImporter, dict of
                                                 module, guppy.heapy.heapyc.RootStateType, module,
                                                 types.FrameType
         4      1   0     3352   0   1614048 100 guppy.heapy.heapyc.RootStateType, module
         5      1   0     1048   0   1615096 100 module, types.FrameType
    
           

    Hodnocení: 100 %

            špatné • dobré        

    Obrázky

    Memory profiling vo WSGI middlewari, obrázek 1 Memory profiling vo WSGI middlewari, obrázek 2 Memory profiling vo WSGI middlewari, obrázek 3

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Bedňa avatar 10.8.2015 23:43 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari
    Byť manažérom poviem dobré, byť kodérom, dokonči čo chceme a nerieš pičoviny :-)
    KERNEL ULTRAS video channel >>>
    vlastikroot avatar 11.8.2015 00:52 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari
    Nevim zrovna tady, ale (memory) profiling je asi docela dulezita prace vyvojare. Ja napr. ted resim pomalost moji aplikace v QML na ARMu. A to je jen zacatek, pro nonstop beh budu muset resit i tu pamet - memory leaky atd.
    We will destroys the Christian's legion ... and the cross, will be inverted
    mirec avatar 11.8.2015 12:49 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari

    Hmm, zaujímavé, dali by sa napísať nejaké detaily (chápem, že niektorí ľudia majú zmluvne zakázané hovoriť o produkte, ja som o tomto tiež nesmel hovoriť kým nebol produkt hotový).

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    vlastikroot avatar 11.8.2015 13:27 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari

    Je to aplikace na predni panel zesilovace. Vicemene to ovlada pres seriovy port ridici desku, ktera prepina a nastavuje ruzne elektronicke potenciometry a spinace/relatka (tzn. digitalne ovladany analog). Ridici deska navic meri ruzna mista v zesilovaci (napr. napajecky, vystupni napeti/proudy atd.) a tim dela realtime diagnostiku jak zesilovace, tak reproduktoru. Vsechny tyhle veci jsou pristupny pres network client/server. Ta QML aplikace je vlastne jen klient k ty siti. Je to napsane hodne v QML/JS, jen ta sitova cast je v C++ (pristupna v QML pres Q_PROPERTY a Q_INVOKABLE). Bezi to pres EGLFS primo nad framebufferem, ale je tam jadro 2.6.35, ktere asi jeste ma problem s tickama (kdyz jsem zvysil na 1000Hz, vsechno se zlepsilo).

    We will destroys the Christian's legion ... and the cross, will be inverted
    Bedňa avatar 11.8.2015 22:53 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari
    Bug report:
    This page was unable to display a Google Maps element. The provided Google API key is invalid or this site is not authorized to use it. Error Code: InvalidKeyOrUnauthorizedURLMapError
    KERNEL ULTRAS video channel >>>
    mirec avatar 12.8.2015 07:54 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari

    Nie som autorom webu. Ja som robil len webové konfiguračné rozhranie pre zariadenie a dotykové UI v QML ;)

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    11.8.2015 12:30 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari
    Snad opačně, ne?
    mirec avatar 11.8.2015 12:44 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari

    Neviem ako inde, ale môjho zamestnávateľa by asi dosť trápilo keby kvôli nejakej drobnosti ako zabudnuté vyčistenie cache dochádzalo na serveri k OOM.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Bedňa avatar 11.8.2015 22:51 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari
    Ber to s humorom, chcelo to nakopnúť diskusiu ;-)
    KERNEL ULTRAS video channel >>>
    mirec avatar 12.8.2015 07:55 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari

    V tomto počasí neberiem s humorom nič. Najradšej by som vonku behal nahý s plameňometom, ale je mi na to moc teplo.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Bedňa avatar 12.8.2015 10:51 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari
    Ja som si už zvykol, keď to spadne pod 32 začína mi byť chladno..
    KERNEL ULTRAS video channel >>>
    mirec avatar 12.8.2015 12:54 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Memory profiling vo WSGI middlewari

    Mne tu ukazuje teplomer hnusných 24.6°C (po všetkých opatreniach okrem klimatizácie ktoré ma napadli vrátane obalenia časti domu na ktúrú svieti slnko alobalom [a áno vyzerá to úplne nahovno]).

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.