Uainiú psql thar VPN: an fheitheamh líonra a scaradh ó obair na gceist
Tuairiscíonn psql uimhir am-chaite amháin in aghaidh an ráitis, mar sin cuireann VPN mall leis. Scair an t-am ceangail, feidhmithe, aistrithe agus dul agus teacht sula ndéanann tú ceachtar taobh a fhíniú.
Críochnaíonn do thuarascáil i dtimpeall soicind ar óstach an bhunachair shonraí agus i gceithre cinn thar an VPN, agus díríonn an uimhir a phriontálann psql go díreach ar an mbunachar sonraí. Stopadán ar thaobh an chliaint is ea an uimhir sin, ní tomhas freastalaí. Clúdaíonn sé an ráiteas ar a bhealach amach, an fheitheamh le freagra agus na sraitheanna ar a mbealach ar ais. Is é scaradh na dtrí rud sin an t-aon bhealach le fios a bheith agat cén taobh le fíniú.
Cad a thomhaiseann lasc ama psql i ndáiríre
\timing on cuireann sé stopadán ar siúl díreach sula scríobhann an cliant an ráiteas chuig an soicéad agus stopann sé nuair a bhíonn an tsraith dheireanach den toradh sin léite. Tá feidhmiú an fhreastalaí féin in áit éigin laistigh den fhuinneog sin, agus mar sin tá gach milleasoicind a chaitheann na paicéid sa tollán. Ní dhéanann aon rud san aschur iad a scaradh. Priontálann EXPLAIN uimhir freisin, ach is é an freastalaí a tháirgeann í agus fágfaidh sé fheitheamh an chliaint as an áireamh. Dhá uimhir, dhá cheist éagsúla.
Tosaigh seisiún amháin, fág an t-amadóireacht ar siúl, agus rith an ráiteas a bhfuil suim agat ann óna thaobh istigh. Coinníonn athúsáid seisiúin costas an cheangail amach as an gcéad tomhas.
psql "host=db.internal port=5432 dbname=appdb user=app" \
-c "\timing on" \
-c "select count(*) from orders where created_at > now() - interval '1 day';"Áiríonn an figiúr aistriú an toraidh fós, agus is é sin a theastaíonn uait anseo. Ní áiríonn sé a thuilleadh an mhalartán ceangail agus fíordheimhnithe a chuirfeadh gairm nua leis.
Déan comparáid idir ráiteas amháin thar thrí chonair
Rith an ráiteas céanna thar an soicéad Unix, thar sheoladh LAN agus thar ainm óstach VPN, agus déan comparáid idir an triúr. Más é an ceann deireanach amháin atá mall, ní hé an cheist an athróg.
Ceanglaíonn gach gairm ar dtús agus ní thomhaiseann sé an ráiteas ach ina dhiaidh sin, mar sin fanann costas an cheangail lasmuigh den uimhir agus fanann an t-aistriú istigh. Coinnigh an chlásal WHERE, líon na sraitheanna agus an meaisín cliaint mar an gcéanna, nó tá ualaí oibre á gcomparáid agat seachas conairí.
psql -h /var/run/postgresql -U app -d appdb -c "\timing on" -c "select count(*) from orders;"
psql -h 10.40.0.12 -U app -d appdb -c "\timing on" -c "select count(*) from orders;"
psql -h db.vpn.internal -U app -d appdb -c "\timing on" -c "select count(*) from orders;"Ar LAN bíonn an difríocht de ghnáth beag go leor le neamhshuim a dhéanamh di; thar VPN is minic nach mbíonn. Insíonn sórtáil an triúr toradh duit ansin cén fheitheamh le ionsaí.
Ciallaíonn soicéad áitiúil mall obair fhreastalaí nó pleanáil. Ciallaíonn toradh LAN mall an cheist nó an toirt a aistríonn sé. Ní chiallaíonn ach toradh VPN mall moill, MTU nó bandaleithead atá ar fáil ar an gconair, agus ní cheartaíonn aon athrú innéacs é sin.
Tarraing am feidhmithe an fhreastalaí féin amach
Is féidir leis an bhfreastalaí a thuairisciú cé mhéad ama a chaith sé, agus is í an uimhir sin an ceann le cur i gcoinne uimhir an chliaint. Ritheann EXPLAIN le ANALYZE an ráiteas agus priontálann sé am pleanála agus feidhmithe laistigh den phlean, agus cuireann BUFFERS iompar taisce leis a mhíníonn go minic rith te i gcoinne rith fuar. Ná dírightear é ar ráitis scríofa mura bhfuil sé ar intinn agat scríobh. Ar mhacasamhail inléite amháin is é an áit is sábháilte le tosú, agus an tagairt psql déanann sí scóip an lasc ama ar thaobh an chliaint a dhoiciméadú.
Do ráitis a ritheann an feidhmchlár cheana féin, comhbhailíonn pg_stat_statements feidhmiú ar thaobh an fhreastalaí gan aon rud a athrith. Tá na sraitheanna de réir ceiste normalaithe, mar sin is féidir le hiontráil amháin roinnt láithreacha glaonna a chlúdach.
select calls, round(mean_exec_time::numeric, 2) as mean_ms, rows
from pg_stat_statements
order by mean_exec_time desc
limit 5;Athraíonn ainmneacha colún de réir eisiúna: nochtann PostgreSQL 13 agus níos déanaí mean_exec_time, agus tugann leaganacha níos sine mean_time air, mar sin seiceáil le \d pg_stat_statements má thugann an cheist sin earráid. Fágann na luachanna seo pleanáil as agus fágann siad an turas chuig do chliant as. Is é an t-eisiamh sin go beacht an fáth a bhfuil siad úsáideach don chomparáid.
Líon na dturas anonn is anall, ní na milleasoicindí amháin
Méadaíonn tuarascáil a tógadh as dhá chéad ráiteas beaga spleácha aon mhoill a chuireann an chonair léi faoi dhá chéad. Íocann ráiteas amháin a thugann milliún sraith an mhoill sin uair amháin agus ansin íocann sé bandaleithead go fada. Breathnaíonn an dá rud mar an gcéanna i lasc ama cliaint, agus tá ceartúcháin chontrártha de dhíth orthu.
Tomhais líon na ráiteas seachas é a mheas. Léigh an t-iomlán, rith an tuarascáil uair amháin, léigh arís é agus dealaigh.
select sum(calls) as calls from pg_stat_statements;
-- run the report here
select sum(calls) as calls from pg_stat_statements;Má tá an deilt mór agus gach ráiteas saor ar an bhfreastalaí, is é an bhaiscíocht an ceartúchán a íocann. Cuir ceisteanna spleácha le chéile, úsáid ráiteas amháin bunaithe ar thacair, nó tiomáin an lúb ó chúrsóir. I psql idirghníomhach, \set FETCH_COUNT 1000 cuireann sé ar chumas toradh mór teacht i mbaisceanna agus athraíonn sé mar a iompraíonn an t-aistriú agus cuimhne an chliaint. Ní laghdaíonn sé obair an fhreastalaí, mar sin ní shábhálfaidh sé ceist mhall.
Seiceáil an tollán le haghaidh athsheoltaí agus stopadh MTU
Nuair a bhíonn ráitis bheaga tapa agus toradh móra ag stopadh leathbhealaigh, bíonn an cheist go maith de ghnáth agus an chonair nach mbíonn. Táirgeann tollán a bhfuil a MTU níos ísle ná an nasc bunúsach, in éineacht le ICMP blocáilte, an patrún sin go beacht: tagann na chéad phaicéid, imíonn na cinn mhóra, agus crochann an t-aistriú go dtí go ndéanann sé iarracht arís. Taispeánann cuntair athsheolta ar thaobh an chliaint é.
Breathnaigh ar an soicéad agus ar chuntair an eithne agus aistriú mall d'aon ghnó ar siúl. Tá suimeanna athsheolta carnach, mar sin nótaigh iad roimh agus ina dhiaidh seachas sampla amháin a léamh.
ss -tin dst 10.40.0.12
netstat -s | grep -iE "retransmit|segments retransmitted"
ping -M do -s 1400 -c 3 10.40.0.12Na hathsheoltaí a ardaíonn le linn an aistrithe, in éineacht le ping a n-éiríonn leis ag 1400 beart ach a theipeann ag 1472, tugann siad le fios gur fadhb MTU atá ann seachas fadhb bhunachair shonraí. Is é MTU chomhéadan an tolláin a ísliú nó MSS a chlampáil ag an ngeata an ceartúchán is gnáth, agus deimhníonn na trí ordú céanna é ina dhiaidh sin. Má fhanann na hathsheoltaí cothrom agus an t-aistriú fós mall, féach ar an mbandaleithead a cheadaítear don tollán seachas ar chaillteanas.
Clúdaíonn seicheamh gearr an chéad tuarascáil mhall eile: déan comparáid idir ráiteas amháin go háitiúil, ar an LAN agus thar an VPN; léigh feidhmiú an fhreastalaí ó EXPLAIN nó pg_stat_statements; líon na nglaonna roimh rith amháin agus ina dhiaidh; agus breathnaigh ar athsheoltaí agus an toradh mór ag gluaiseacht. Eisíonn gach céim taobh amháin den chonair. Ní éilíonn aon cheann acu buille faoi thuairim a thabhairt faoin gcomhpháirt le hath-thosú.