https なサイトを cURL したらメモリリークするから注意


はじめに

「サーバー監視所(非公式)」は、cURLを使用して監視対象に "https" リクエストを定期的に行うシンプルな死活監視を行うウェブサイトです。

最近この監視を行っているサーバがメモリ枯渇でダウンしました。

「NSS」ライブラリが原因

1044666 - Can curl HTTPS requests make fewer access system calls?

libcurlが使用する NSSライブラリ(SSL/TLS通信を行うライブラリ)のバグが原因で、メモリキャッシュが肥大化し、サーバダウンにつながったようです。

対策としては環境変数にNSS_SDB_USE_CACHE=YESを設定する必要があるようです。
FIXになっているので今後ずっと必要の模様。根本的に修正してほしい

具体的には下のコマンドを叩くとよいです。

  • export NSS_SDB_USE_CACHE=YES
  • sudo echo 'NSS_SDB_USE_CACHE=yes' >> /etc/environment