他のサービス(および地域の領事エージェント)に接続するgolangプログラムがあり、次のエラーで失敗します。多くのファイルハンドルがある場合、ファイルハンドルが不足しています。
Put http://localhost:9501/v1/kv/health_checks/item: dial tcp: lookup localhost: too many open files
これはすべて問題ありません。システムとプログラムのオープンファイルの数を確認できます。
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7871
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 16384
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7871
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
そしてlsof
:
lsof | wc -l
5343
これは仕方限界以下ではまだです。システムの他のプログラムはすべていいです、私はサービスを呼び出すことができます、私はこの領事代理人を呼び出すことができます、ファイルやすべてを作成するが、golangプログラムは失敗し続けます。
これをどのようにデバッグすることができますか?どこを見ているのですか?
わずか2思考: A)私がエラーである可能性を除外しない側のエラーoccures(golangクライアントのせいですが、エラーがサーバー上occuresことは可能かもしれない)、 B.れている明確ではありませんエラー処理と実際の問題は、ファイルハンドルから遠く離れている可能性があります。 Hm。あまり楽観的ではありません。 幸運を祈る! – Ingaz