この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
squidプロキシ下のとある現場にて。
誰か
そう言われて調査したところ、確かにネットワークが遅い。
ithinkit
squidの/var/log/squid/cache.logを確認したところ、以下のエラーが大量に出力されていた。
調べたところ、どうやら「squidのファイルディスクリプタ値が限界を超えてるよー?」というエラーであることが判明。
squidのファイルディスクリプタはsquid.confに指定がない場合のデフォルト値は1024。
squidファイルディスクリプタ値変更
まずはsquidファイルディスクリプタの現状値を確認します。
本来であれば、squidclientで確認出来るはずだったけど、何故か値が確認出来なかったので泥臭くいく方法を試しました。
squidのpidを確認。今回は「2673」。
# ps -ef | grep squid
root 2673 1 0 Aug19 ? 00:00:00 squid -f /etc/squid/squid.conf
squid 2676 2673 0 Aug19 ? 13:11:21 (squid) -f /etc/squid/squid.conf
squid 2680 2676 0 Aug19 ? 00:00:35 (unlinkd)
root 29182 28215 0 10:52 pts/1 00:00:00 grep squid
squidのpidである「2673」をもとにファイルディスクリプタの設定値を確認。
(★がsquidのファイルディスクリプタ値)
# cat /proc/2673/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 29990 29990 processes
Max open files 1024 4096 files # ★
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 29990 29990 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
うーん。デフォルトっぽいな。
なので、ファイルディスクリプタの値を16384に変更する。
# vi /etc/squid/squid.conf
max_filedescriptors 16384
設定反映のため、squid再起動
# systemctl restart squid
ファイルディスクリプターの値が変更されたことを確認。
squidのpidを確認。今回は「30107」。
# ps -ef | grep squid
root 30107 1 0 11:07 ? 00:00:00 squid -f /etc/squid/squid.conf
squid 30109 30107 1 11:07 ? 00:00:00 (squid) -f /etc/squid/squid.conf
squid 30111 30109 0 11:07 ? 00:00:00 (unlinkd)
root 30128 28215 0 11:07 pts/1 00:00:00 grep squid
squidのpidである「30107」をもとにファイルディスクリプタの設定値を確認。
ファイルディスクリプタの値が変更されていることが確認出来た。
(★がsquidのファイルディスクリプタ値)
# cat /proc/30107/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 29990 29990 processes
Max open files 16384 65536 files # ★
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 29990 29990 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
ファイルディスクリプタの値が変更され、ネットワークが遅いのも解消された模様。
ファイルディスクリプタの値はOS全体のものとsquidは別にある。混同しないよう注意が必要
squidバージョンによって設定値が異なる
squid.confに設定するパラメーターはsquidのバージョンによって記載方法が異なるので注意が必要。
max_filedesc <値>
max_filedescriptors <値>
ithinkit
以上、あいしんくいっとでした。