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:24 | Nová verze

Opera 46, verze 46.0.2597.26, byla prohlášena za stabilní. Nejnovější verze tohoto webového prohlížeče je postavena na Chromiu 59. Z novinek lze zmínit například podporu APNG (Animated Portable Network Graphics). Přehled novinek pro vývojáře na blogu Dev.Opera. Oznámení o vydání zmiňuje také první televizní reklamu.

Ladislav Hagara | Komentářů: 0
dnes 13:37 | IT novinky

I čtenáři AbcLinuxu před dvěma lety vyplňovali dotazníky věnované Retro ThinkPadu. Nyní bylo potvrzeno, že iniciativa Retro ThinkPad je stále naživu a Lenovo připravuje speciální edici ThinkPadu jako součást oslav jeho 25. výročí.

Ladislav Hagara | Komentářů: 7
dnes 10:22 | Komunita

Bylo oznámeno, že frontend a runtime programovacího jazyka D bude začleněn do kolekce kompilátorů GCC (GNU Compiler Collection). Správcem byl ustanoven Iain Buclaw.

Ladislav Hagara | Komentářů: 4
včera 18:47 | IT novinky
Bulharská firma Olimex je známá jako výrobce kvalitních mini arm desek, u nichž se snaží být maximálně open source. Kromě velké otevřenosti taktéž zaručují dlouhodobou podporu výroby, což je vítáno ve firemním prostředí. Nyní firma ohlásila ESP32-GATEWAY, malou IoT desku s Wifi, Bluetooth, Ethernetem a 20 GPIO porty za 22EUR. Tato malá deska je ořezanou verzí ESP32-EVB.
Max | Komentářů: 18
včera 18:00 | Zajímavý článek

LinuxGizmos (v dubnu loňského roku přejmenován na HackerBoards a v lednu letošního roku zpět na LinuxGizmos) zveřejnil výsledky čtenářské ankety o nejoblíbenější jednodeskový počítač (SBC) v roce 2017. Letos se vybíralo z 98 jednodeskových počítačů (Tabulky Google). Nejoblíbenějšími jednodeskovými počítači v letošním roce jsou Raspberry Pi 3 Model B, Raspberry Pi Zero W a Raspberry Pi 2 Model B.

Ladislav Hagara | Komentářů: 0
včera 14:22 | Pozvánky

Ne-konference jOpenSpace 2017 se koná od 13. do 15. října 2017 v hotelu Farma u Pelhřimova. Registrace účastníků je nutná. Více informací na stránkách ne-konference.

Zdenek H. | Komentářů: 0
včera 14:11 | Nová verze

Vyšla nová verze 1.2 audio kodeku Opus, která přináší mnoho drobných optimalizací a tím i celkové vylepšení poměru bitrate/kvalita. Fullband (do 20 kHz) stereo hudba je možná již od 32 kbit/s, fullband mono řeč již od 14 kbit/s. Více informací sepsal vývojář Opusu J. M. Valin formou již tradiční demo stránky.

Petr Tomášek | Komentářů: 19
včera 14:00 | Zajímavý článek

Na MojeFedora.cz byl zveřejněn překlad příspěvku na blogu Christiana Schallera, vedoucího desktopového týmu v Red Hatu, v němž se zabývá novinkami ve Fedoře Workstation 26 a následujících vydáních. Například již ve Fedoře 27 by se měl objevit jednotný server pro audio a video v Linuxu PipeWire. Ten byl představen před dvěma lety. Tenkrát ještě pod názvem Pinos (PulseVideo).

Ladislav Hagara | Komentářů: 0
včera 05:55 | Bezpečnostní upozornění

V KMailu byla nalezena a opravena bezpečnostní chyba CVE-2017-9604 týkající se uživatelů, již své maily podepisují a šifrují pomocí OpenPGP. Pokud uživatel KMailu při odesílání mailu zvolil možnost Odeslat později, tak byl mail odeslán nepodepsaný a v otevřeném tvaru.

Ladislav Hagara | Komentářů: 15
včera 04:44 | Pozvánky

Mozilla.cz zve na Mozilla meetupy v Brně a Praze. Brněnské setkání proběhne vůbec poprvé, a to tento pátek 23. 6. v Beer & Grill U Dřeváka. To pražské bude příští čtvrtek 29. 6. v Diversion Bistru.

Ladislav Hagara | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (6%)
 (31%)
 (1%)
 (9%)
 (44%)
 (9%)
Celkem 819 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    Rozcestník

    Dotaz: Apache+PHP+Oracle

    12.11.2015 08:26 Scendel
    Apache+PHP+Oracle
    Přečteno: 323×
    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: 26 | 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: 26 | 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: 26 | 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: 26 | 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: 26 | 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: 26 | 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: 26 | 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: 26 | 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.