色々調べると、GuzzleHttpがHTTPSで通信する際に増えるらしい

 

まとめ


  • AWS SDKのクライアント、GuzzleHttpも最終的にphpのcurl_~関数を呼んでいる
    ※constructorでcurlが無い場合、Exception吐くコードがあるし、AWSの要件にもcurlが入っている
  • php curl の nssは多分、ビルドされたcurlのNSSバージョンに依存してそう
    ※curl -V のNSS/3.27 の部分
  • curlをmakeすると、その時のOSのnssバージョンが組み込まれた
    curl 7.19.7 (x86_64-unknown-linux-gnu) libcurl/7.19.7 NSS/3.36
  • かつ、その際、nss-softokn-3.14.3-23.3.el6_8.x86_64 で、curlコマンドのNSS_SDB_USE_CACHE=yes は有効だった
  • phpのcurlバージョンは、コマンドと同じくlibcurlに依存してそうだが、curl_version(); 又は、phpinfo(); で確認できる

 

各種情報

AWS-SDKでSNSへpublishするテストコードを準備

実行前後の情報

dentunusedが増加し、dentryのslabが増加している。

buffers/cacheが減少している。

 

対策コードを追加

実行前後の情報

ほぼ増加しなくなったことがわかる。

nss-softokn-3.14.3-23.3.el6_8 の環境でも効果がありそうだ。

 

GuzzleHttp

コードを追っていくと、内部でphp curlを使っているようだ

curl と nss

NSS/3.27.1 が使われているようだ。

osにinstallされているnss-softknは使われていない?

curlをmakeして確かめてみる

同じバージョンをインストール

システムのnssが使われた事の確認と効果の確認

nss-softokn-3.14.3-23.3 で nss-softokn-3.14.3-23.3 が使えているだろうと思われる。

 

wget

 

epel

CentOS : EPEL リポジトリ追加

php5.5を入れるために

 

 

pip

CentOS 6 の python 2.6.6 に pip を導入する手順

 

aws cli

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/awscli-install-linux.html

php5.5

 

php-xml

こんなエラーが出たので、

 

 

となったので、

 

と作成

とできた。

AWS SDKを使用しているとslabが肥大化していく現象

NSS_SDB_USE_CACHE=yesが利用できるのが、nss3.16以上とあるが、

nss-softokn-3.14.3-12.el6 という情報もあるため、確認

https://bugzilla.redhat.com/show_bug.cgi?id=1044666

http://tama1029hq.hatenablog.com/entry/2016/12/12/105353

 

Amazon Linux

この場合、NSS/3.21が有効なのだろうか。

 

→効いている。

 

さくら(CentOS release 6.6 (Final))

 

→再現しない

 

CentOS6.9(Amazonマーケットプレイス)

 

→効いている