読者です 読者をやめる 読者になる 読者になる

/var/log/laughingman7743.log

I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?

RDS(PostgreSQL)に大きなデータを投入する際のパラメータ設定

AWS RDS PostgreSQL

RHEL6.5から20GB 6000万件ぐらいのCSVデータをpsqlコマンド(\copyコマンド)で投入していると、必ず数分してコネクションが切れる問題が発生しました。

RDSはPostgreSQL(9.3.3)を利用しており、psqlのバージョンの問題によるものかもしれないので、8.4系、9.3系ともに試しましたが改善しませんでした。

RHEL固有の問題かもしれないので、AmazonLinuxでも試しましたが同様に改善しませんでした。

サポートの方と色々やりとりをして、ssl_renegotiation_limit*1 パラメータを0(無効)にすることで問題なくデータ投入ができるようになることを確認しました。

ssl_renegotiation_limit (integer)

そのセッションキーの再調停が行われる前に、SSL暗号化接続上で、どれだけの量のデータのが流れても良いかを指定します。
再調停は攻撃者が大量のトラフィックを送出した場合、暗号解析を行う機会を減少させます。しかし、同時に多大な性能上の不利益をもたらします。
送出されたのと受け取られたトラフィックの合計はその限度の検証に使用されます。もしパラメータが0に設定されると再調停は無効になります。デフォルトは512MBです。

    注意: SSLプロトコルにおける脆弱性によりSSL再調停を使用した場合、2009年11月以前のSSLライブラリは安全でありません。
    この脆弱性への応急的な対処として、いくつかのベンダーは再調停を行う機能がないSSLライブラリを出荷しました。
    もしこれらのライブラリがクライアントまたはサーバで使用されているのであれば、SSL再調停は無効にすべきです。

ssl_renegotiation_limitはPostgreSQLのデフォルト値(512)でRDS固有の値ではないとのこと。 とくに問題がなければこのパラメータは無効にしておいたほうが無難だと思われます。

Enjoy!