16

Railsでの開発のためにsqlite3からPostgreSQLに切り替えて、herokuの問題が発生しないようにしようとしています。herokuとリンク先のRailscastに関するアドバイスに従っていましたが、postgresqlをインストールした後、次のエラーが発生しました。

/ usr / local / var / postgres / base/1にtemplate1データベースを作成しています...

致命的:共有メモリセグメントを作成できませんでした:メモリを割り当てることができません

詳細:失敗したシステムコールはshmget(key = 1、size = 2072576、03600)でした。

ヒント:このエラーは通常、共有メモリセグメントに対するPostgreSQLの要求が、使用可能なメモリまたはスワップスペースを超えたか、カーネルのSHMALLパラメータを超えたことを意味します。リクエストサイズを減らすか、より大きなSHMALLでカーネルを再構成することができます。リクエストサイズ(現在は2072576バイト)を減らすには、おそらくshared_buffersまたはmax_connectionsを減らすことによって、PostgreSQLの共有メモリ使用量を減らします。

私はドキュメントを少し調べましたが、これは初めてで、メモリとデータベースの動作についてはほとんど知りません。ここの誰かが私を正しい方向に向けることができるかもしれないと思いました。自分で見つけてください。これを修正する方法はありますか?私のコンピュータは新しくて比較的凝っています。このためにメモリが不足した場合は驚きます。そのため、「共有メモリの使用量」を減らすことが正しい考えかどうかはわかりません(何が起こっているのかを理解している場合)。 。

編集:これを早く立てるべきだった。これは、エラーの原因となったコマンド(データベースの構築)です。

initdb /usr/local/var/postgres -E utf8
4

3 に答える 3

32

データベースパスから、MacOSXを使用していると思います。

最も人気のあるLinuxディストリビューションでは、データベースディレクトリが/ var/libにあります。

Googleで検索したところ、次のことがわかりまし た。Leopardでのpostgresqlinitdbの致命的な共有メモリエラーの修正

お役に立てば幸いです。

便宜上、上記のリンクからこれらの手順をコピーしました。

次のコマンドを実行します。

sudo sysctl -w kern.sysv.shmall=65536
sudo sysctl -w kern.sysv.shmmax=16777216

または、/ etc/sysctl.confを編集して永続的に変更します

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216 
于 2012-09-15T01:39:20.587 に答える
0

回答のページ参照が存在しないため、Macで共有メモリを設定する方法の詳細を以下に示します。

大量の共有メモリを使用できるようにシステムが構成されていることを確認してください。これはメモリを「予約」しないため、最初に必要になる可能性があるよりもはるかに高い値を設定しても安全であることに注意してください。これは、ファイルを編集することで実行できます/etc/sysctl.conf-例:

sudo nano /etc/sysctl.conf

2GBのRAMを搭載したMacBookProの場合、例には次のものsysctl.confが含まれます。

kern.sysv.shmmax=1610612736
kern.sysv.shmall=393216
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.maxprocperuid=512
kern.maxproc=2048

Note that (kern.sysv.shmall * 4096) should be greater than or equal to kern.sysv.shmmax. kern.sysv.shmmax must also be a multiple of 4096.

Once you have edited (or created) the file, reboot. If you wish to check the settings currently being used by the kernel, you can use the sysctl utility:

sysctl -a

Enjoy!

于 2013-12-02T00:16:19.937 に答える
0

You must change and reboot:

sudo vim /etc/sysctl.conf

For mac os x with 2 GB

kern.sysv.shmall=393216
kern.sysv.shmmax=1610612736

For mac os x with 4 GB

kern.sysv.shmall=786432
kern.sysv.shmmax=3221225472

For mac os x with 8 GB

kern.sysv.shmall=786432 * 2
kern.sysv.shmmax=3221225472 * 2 

etc ...

于 2014-07-29T16:04:50.127 に答える