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í
×

dnes 14:00 | Zajímavý projekt

Byl spuštěn Humble Down Under Bundle. Za vlastní cenu lze koupit multiplatformní hry The Warlock of Firetop Mountain, Screencheat, Hand of Fate a Satellite Reign. Při nadprůměrné platbě (aktuálně 3,63 $) také Hacknet, Hacknet Labyrinths, Crawl a Hurtworld. Při platbě 12 $ a více lze získat navíc Armello.

Ladislav Hagara | Komentářů: 0
dnes 13:00 | Nová verze

Google Chrome 62 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 62.0.3202.62 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 35 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 1
dnes 11:00 | Zajímavý článek

Článek (en) na Mozilla.cz je věnován vykreslování stránek ve Firefoxu. V průběhu roku 2018 by se ve Firefoxu měl objevit WebRender, jenž by měl vykreslování stránek urychlit díky využití GPU.

Ladislav Hagara | Komentářů: 4
dnes 08:22 | Bezpečnostní upozornění

NÚKIB (Národní úřad pro kybernetickou a informační bezpečnost) informuje o zranitelnosti ROCA v procesu generování RSA klíčů, který se odehrává v softwarové knihovně implementované například v kryptografických čipových kartách, bezpečnostních tokenech a dalších hardwarových čipech vyrobených společností Infineon Technologies AG. Zranitelnost umožňuje praktický faktorizační útok, při kterém útočník dokáže vypočítat

… více »
Ladislav Hagara | Komentářů: 2
dnes 01:23 | Zajímavý software

Příspěvek na blogu otevřené certifikační autority Let's Encrypt informuje o začlenění podpory protokolu ACME (Automatic Certificate Management Environment) přímo do webového serveru Apache. Klienty ACME lze nahradit novým modulem Apache mod_md. Na vývoj tohoto modulu bylo uvolněno 70 tisíc dolarů z programu Mozilla Open Source Support (MOSS). K rozchození HTTPS na Apache stačí nově přidat do konfiguračního souboru řádek s ManagedDomain. Minutový videonávod na YouTube [reddit].

Ladislav Hagara | Komentářů: 1
včera 14:15 | Komunita

Daniel Stenberg, autor nástroje curl, na svém blogu oznámil, že obdržel letošní Polhemovu cenu, kterou uděluje Švédská inženýrská asociace za „technologickou inovaci nebo důvtipné řešení technického problému“.

marbu | Komentářů: 9
včera 13:40 | Pozvánky

Cílem Social Good Hackathonu, který se uskuteční 21. a 22. října v Brně, je vymyslet a zrealizovat projekty, které pomůžou zlepšit svět kolem nás. Je to unikátní příležitost, jak představit nejrůznější sociální projekty a zrealizovat je, propojit aktivní lidi, zástupce a zástupkyně nevládních organizací a lidi z prostředí IT a designu. Hackathon pořádá brněnská neziskovka Nesehnutí.

… více »
Barbora | Komentářů: 1
včera 00:44 | Pozvánky

V sobotu 21. října 2017 se na půdě Elektrotechnické fakulty ČVUT v Praze uskuteční RT-Summit – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt.

… více »
Pavel Píša | Komentářů: 8
16.10. 23:44 | Bezpečnostní upozornění

V Linuxu byla nalezena bezpečnostní chyba CVE-2017-15265 zneužitelná k lokální eskalaci práv. Jedná se o chybu v části ALSA (Advanced Linux Sound Architecture).

Ladislav Hagara | Komentářů: 1
16.10. 22:44 | Komunita

Greg Kroah-Hartman informuje na svém blogu, že do zdrojových kódu linuxového jádra bylo přidáno (commit) prohlášení Linux Kernel Enforcement Statement. Zdrojové kódy Linuxu jsou k dispozici pod licencí GPL-2.0. Prohlášení přidává ustanovení z GPL-3.0. Cílem je chránit Linux před patentovými trolly, viz například problém s bývalým vedoucím týmu Netfilter Patrickem McHardym. Více v často kladených otázkách (FAQ).

Ladislav Hagara | Komentářů: 4
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (15%)
 (2%)
 (0%)
 (2%)
 (71%)
 (11%)
Celkem 55 hlasů
 Komentářů: 3, poslední dnes 20:46
    Rozcestník

    Dotaz: Apache+PHP+Oracle

    12.11.2015 08:26 Scendel
    Apache+PHP+Oracle
    Přečteno: 331×
    Dobrý den,

    rád bych se zeptal, zda někdo tuto konfiguraci nepoužívá, mám problém, že při větším počtu uživatelů mi souměrně stoupá i počet připojení do Oracle

    root@ora-web:/home/# netstat -tanpe|grep 1521 | grep ESTABLISHED |wc -l 80 root@ora-web:/home/# ps -aux|grep apache2 |wc -l 89

    konfigurace apache:
     mpm_prefork_module>
        ServerLimit          20
        StartServers          2
        MaxClients          130
        MinSpareThreads      5
        MaxSpareThreads      15
        ThreadsPerChild      64
        MaxRequestWorkers   100
        MaxRequestsPerChild   0
    
    
    v php je nastaveno přes OCI persistentní připojeni, potřebuji nějak omezit počet připojení do databáze, přeci není možné, když budu mít 1000 připojení na web server, aby bylo 1000 připojeni do Oracle, zkoušel jsem různě měnit nastaveni apache, ale už si opravdu nevím rady, jedná se Ubutnu LTS server 14

    když by Vás něco napadlo, tak prosím poradtě

    Děkuji Vám

    Odpovědi

    12.11.2015 10:14 Ivan
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    PHP a Oracle je hodne spatna kombinace. Pamatuju si, ze kdysi nekdo na FEL CVUT napsal jako diplomku neco co fungovalo jako MaxConnect pro Informix. Tzn na web serveru bezi samostatny proceses, ktery drzi konexe do databaze, a samotne PHP worder procesy s nim mluvi pres IPC.

    Jeste si vzominam, ze Oracle ma neco podobnyho a jmenuje se to DRCP.
    12.11.2015 10:22 Scendel
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    diky za reakci, DRCP je bohuzel az od Oracle 11 ja řeším Oracle 10, kde nic podobného není když bych dokázal upravit apache aby jeden worker mohl obslouzit vice klientu, protoze co proces apache, to connect do db .. mam mpm_prefork nevím jestli by se stejně choval mpm_worker ...
    12.11.2015 10:55 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    PS: DRCP je normální connection pooling, což se liší od persistentního spojení. Rozdíl je popsaný např. http://www.databasesoup.com/2013/07/connection-pooling-vs-persistent.html Connection pooling je úplně běžně používaná technika a nijak nesouvisí s tím, zda je Oracle vhodná pro použití ve spojení PHP.
    -- OldFrog
    12.11.2015 10:31 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    MaxClients máte na 130, takže víc než 130 požadavků se nebude současně obsluhovat a tedy by nemělo být ani víc připojení do databáze. Funguje to tak? Pokud ne, je někde problém a chtělo by ho to najít, protože tvrdé nastavení limitu na počet konexí do databáze by nic neřešilo - sice by se snížil počet připojení do databáze, ale aplikace by neměla dostat spojení a házela by chybu.

    Tvrdé nastavení limitu na počet persistentních spojení lze udělat pomocí oci8.max_persistent. Jelikož jedno persistentní připojení může využívat jen jeden běžící php skript, měla by být hodnota max_persistent nastavena na hodnotu MaxClients, tedy 130 (+ nějaká rezerva).

    Pokud se hromadí připojení do databáze je někde problém. Mají všechna databázová spojení stejné přihlašovací údaje? Podaří se persistentní spojení skutečně vytvořit? Pokud se nepodaří persistentní připojení, uzavře se pak normální nepersistentní připojení? To lze otestovat na jednoduchém testovacím skriptu a pak ladit teprve v aplikaci.
    -- OldFrog
    12.11.2015 10:42 Ivan
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Tezko rict co je horsi, jestli velke mnozstvi necinnych konexi, anebo to, ze se spojeni budou otevirat pri kazdym kliknuti na strance. V pripade Oracle ma vytvoreni DB spojeni dost velky overhaed.
    12.11.2015 10:56 Scendel
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    MaxClient na 130 funguje, to je ale špatně, já nemůžu omezovat klienty, oci8.max_persistent mám nastaveno na 1 to znamená když bych nasatvil na 130 tak by přes jeden php proces mohlo být 130 spojení které by se tvářilo v oracle jako jedno připojeni ? ted to je tuším tak, že každý proces apache vytvoří připojeni do db, což je špatně

    do db se přihlašuje přes jeden účet v celé aplikaci, spojení se nehromadí, při novém požadavku se v oracle v pořádku vytvoří a si korektně zavřou

    Děkuji Vám za pomoc.
    12.11.2015 11:39 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Hmm, máte pravdu http://php.net/manual/en/oci8.configuration.php#ini.oci8.max-persistent je maximální počet připojení pro jeden PHP proces, tedy 1 je správně.

    Abyste jedním spojením do databáze obsloužil více http požadavků, to bez connection poolingu nebo aplikační mezivrstvy asi neuděláte.

    Celé to nicméně vede k tomu se zamyslit, kolik těch http požadavků vlastně chcete obsloužit - nějaký limit tam stejně bude muset být (limitem zajistíte, že ten systém nepůjde při přetížení do kytek pro vyčerpání ram a překročení dalších limitů operačního systému). Podle plánovaného vytížení je pak potřeba systém navrhnout. Výkon systému nelze přeci garantovat donekonečna.

    Pokud skutečně potřebujete mít 1000 klientů v jeden okamžik tak k tomu musí být navrhnuta odpovídající infrastruktura. Přijde mi to hrozně mnoho - v reálu se provede požadavek za řekněme 100ms-200ms a jakmile skončí, může být spojení znova použito. Takže těch 1000 konexí by odpovídalo 5000-10000 požadavkům za sekundu, což je dost frmol. Váš limit 130 by odpovídal 650-1300 za sekundu. Doporučuju prostě změřit, kolik požadavků to vládne při jakém limitu a jak se to chová. Pro měření lze použít třeba ab nebo pro složitější případy jmeter.
    -- OldFrog
    12.11.2015 12:40 Scendel
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Děkuji za reakci,

    asi to nějak nechápu, nebo mám někde špatně nastavený limity, zrovna ted mam takovýto stav:

    root@ora-web3:/home/petr# netstat -tanpe|grep 1521 | grep ESTABLISHED |wc -l 100

    root@ora-web3:/home/petr# ps -aux|grep apache2 |wc -l 106

    to znamená 100 spojení do db a 106 přes apache, je v tom tedy přibližně stejná úměra, tedy 500 spojeni na apache a 500 spojení do db, což už je pro Oracle hodně, je tam plno dalších spojení z jiných aplikaci

    přijde mi, že to spojení z php se drží déle, než jak píšete v tom příkladu, v php.ini mám oci8.persistent_timeout = 60

    v apachi mám ohledně timeoutu toto:
    Timeout 300
    KeepAlive On
    MaxKeepAliveRequests 300
    KeepAliveTimeout 30
    
    a modul prefork mám nastavený takto:
    
    
    StartServers              3
    MinSpareServers           5
    MaxSpareServers          10
    MaxRequestWorkers        190
    MaxConnectionsPerChild   0
    
    takže jestli tomu dobře rozumím, tak mám možnost jen 190 současných připojení, myslel jsem, že když se pustí 3 servery, že se to bude násobit, tedy 3*190

    takže to vypadá, že nejsem schopný nastavit apache, aby těch spojení do db dělal méně.

    Děkuji za pomoc

    12.11.2015 13:14 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Jenže ono tam prostě to jedno spojení do databáze pro každý běžící php skript (v případě varianty bez persistentního spojení) případně pro každý připravený php proces apache (v případě varianty s persistentním spojením) být musí. Použitá technologie nic jiného neumožňuje.

    Zároveň obecně u každé aplikace platí, že je nutno počet spojení omezit, jinak tomu dojde dech a upadne to. Proto i vy budete muset klienty omezit, tomu se jednoduše nejde vyhnout.

    Takže jde jen o to, na kolik to omezit a kde. A to pak záleží na tom, kolik dalších aplikací tam běží, zda se také připojují do databáze apod. Pokud na serveru běží jen jedna aplikace (= nejjednodužší varianta), pak prostě nastavte MaxClients. Na jakou hodnotu musíte uvážit sám - je to rozhodnutí technické (kolik server a databáze unese) a obchodní (kolika uživatelům jsem to slíbil).

    Jinými slovy: Přestaňte na chvíli koukat do konfiguráku a výpisu procesů a zamyslete se! Nad tím, pro koho ta aplikace je, co má dělat, co se stane, když nepoběží, kdy je špička ve využití, proč to vlastně řešíte. Podívejte se do statistik využití v průběhu dne a týdne. Až budete vědět, jak byste to chtěl nastavit (bez ohledu na to, zda to umíte), proberte to se zodpovědným nadřízeným a pak klidně zde.
    -- OldFrog
    12.11.2015 13:20 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    PS: A můj předchozí výpočet pro 1000 spojení do databáze z tohoto čísla pouze odvodil počet http requestů do aplikace za sekundu (za předpokladu, že bude skript běžet 100-200ms). To jsem počítal proto, abyste měl představu, že 1000 spojení do databáze by představovalo ohromný http provoz. A tedy že ani limit 130 http klientů dost možná reálné uživatele nijak neomezí.
    -- OldFrog
    12.11.2015 13:35 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    PPS: Apache si drží určitý počet procesů nebo vláken (podle použitého workeru) připravených k akci - i když momentálně neprobíhá žádný http požadavek. A v rámci těchto procesů příp. vláken se drží i ta spojení do databáze - tedy pokud jsou persistentní. To je právě princip té perzistence.

    Různé limity na počet procesů, které se vytvoří rovnou po startu apache, na maximální počet procesů atd. pak už jen ovlivňuje, jak se s těmi předpřipravenými procesy nakládá. To je předmětem té konfigurace.
    -- OldFrog
    12.11.2015 13:50 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    A poslední PS: Konfigurace preforku stručně ručně a česky v několika větách například zde http://www.dasm.cz/clanek/apache-a-jeho-multi-processing-moduly#konfigurace-modelu Takže u preforku skutečně nastavit MaxClients na hodnotu, kolik maximálně chcete spojení do databáze. Pokud je tam víc aplikací, které v apache běží, je to problém, protože a musí se to omezení řešit trochu jinak. Třeba pomocí proxy nebo nějakého modulu, z hlavy teď nevím.
    -- OldFrog
    12.11.2015 14:22 Scendel
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Děkuji Vám za odpovědi,

    moc mi to pomohlo, byl jsem totiž obviněn z toho, že apache server je špatně nakonfigurovám a přetěžuje oracle databazi, která pak kolabuje, ale jak jsem pochopil, tak není technicky možné v mém případě počet spojení do db omezit, řešení je DRCP, ale to by znamelo migraci na Oracle 11, nebo zvýšit limit současných db serveru.

    Petr
    12.11.2015 14:36 OldFrog {Ondra Nemecek} | skóre: 28 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Jako řešení můžete nabídnout omezení na počet klientů (MaxClients), které se ovšem uplatní v rámci celého Apache. Za nastavení limitů do databáze a nekolabování databáze ručí správce databáze, nikoli správce http serveru. Vy zodpovídáte, že nekolabuje http server.

    Vaší správnou reakcí je vyvolat debatu o tom, kolik uživatelů má ta aplikace obsloužit a pak to tak nastavit. Tím může hodnocení vaší kompetence akorát stoupnout :-) DRCP by situaci sice řešit mohl, ale to záleží na důvodech, proč Oracle padá a dalších podrobnostech.

    Jinak jsem rád pomohl. Hodně zdaru.
    -- OldFrog
    12.11.2015 15:12 Ivan
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Dulezite je vedet pod jakym uzivatelem se aplikace hlasi do databaze. Jestli je to genericky aplikacni user anebo ma kazdy uzivatel svoje jmeno/heslo v DB. Pokud mate 190 Workeru a 10 uzivatelu (v DB) tak muzete skoncit az s 1900 otevrenymi konexemi.

    Z pohledu databaze je problem, ze limit na pocet konexi se neda zvysit bez restartu. Vyzira to zbytecne pamet na strane DB serveru. Dalsi uzivatele se nemohou prihlasit do DB z jinych aplikaci, protoze nejsou volne konexe. A navic nejsis nefunguje ani monitoring, protoze ani ten se nemuze prihlasit.

    Architektura PHP aplikaci v tomhle pripade dost zoufala. Persistentni spojeni do db, bud skutecne drzi TCP konexi do DB, anebo si PHP zapise login a haslo do nejakeho soubory v /tmp a kdyz tu session promennou pouzijete, tak to spojeni napozadi samo vytvori.

    Pokud jde o ten timeout, ten se muze uplatnit jen v pripade ze ten worker process nekdo "probudi" spravnym zpusobem. Kdyz worker pracuje, tak nejak jak ten timout zkontrolovat. Neverim, ze by to bylo udelane vice-vlaknove, a ze by nejaky thread tohle kontroloval na pozadi.

    Dalsi moznosti jak to omezit je snizit MaxRequestPerChild. Pokud worker umre po (skoro) kazdem kliknuti, tak zadne zbytecne db konexe drzet nebude.

    12.11.2015 16:28 Scendel
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    aplikace se hlásí do db pod jedním účtem, když budu reagovat na předchozí příspěvek, tak Oracle právě kolabuje, že mu dochází počet volných připojení, ty jsou vázaný na operační paměť, když dojdou, tak se aplikace nedá používat, dlouhé odezvy, timeouty, apod. přitom web servery o které se starám jsou skoro nevytížené ...

    zkusím to sepsat jak jste mi všichni radili, mám aspoň nějaké argumenty, pro svojí obhajobu ...:)

    Petr
    12.11.2015 18:30 Arnošt Málek | skóre: 17
    Rozbalit Rozbalit vše Re: Apache+PHP+Oracle
    Já jsem persistentní spojení úpně vypnul a nepoužívám jej. Měl jsem s ním problémy. Dopad na výkonost jsme nezaznamenal.

    Založit nové vláknoNahoru

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

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