PostgreSQLは共有メモリについて文句を言っていますが、共有メモリは問題ないようです


13

私はPostgreSQLサーバー上で一種の集中的なスキーマのドロップと作成を行ってきましたが、今は文句を言います。

WARNING:  out of shared memory
ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.

しかし、PostgreSQLをで再起動しただけでは問題が残りますservice postgresql restart。max_locks_per_transactionは何も調整しないと思われます。

このエラーのトラブルシューティングリストが機能していないため、少し疎遠になっています。

詳細1409291350:一部の詳細が欠落していますが、コアSQLの結果は保持しています。

postgres=# SELECT version();
PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2,
 64-bit

そして:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

2
PostgreSQLのバージョンからSELECT version()?興味深い問題...
クレイグリンガー14

2
「max_locks_per_transactionは何もチューニングしないと思われます。」-ええ、なぜそれを疑うのですか?ヒントの提案に従って実際に試してみましたか?
ジョシュKupershmidt 14

ヒントの提案に従って実際に試してみましたか?max_locks_per_transaction = 64 # min 10これまで、/ etc / postgresql / 9.3 / main / postgresql.confのコメントを外しました。
48347 14

1
デフォルトのmax_locks_per_transactionは、最初は64です。その行のコメントを外しても、実際には変更されませんでした。
偽りをもたらす14

1
[OK]を128に増やすと問題が解決し、実際に操作を続行できました。
48347 14

回答:


11

集中的なドロップと作成に関するコメント、およびmax_locks_per_transactionの増加に関して受け取った通知は、同じトランザクションで多くのオブジェクトをドロップして作成しているというヒントです。これらはそれぞれロックになりますが、ロックにはそれぞれ少量の共有メモリが必要です。このため、max_locks_per_transactionは、トランザクション内で保持できるロックの数を制限します(1つのトランザクションがすべての共有メモリを使用するのを防ぐため)。

その制限を少し増やすこともできます(任意に大きく設定することはお勧めしません。実際には共有メモリの合計が不足するという別の状況に陥ります)。トランザクションごとに作成します。

編集:どうやらmax_locks_per_transactionの動作について間違っていたようです。ドキュメントから、利用可能なロックの合計数はmax_locks_per_transaction *(max_connections + max_prepared_transactions)です-どこでも保持されているロックの数がこの合計値未満である限り、どのトランザクションもmax_locks_per_transactionより多く保持できます。


私のワークフローには、(1)スキーマXのダンプ、(2)別のスキーマYのドロップ、および(3)スキーマ名YでのXの復元が含まれます。ステップ(2)は失敗しています。ステップ(2)は主にで構成されDROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public、これらは警告、エラー、およびヒントをスローする文です。
48347 14

最大ロックを64から128に倍増すると、ワークフローを続行できました。Ivnにはまだすべての内部構造はありませんが、DROP SCHEMA文とCREATE SCHEMA文の間でコミットすると、同様の緩和効果が得られると思います。
48347 14

今では、スキーマのわずかな増加が何日もかかることに気付きました。この問題は、これらの小さなスキーマの増加の 1つと完全に一致します。一般的な戦略として、これからはHINTをさらに考慮します。
48347 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.