2021年08月

"cmd": ["dnf", "config-manager", "--set-enabled", "PowerTools"],"stderr": "エラー: 修正用の一致する repo はありません: PowerTools."

AlmaLinuxにmuninをインストールするためPowerToolsリポジトリを使用可能にしようとしたところエラーが発生しました。
結論から書くと、
yum config-manager --set-enabled powertools
で使用可能にできました。

[ansibleのplaybook]
- name: enable PowerTools repository
  command: dnf config-manager --set-enabled PowerTools
  args:
    warn: false
[ansibleのエラー]
fatal: [local_101]: FAILED! => {"changed": true, "cmd": ["dnf", "config-manager", "--set-enabled", "PowerTools"], "delta": "0:00:00.373923", "end": "2021-08-21 15:38:40.940575", "msg": "non-zero return code", "rc": 1, "start": "2021-08-21 15:38:40.566652", "stderr": "エラー: 修正用の一致する repo はありません: PowerTools.", "stderr_lines": ["エラー: 修正用の一致する repo はありません: PowerTools."], "stdout": "", "stdout_lines": []}
[実行したコマンド]
# dnf config-manager --enable PowerTools
エラー: 修正用の一致する repo はありません: PowerTools.
[原因]
コマンドのPowerToolsのPとTが小文字でなければならなかった。
CentOS8では
yum config-manager --set-enabled powertools
yum config-manager --set-enabled PowerTools
のどちらでもOKでしたが、AlmaLinuxでは小文字の方のコマンドでないといけなくなりました。

muninのpluginであるpostgres_querylength_において、「Oldest query」の項目が着々と増える事象が発生する

muninのpluginであるpostgres_querylength_において、「Oldest query」の項目が着々と増える事象が発生しています。

Screenshot_1
契機は、おそらく、PostgreSQLのVerを11.12から11.13にあげたとき…だと思っています。何をもって「Oldest query」を判定しているかについて、pluginの内容を確認したところ以下のクエリの結果でした。
SELECT 'query',COALESCE(max(extract(epoch FROM CURRENT_TIMESTAMP-query_start)),0) FROM pg_stat_activity WHERE state NOT LIKE 'idle%';
このクエリを
SELECT *,COALESCE(extract(epoch FROM CURRENT_TIMESTAMP-query_start),0) FROM pg_stat_activity WHERE state NOT LIKE 'idle%' ;
とかえて実行してみたところ、
ap2=# SELECT pid,usename,application_name,query_start,wait_event_type,wait_event,state,query,backend_type,COALESCE(extract(epoch FROM CURRENT_TIMESTAMP-query_start),0) FROM pg_stat_activity WHERE state NOT LIKE 'idle%' ;
-[ RECORD 2 ]----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pid              | 1171010
usename          | replication_user
application_name | walreceiver
query_start      | 2021-08-15 09:43:10.596396+09
wait_event_type  | Activity
wait_event       | WalSenderMain
state            | active
query            | START_REPLICATION SLOT "replication_slot_for_gmo" C7/F3000000 TIMELINE 26
backend_type     | walsender
coalesce         | 740.883447
-[ RECORD 3 ]----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pid              | 1171187
usename          | replication_user
application_name | sby
query_start      | 2021-08-15 09:44:00.86581+09
wait_event_type  | Activity
wait_event       | WalSenderMain
state            | active
query            | START_REPLICATION SLOT "replication_slot_for_local" C7/F3000000 TIMELINE 26
backend_type     | walsender
coalesce         | 690.614033
が返ってきました。
レプリケーションをするための「START_REPLICATION SLOT」ではじまるクエリが終わらないので、このクエリを「Oldest query」として、「CURRENT_TIMESTAMP-query_start」の値をmuninが表示する…ということでした。

今までは「Oldest query」は表示されていなかったので、START_REPLICATION SLOTではじまるクエリは実行されたらすぐに処理を終えて終了していたのだと思うのですが、何かを契機に「START_REPLICATION SLOT」が終了しなくなったのだと思います。
レプリケーションができていないわけではなく、ちゃんとレプリケーションできているので、今のところ実害はないように見えます。
$ psql -p 5432 -U postgres -c "select client_addr,state,sync_state from pg_stat_replication;"
  client_addr   |   state   | sync_state
----------------+-----------+------------
 ***.***.***.***| streaming | async
 ***.***.***.***| streaming | async
(2 rows)

ただ、マニュアルを見ると「START_REPLICATION SLOT」は
サーバに対して、XXX/XXXWAL時点から、論理的レプリケーションのWALストリームを開始するよう指示します。
例えば、要求されたWALがすでに回収された場合、サーバはエラーを返します。
サーバが、例えば、要求されたWALセクションがすでに回収されている場合、エラーを返すことがありえます。
成功時サーバはCopyBothResponseメッセージで応答し、フロントエンドに対するWALストリームを開始します。
とあるので、なんらかの応答が返ってきてクエリは終了するはず…だと思っています。

slotが悪さをしている可能性を疑い
SELECT pg_drop_replication_slot('replication_slot_for_local');
をして、再度、pg_create_physical_replication_slotしてみましたが、状況は変わりませんでした。

何かご存知の方がいらっゃいましたら、お知らせいただけると幸いです。

problem with installed package llvm-devel-10.0.1-3PGDG.el8.x86_64

CentOS8において、dnf updateしようとした際に、以下のエラーでupdateができませんでした。
[root@sub0000529529 ap2]# dnf update postgresql11-llvmjit
メタデータの期限切れの最終確認: 0:05:58 時間前の 2021年08月14日 07時49分58秒 に実施しました。
エラー:
 問題: problem with installed package llvm-devel-10.0.1-3PGDG.el8.x86_64
  - package llvm-devel-10.0.1-3PGDG.el8.x86_64 requires llvm-libs(x86-64) = 10.0.1-3PGDG.el8, but none of the providers can be installed
  - package llvm-devel-10.0.1-3PGDG.el8.x86_64 requires libLLVM-10.so()(64bit), but none of the providers can be installed
  - package llvm-devel-10.0.1-3PGDG.el8.x86_64 requires libLLVM-10.so(LLVM_10)(64bit), but none of the providers can be installed
  - cannot install both llvm-libs-11.0.0-2.el8.x86_64 and llvm-libs-10.0.1-3PGDG.el8.x86_64
  - package llvm-devel-11.0.0-2.el8.x86_64 requires llvm-test(x86-64) = 11.0.0-2.el8, but none of the providers can be installed
  - package postgresql11-llvmjit-11.13-1PGDG.rhel8.x86_64 requires libLLVM-11.so()(64bit), but none of the providers can be installed
  - package postgresql11-llvmjit-11.13-1PGDG.rhel8.x86_64 requires libLLVM-11.so(LLVM_11)(64bit), but none of the providers can be installed
  - package llvm-test-11.0.0-2.el8.x86_64 requires python3-lit, but none of the providers can be installed
  - cannot install the best update candidate for package postgresql11-llvmjit-11.12-1PGDG.rhel8.x86_64
  - package llvm-libs-11.0.0-2.module_el8.4.0+587+5187cac0.x86_64 is filtered out by modular filtering
  - package python3-lit-0.11.0-1.module_el8.4.0+587+5187cac0.noarch is filtered out by modular filtering
(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください または、'--skip-broken' を追加して、インストール不可のパッケージをスキップしてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
結論から書くと、2021/08/14時点で以下のパッケージはVerをあわせることができないです。
postgresql11-devel
postgresql11-test
postgresql11-llvmjit.x86_64

 postgresql11-devel             x86_64             11.13-1PGDG.rhel8             @pgdg11                               10 M
 postgresql11-test              x86_64             11.13-1PGDG.rhel8             @pgdg11                               11 M
は、
llvm                           x86_64             10.0.1-3PGDG.el8              @pgdg-centos8-sysupdates              14 M
が必要ですが、postgresql11-llvmjitは
[root@sub0000529529 ap2]# dnf install postgresql11-llvmjit
メタデータの期限切れの最終確認: 0:11:01 時間前の 2021年08月14日 07時49分58秒 に実施しました。
依存関係が解決しました。
============================================================================================================================
 パッケージ                      アーキテクチャー  バージョン                      リポジトリー                       サイズ
============================================================================================================================
インストール:
 postgresql11-llvmjit            x86_64            11.13-1PGDG.rhel8               pgdg11                             9.2 M
依存関係のインストール:
 llvm                            x86_64            11.0.0-2.el8                    pgdg-centos8-sysupdates             12 M
 llvm-libs                       x86_64            11.0.0-2.el8                    pgdg-centos8-sysupdates             21 M
のように、postgresql11-devel / postgresql11-testとpostgresql11-llvmjitで必要なllvmのVerが違います。
[root@sub0000529529 ap2]# dnf install postgresql11-test postgresql11-devel
メタデータの期限切れの最終確認: 0:11:48 時間前の 2021年08月14日 07時49分58秒 に実施しました。
依存関係が解決しました。
============================================================================================================================
 パッケージ                      アーキテクチャー  バージョン                      リポジトリー                       サイズ
============================================================================================================================
インストール:
 postgresql11-devel              x86_64            11.13-1PGDG.rhel8               pgdg11                             2.1 M
 postgresql11-test               x86_64            11.13-1PGDG.rhel8               pgdg11                             1.8 M
依存関係のインストール:
 clang                           x86_64            10.0.1-1.el8                    pgdg-centos8-sysupdates             74 k
 clang-devel                     x86_64            10.0.1-1.el8                    pgdg-centos8-sysupdates            2.0 M
 clang-libs                      x86_64            10.0.1-1.el8                    pgdg-centos8-sysupdates             25 M
 clang-tools-extra               x86_64            10.0.1-1.el8                    pgdg-centos8-sysupdates             13 M
 libicu65                        x86_64            65.1-1.el8.remi                 remi-safe                          9.3 M
 libicu65-devel                  x86_64            65.1-1.el8.remi                 remi                               979 k
 llvm-devel                      x86_64            10.0.1-3PGDG.el8                pgdg-centos8-sysupdates            3.1 M
ダウングレード:
 llvm                            x86_64            10.0.1-3PGDG.el8                pgdg-centos8-sysupdates            4.5 M
 llvm-libs                       x86_64            10.0.1-3PGDG.el8                pgdg-centos8-sysupdates             20 M
 postgresql11-llvmjit            x86_64            11.12-1PGDG.rhel8               pgdg11                             9.2 M
以上の結果から、postgresql11-devel /  postgresql11-testは11.13-1、postgresql11-llvmjitは11.12-1であればOKですので、どちらのパッケージも必要な場合は、postgresql11-llvmjitは11.12-1を使うことになるのかなと思います。

ErogameScapeでは、postgresql11-devel /  postgresql11-testをインストールしていたのですが、そもそも必要なかったので…、この機会にpostgresql11-devel /  postgresql11-testをremoveしました。
そして、postgresql11-llvmjitをインストールしているのに、有効にしていなかった(jitはPostgreSQLはデフォルトでoffでした…)ので、onにしてみました。
もしかしたら性能が改善するかもしれません。




記事検索