26.1. СÑандаÑÑнÑе инÑÑÑÑменÑÑ Unix #
РболÑÑинÑÑве Unix-плаÑÑоÑм Postgres Pro модиÑиÑиÑÑÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº командÑ, коÑоÑÑй вÑводиÑÑÑ Ð½Ð° ÑкÑан пÑи вÑполнении ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ps, Ñак ÑÑо ÑеÑвеÑнÑе пÑоÑеÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ легко ÑазлиÑиÑÑ. ÐÑÐ¸Ð¼ÐµÑ Ð²Ñвода ÑÑой командÑ:
$ ps auxww | grep ^postgres postgres 15551 0.0 0.1 57536 7132 pts/0 S 18:02 0:00 postgres -i postgres 15554 0.0 0.0 57536 1184 ? Ss 18:02 0:00 postgres: background writer postgres 15555 0.0 0.0 57536 916 ? Ss 18:02 0:00 postgres: checkpointer postgres 15556 0.0 0.0 57536 916 ? Ss 18:02 0:00 postgres: walwriter postgres 15557 0.0 0.0 58504 2244 ? Ss 18:02 0:00 postgres: autovacuum launcher postgres 15582 0.0 0.0 58772 3080 ? Ss 18:04 0:00 postgres: joe runbug 127.0.0.1 idle postgres 15606 0.0 0.0 58772 3052 ? Ss 18:07 0:00 postgres: tgl regression [local] SELECT waiting postgres 15610 0.0 0.0 58772 3056 ? Ss 18:07 0:00 postgres: tgl regression [local] idle in transaction
(ФоÑÐ¼Ð°Ñ Ð²Ñзова ps, а Ñакже деÑали оÑобÑажаемой инÑоÑмаÑии завиÑÑÑ Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑмÑ. ÐÑо пÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ из поÑледниÑ
Linux-ÑиÑÑем.) ÐеÑвÑм здеÑÑ Ð¾ÑобÑажаеÑÑÑ Ð³Ð»Ð°Ð²Ð½Ñй пÑоÑеÑÑ ÑеÑвеÑа. ÐÐ»Ñ ÑÑого пÑоÑеÑÑа оÑобÑÐ°Ð¶ÐµÐ½Ñ Ð°ÑгÑменÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, коÑоÑÑе иÑполÑзовалиÑÑ Ð¿Ñи его запÑÑке. СледÑÑÑие ÑеÑÑÑе пÑоÑеÑÑа â ÑÑо ÑоновÑе ÑабоÑие пÑоÑеÑÑÑ, коÑоÑÑе бÑли авÑомаÑиÑеÑки запÑÑÐµÐ½Ñ Ð¿ÑоÑеÑÑом ÑеÑвеÑа. (Фонового пÑоÑеÑÑа «autovacuum launcher» в ÑÑом ÑпиÑке не бÑдеÑ, еÑли авÑооÑиÑÑка оÑклÑÑена в ÑиÑÑеме.) Ðо вÑеÑ
оÑÑалÑнÑÑ
ÑÑÑокаÑ
пеÑеÑиÑÐ»ÐµÐ½Ñ ÑеÑвеÑнÑе пÑоÑеÑÑÑ, каждÑй из коÑоÑÑÑ
обÑлÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾Ð´Ð½Ð¾ клиенÑÑкое подклÑÑение. ÐÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÑÑÑока каждого Ñакого пÑоÑеÑÑа Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий ÑоÑмаÑ:
postgres:полÑзоваÑелÑбаза_даннÑÑкомпÑÑÑеÑакÑивноÑÑÑ
ÐолÑзоваÑелÑ, СУÐРи компÑÑÑÐµÑ (клиенÑа) оÑÑаÑÑÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ñми на пÑоÑÑжении вÑего клиенÑÑкого подклÑÑениÑ, а индикаÑÐ¾Ñ Ð´ÐµÑÑелÑноÑÑи менÑеÑÑÑ. ÐозможнÑе Ð²Ð¸Ð´Ñ Ð´ÐµÑÑелÑноÑÑи: idle (Ñ. е. ожидание ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÐºÐ»Ð¸ÐµÐ½Ñа), idle in transaction (ожидание клиенÑа внÑÑÑи блока BEGIN) или название Ñипа командÑ, напÑимеÑ, SELECT. ÐÑоме Ñого, еÑли в наÑÑоÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑеÑвеÑнÑй пÑоÑеÑÑ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð²ÑÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовки, коÑоÑÑÑ Ð´ÐµÑÐ¶Ð¸Ñ Ð´ÑÑгой ÑеанÑ, Ñо к Ð²Ð¸Ð´Ñ Ð´ÐµÑÑелÑноÑÑи добавлÑеÑÑÑ waiting. РпÑиведÑнном вÑÑе пÑимеÑе Ð¼Ñ Ð²Ð¸Ð´Ð¸Ð¼, ÑÑо пÑоÑеÑÑ 15606 ожидаеÑ, когда пÑоÑеÑÑ 15610 завеÑÑÐ¸Ñ ÑÐ²Ð¾Ñ ÑÑанзакÑÐ¸Ñ Ð¸, ÑледоваÑелÑно, оÑÐ²Ð¾Ð±Ð¾Ð´Ð¸Ñ ÐºÐ°ÐºÑÑ-Ñо блокиÑовкÑ. (ÐÑоÑеÑÑ 15610 ÑвлÑеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑÑÑим, поÑколÑÐºÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
дÑÑгиÑ
акÑивнÑÑ
ÑеанÑов неÑ. Рболее ÑложнÑÑ
ÑлÑÑаÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾Ð±ÑаÑение к ÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ pg_locks, Ð´Ð»Ñ Ñого ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, кÑо кого блокиÑÑеÑ.)
ÐÑли ÑÑÑановлено знаÑение cluster_name, Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑеÑа Ñакже бÑÐ´ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑÑÑ Ð² вÑводе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ps:
$ psql -c 'SHOW cluster_name' cluster_name -------------- server1 (1 row) $ ps aux|grep server1 postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: server1: background writer ...
ÐÑли паÑамеÑÑ update_process_title бÑл оÑклÑÑÑн, Ñо индикаÑÐ¾Ñ Ð´ÐµÑÑелÑноÑÑи не обновлÑеÑÑÑ; название пÑоÑеÑÑа ÑÑÑанавливаеÑÑÑ ÑолÑко один Ñаз пÑи запÑÑке нового пÑоÑеÑÑа. Ðа некоÑоÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ ÑÑо позволÑÐµÑ Ð·Ð½Ð°ÑиÑелÑно ÑокÑаÑиÑÑ Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñе ÑаÑÑ Ð¾Ð´Ñ Ð¿Ñи вÑполнении командÑ; на дÑÑÐ³Ð¸Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ ÑÑÐ¾Ñ Ð²ÑигÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ·Ð½Ð°ÑиÑелен.
ÐодÑказка
Ð Solaris ÑÑебÑеÑÑÑ Ð¾ÑобÑй подÑ
од. СледÑÐµÑ Ð¸ÑполÑзоваÑÑ /usr/ucb/ps вмеÑÑо /bin/ps. Также ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð²Ð° Ñлага w, а не один. ÐÑоме Ñого, пÑи вÑводе ÑÑаÑÑÑов команд Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ps ÑÑаÑÑÑ Ð´Ð»Ñ Ð¸ÑÑ
одной ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ postgres должен оÑобÑажаÑÑÑÑ Ð² ÑокÑаÑÑнном ÑоÑмаÑе Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑеÑвеÑного пÑоÑеÑÑа. ÐÑли Ð²Ñ Ð½Ðµ ÑделаеÑе вÑе ÑÑи веÑи, Ñо вÑвод ps Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑеÑвеÑного пÑоÑеÑÑа бÑÐ´ÐµÑ Ð¸ÑÑ
одной командной ÑÑÑокой postgres.