curl(libcurl)


exit codeとhttp_code

「-w "%{http_code}"」が「000」を返す場合、http codeに未定義のエラーが発生している。
「curl ...;echo $?」で原因が分かる場合がある。


slabメモリ使用量が肥大しメモリ不足になる

curl(libcurl)で定期的にhttps://リクエストを発行するようなサーバでメモリ不足になる。 topでみても怪しげなプロセスは無い。 「slabtop」で見るとdentryが異常にメモリを使っている。

rpm -q nss-softokn
nss-softokn-3.14.3-23.el6_7.x86_64
sync; echo 2 > /proc/sys/vm/drop_caches
sudo yum update curl nss-softokn
export NSS_SDB_USE_CACHE=yes
# または
export TMPDIR=/dev/shm
# curl実行後 dentunusd が大きく増えている事を確認
sar -v 1
105021秒 dentunusd   file-nr  inode-nr    pty-nr
10502242860       768     27417        10
10502342860       768     27417        10
...
strace -fc -e trace=access curl -s 'https://www.google.com' > /dev/null
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000056           0      4505      4503 access
------ ----------- ----------- --------- --------- ----------------
100.00    0.000056                  4505      4503 total
export NSS_SDB_USE_CACHE=yes
strace -fc -e trace=access curl -s 'https://www.google.com' > /dev/null
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
  0.00    0.000000           0        23        21 access
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                    23        21 total

curlでSSLが失敗する場合

curlが参照している中間証明書(CA)が古い場合にも起きる。 php等でlibcurlを使っている場合も同様。 golangも同様に発生。

sudo yum update ca-certificates libcurl curl nss

# 解決しない場合
mv /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt.$(date +%Y%m%d)
wget http://curl.haxx.se/ca/cacert.pem -O /etc/pki/tls/certs/ca-bundle.crt

curlオプション

curl -x proxy.example.com:8080 -L https://www.google.com
# http status
curl -LI -s -w "%{http_code}" "http://www.google.co.jp" -o /dev/null 2>&1
200 #結果
# download spees (byte)
curl -s -w "%{speed_download}" "http://www.google.co.jp" -o /dev/null 2>&1
242079.000

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-07 (金) 16:15:08