Sziasztok,
Postgresql -hez kapcsolódok php-ból perzisztens formában, apachos linuxos szerveren. A gondom a következő, pillanatok alatt felzabálja az összes rendelkezésre álló szálat, 150 -re van állítva a leköthető folyamat, úgyhogy azért egy darabig elég kellene neki lennie, de 1 user esetén is szinte minden csatlakozásnál újakat hoz létre, a régebbieket pedig nem zárja napok multán sem.
Találkozott valaki hasonlóval?
- 1441 megtekintés
Hozzászólások
Szerintem te nem perzisztens kapcsolatot akarsz használni, ha egy userrel is állandóan újra csatlakozol. Phpból meg aztán főleg nem.
- A hozzászóláshoz be kell jelentkezni
nem egészen egy juzerrel szeretném használni, de ha már néhánytól is lehal, akkor nem várható más terhelés alatt sem. Miért php-ból nem használhat valaki perzisztens kapcsolatot?
- A hozzászóláshoz be kell jelentkezni
Dehogynem. Csak ritkán van értelme, meg macerás.
Mit akarsz csinálni?
- A hozzászóláshoz be kell jelentkezni
tartalomkezelőt, idáig megvoltam egész jól sima connectel is, de annyit olvastam róla hogy így sokkal gyorsabb lenne az adatbázishasználat, mivel nem építget ki új kapcsolatot csak megkeresgéli az előző szabad szálat. A legtöbb helyen azt írják, normális hogy így lezabálja a kapcsolatokat, csak azt nem értem milyen konfig kellene hozzá hogy elbírjon egy nagyobb szájtot.
http://bugs.php.net/bug.php?id=20237&edit=1
lehet marad a connect...
- A hozzászóláshoz be kell jelentkezni
Nem config kell hozzá, hanem az a baj, hogy minden alkalommal új perzisztens kapcsolatot nyitsz, aminek nem sok értelme van, és teljesítménynövekedést sem eredményez:)
Magyarul: nem kell új kapcsolatot létrehoznod, hanem minden pg-s php függvény paraméterében hivatkoznod kell a kapcsolat azonosítójában a már meglévőre. És gondolnod kell az elszállt kapcsolatok kezelésére is.
Egyébként az alapeseteket feltételezve nem lesz valódi sebességnövekedés....
- A hozzászóláshoz be kell jelentkezni
én ugyan nem akarok minden alkalommal új kapcsolatot nyitni, a pg_pconnectnek automatikusan kellene ezt lekezelnie, hogy megkeresi a szabadon lévő kapcsolatot és azt használja, te használsz PHP -t vagy valami másból prog nyelvből merítesz hogy ilyeneket írsz?
- A hozzászóláshoz be kell jelentkezni
Csak futólag, ritkán használok php-t, viszont nem a vágyaim alapján képzelem el, hogy mükődik.
Nem keresi meg magától a szabadon lévő kapcsolatot. Hogyan is kereshetné meg, honnan tudhatná, hogy te a régit akarod használni, vagy egy újat nyitni? Hogyan lehetne ezt automatikusan lekezelni?
Ha !_egyszer_! megnyitottad, akkor utána a pg-s függvényeiddel közölni kell, hogy azt a kapcsolatot használják. Egyébként egyszerre akár többet is használhatsz.
Pl:
$connnumb = pg_pconnect("dbname=akarmi port=5432"); //nem kell minden script futásakor megnyitni
...
...
pg_query ( $connnumb, "sql query" )
Ezt a manual is jól leírja.
- A hozzászóláshoz be kell jelentkezni
pedig pont errol szolna.
php.net
"Az állandó kapcsolatok olyan összeköttetések, melyek nem szűnnek meg, ha a szkripted futása befejeződik. Ha egy állandó kapcsolatot kérsz, a PHP ellenőrzi, hogy van-e már megegyező kapcsolat (ami még az előző kérésekből maradhatott meg), és ha létezik, akkor azt használja. Ha nem talál ilyet, létrehoz egy kapcsolatot. A megegyező kapcsolat azt jelenti, hogy ugyanaz a host és ugyanaz a felhasználói név és jelszó került felhasználásra."
Tyrael
- A hozzászóláshoz be kell jelentkezni
igen én is így értelmeztem, hogy pont ez a lényege...
- A hozzászóláshoz be kell jelentkezni
es igazad is van, pont ez a lenyege.
Tyrael
- A hozzászóláshoz be kell jelentkezni
Nincs szándékomban azzal kapcsolatban kérdezni, hogy mi értelme van a 128. php-s tartalomkezelőt megírni, amikor pl. ott van a drupal :)
Viszont a "connection pool" gondolom létezik PHP-ban is. Szerintem kb. rosszul használod a connection pool-t, nem zárod le a kapcsolatot.
Infóképpen egy kb. 200 párhuzamos user által hsznált java-s portál elmegy nagy átlagban 5 kapcsolattal, néha ha nagyon egyszerre csinálnak nagyon bonyolult dolgokat, akkor felmegy 30-ra. Szóval nem kell hozzá irgalmatlan nagy vas.
--
Gabriel Akos
- A hozzászóláshoz be kell jelentkezni
pconnectnel nem kell (nem is lehet) lezarni kapcsolatot.
konfigban lehet beallitani, hogy hany kapcsolat lehet egy idoben maximum, hogyha eleri a maximumot, akkor egy nem aktiv kapcsolatot bezarodik.
Tyrael
- A hozzászóláshoz be kell jelentkezni
csucsszuper architektura.
es mi van, ha nem eleg a "maximum"?
--
Gabriel Akos
- A hozzászóláshoz be kell jelentkezni
hibauzenet.
gondolom mashol sem lehet veges szamu nem megoszthato kapcsolatot vegtelen sokfele osztani. :/
Tyrael
- A hozzászóláshoz be kell jelentkezni
nem olyan biztos. ha pl. van egy pool-om mondjuk 30 connection-nel, akkor a 200 egyszerre beeso user kozul nem csak az elso 30-at tudom kiszolgalni hibauzenet nelkul, hanem - mivel a poolom tud varni "egy kicsit" (beallithato) - ezert a tobbit is ki tudom szolgalni, max varnak kicsit. Extra kodolas nelkul. Tudod, enterprise, skalazhatosag :)
--
Gabriel Akos
- A hozzászóláshoz be kell jelentkezni
Nem vagyok nagy guru. Én csak egy kapcsolatot használtam mindig. Semmi lassúlást nem éreztem. Hogy mükszik? Hogy csináltad meg?
- A hozzászóláshoz be kell jelentkezni
Konnyen beszelek, nem hasznalok PHP-t :)
Javaban, alkalmazasszerverrel meg "beepitve" megkapod ezt a feature-t.
--
Gabriel Akos
- A hozzászóláshoz be kell jelentkezni
Szerintem, ha egy user kezelést kell megoldani egy oldalon belül, arra 1 postgres kapcsolat kell. Nekem a pnconnect minden egyes meghívása ugyanazt a kapcsolatot találta meg -legalábbis mivel eszeveszett lassúlás nme volt, ezért nme is nyomoztam utána. Szóval lehet, hogy valami nem jó a pconnecteddel. Hanyas php-d van?
Reméljük valami veterán is ír, hogy megcáfoljon :)
- A hozzászóláshoz be kell jelentkezni