PostgreSQL

Kā nogalināt dīkstāves savienojumus PostgreSQL

Kā nogalināt dīkstāves savienojumus PostgreSQL

Pirmais solis izmaiņu veikšanā vai informācijas nolasīšanā no PostgreSQL datu bankas ir savienojumu izveidošana. No otras puses, katra saite radīja papildu izmaksas, izmantojot procedūru un krātuvi. Tāpēc ierīce ar minimāliem resursiem (lasīšana, glabāšana, aparatūra) var atbalstīt ierobežoto savienojumu kopumu. Kad ierobežotais kopums ir tālu pārsniedzis punktu, tam jāturpina mest kļūdas vai liegt savienojumus. PostgreSQL ietvaros.conf, PostgreSQL veic pienācīgu darbu, ierobežojot saites. Šajā apmācībā aplūkosim dažādas stāvokļu formas, kādas var būt PostgreSQL saitēm. Mēs parādīsim, kā noteikt, vai saite ir aktīva vai ilgstoši neaktīva, un tādā gadījumā to var atvienot, lai atbrīvotu saites un resursus.

Savienojuma izveide ar serveri:

Sākumā pārliecinieties, vai datorā pgAdmin4 ir pilnībā darbojies. Atveriet to no lietojumprogrammām. Jums tas ir jāsaista ar localhost, norādot paroli.

Pēc savienojuma ar root localhost savienojiet to ar PostgreSQL serveri. Ievadiet paroli PostgreSQL 13 lietotāja Postgres, lai izveidotu savienojumu. Lai turpinātu, pieskarieties pogai Labi.

Tagad esat izveidojis savienojumu ar serveri PostgreSQL 13. Jūs varat redzēt serverī esošo datubāzu sarakstu, kā parādīts zemāk pievienotajā attēlā. Postgres datu bāze ir noklusējuma datu bāze, kas izveidota PostgreSQL instalēšanas laikā, savukārt testēšanas datu bāzi ir izveidojis lietotājs pēc instalēšanas.

Savienojuma stāvokļi:

Ja tiek izveidota PostgreSQL saite, tā var veikt dažādas darbības, kuru rezultātā notiek stāvokļa pāreja. Būtu jāpieņem racionāls lēmums par to, vai saite darbojas, vai tā ir palikusi dīkstāvē / neizmantota atkarībā no stāvokļa un ilguma, kāds tas ir bijis katrā valstī. Ir svarīgi atzīmēt, ka līdz lietojumprogramma apzināti aizver savienojumu, tā turpinās darboties, tērējot resursus ilgi pēc klienta atvienošanas. Savienojumam ir 4 potenciālie stāvokļi:

Nosakiet savienojuma stāvokļus:

PostgreSQL katalogu tabulās ir iebūvēts skats “pg_stat_activity”, lai pārbaudītu statistiku par to, ko dara saite vai cik ilgi tas ir bijis šajā stāvoklī. Lai pārbaudītu visu statistiku par katru datu bāzi un katru savienojuma stāvokli, atveriet vaicājuma rīku un izpildiet zemāk esošo vaicājumu:

>> SELECT * NO pg_stat_activity;

Vaicājums ir veiksmīgi ieviests, un ir parādīta piezīme par paveikto.

Pārbaudot tā datu izvades pusi, jūs atradīsit tabulu ar vairākām kolonnām, kā parādīts zemāk. Savienojumu stāvokļus var pārbaudīt, pārbaudot lauka “state” vērtības.

Lai vienkāršotu izvadi un būtu skaidrs priekšstats par savienojumiem, to stāvokļiem, lietotājiem un serveriem šajos stāvokļos, vaicājuma rīkā ir jāizpilda zemāk modificētais vaicājums. Šis vaicājums parāda tikai 5 savienojumu ierakstu laukus un konkrētus datus par tiem. Kolonna 'pid' nozīmē procesa id. Kolonna “stāvoklis” satur procesu stāvokļus. Kolonna “lietotājvārds” identificē lietotāju, kurš ir strādājis pie konkrētā procesa. Kolonnā “datname” ir norādīts datu bāzes nosaukums, ar kuru tiek izpildīts darījums. Kolonna “datid” apzīmē datubāzes ID.

>> SELECT pid, state, usename datname, datid, no pg_stat_activity;

Rezultātā kopā ir reģistrēti 8 procesi. Kolonna “stāvoklis” parāda, ka pašlaik darbojas tikai 3 procesi. Vienu tur pēc noklusējuma datu bāze Postgres, bet pārējos divus tur datu bāze “tests”. Tajā pašā laikā Postgres lietotājs ir veicis šos procesus.

Identificējiet dīkstāves savienojumus:

Šķiet, ka “stāvoklis” ir vienīgā vērtība, ko meklējam iepriekš minēto rezultātu ietvaros. Mēs izmantosim šo informāciju, lai noteiktu, kuri procesi vai vaicājumi ir kādā stāvoklī, un pēc tam iegremdēsimies dziļāk. Mēs varam samazināt meklēto informāciju, precizējot vaicājumu, ļaujot mums sagatavoties iejaukšanās procesam saistībā ar šo konkrēto savienojumu. Mēs to varētu izdarīt, izvēloties tikai dīkstāves PID, izmantojot klauzulu WHERE un šo PID stāvokļus. Mums arī jāseko līdzi tam, cik ilgi saite ir bijusi neaktīva, un jānodrošina, lai mums nebūtu nevienas novārtā atstātas saites, kas izšķiež resursus. Rezultātā mēs izmantosim tālāk pārveidoto komandu, lai parādītu tikai ierakstus, kas attiecas uz tiem procesiem, kuri pašlaik ir dīkstāvē:

>> SELECT pid, usename, usesysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'idle';

Izmantojot vaicājumu WHERE, vaicājuma laikā tika iegūti tikai 2 datu ieraksti, kuru stāvoklis bija “dīkstāvē”. Rezultātā tiek parādīti 2 dīkstāves procesi ar noteiktu informāciju par tiem.

Nogalināt dīkstāves savienojumu:

Pēc dīkstāves savienojumu noteikšanas ir pienācis laiks tos nogalināt. Kad process ir apturēts vai nu aizturēts, vai neaktīvs daudz ilgāk, mēs varētu izmantot vienkāršo komandu, lai viegli pārtrauktu aizmugures mehānismu, netraucējot servera darbības. Mums ir jānorāda process 'id' vaicājumā ar terminate funkciju.

>> SELECT pg_terminate_backend (7408);

Process ir lieliski nogalināts.

Tagad pārbaudiet atlikušos dīkstāves savienojumus no pievienotā vaicājuma.

>> SELECT datid, lietotājvārds, datname, pid, stāvoklis FROM pg_stat_activity WHERE state = 'idle';

Rezultātā tiek parādīts tikai 1 atlikušais process, kas ir dīkstāvē.

Secinājums:

Nepalaidiet garām nevienu soli, lai efektīvi iznīcinātu neaktīvos savienojumus no PostgreSQL datu bāzes.

Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...
Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...
Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...