六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 36|回复: 0

如何查看节点的可用句柄数目和已用句柄数

[复制链接]

升级  62%

120

主题

120

主题

120

主题

举人

Rank: 3Rank: 3

积分
386
 楼主| 发表于 2013-1-15 02:37:39 | 显示全部楼层 |阅读模式
很多同学在使用erlang的过程中, 碰到了很奇怪的问题, 后来查明都是文件句柄不够用了, 因为系统默认的是每个进程1024. 所以我们有必要在程序运行的时候, 了解这些信息, 以便诊断和预警.
下面的这个程序就演示了这个如何查看节点的可用句柄数目和已用句柄数的功能.

首先确保你已经安装了lsof, 我的系统是ubuntu可以这样安装.
root@ubuntu:~# apt-get -y install lsof   
root@ubuntu:~# cat fd.erl
-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:~#


收工!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表