查看节点文件句柄数量(转载)

很多同学在使用erlang的过程中, 碰到了很奇怪的问题, 后来查明都是文件句柄不够用了, 因为系统默认的是每个进程1024. 所以我们有必要在程序运行的时候, 了解这些信息, 以便诊断和预警.
下面的这个程序就演示了这个如何查看节点的可用句柄数目和已用句柄数的功能.

首先确保你已经安装了lsof, 我的系统是ubuntu可以这样安装.
root@ubuntu:~# apt-get -y install lsof
root@ubuntu:~# cat fd.erl
Java代码 收藏代码

-module(fd).
-export([start/0]).

get_total_fd_ulimit() ->
{MaxFds, _} = string:to_integer(os:cmd("ulimit -n")),
MaxFds.

get_total_fd() -> get_total_fd(os:type()).

get_total_fd({unix, Os})
when Os =:= linux orelse
Os =:= darwin orelse
Os =:= freebsd orelse Os =:= sunos ->
get_total_fd_ulimit();
get_total_fd(_) -> unknown.

get_used_fd_lsof() ->
Lsof = os:cmd("lsof -d \"0-9999999\" -lna -p " ++
os:getpid()),
string:words(Lsof, $\n).

get_used_fd() -> get_used_fd(os:type()).

get_used_fd({unix, Os})
when Os =:= linux orelse
Os =:= darwin orelse Os =:= freebsd ->
get_used_fd_lsof();
get_used_fd(_) -> unknown.

start()->
io:format("total fd: ~p~n"
"used fd: ~p~n", [get_total_fd(), get_used_fd()]),
halt(0).


root@ubuntu:~# erlc fd.erl
root@ubuntu:~# ulimit -n 1024
root@ubuntu:~# erl -noshell -s fd
total fd: 1024
used fd: 10
root@ubuntu:~# ulimit -n 10240
root@ubuntu:~# erl -noshell -s fd
total fd: 10240
used fd: 10
root@ubuntu:~#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值