很多同學在使用erlang的過程中, 碰到了很奇怪的問題, 後來查明都是檔案控制代碼不夠用了, 因為系統預設的是每個程序1024. 所以我們有必要在程式執行的時候, 了解這些資訊, 以便診斷和預警.
下面的這個程式就演示了這個如何檢視節點的可用控制代碼數目和已用控制代碼數的功能.
首先確保你已經安裝了lsof, 我的系統是ubuntu可以這樣安裝.
root@ubuntu:~# apt-get -y install lsof
root@ubuntu:~# cat fd.erl
[code]
-module(fd).
-export([start/0]).
get_total_fd_ulimit() ->
= string:to_integer(os:cmd("ulimit -n")),
maxfds.
get_total_fd() -> get_total_fd(os:type()).
get_total_fd()
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()
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).
[/code]
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:~#
收工!
如何檢視系統中CPU的數目
用psrinfo 1m 就可以檢視。由於多核心 多執行緒技術的廣泛採用,要查出物理cpu的數目可以使用 vp引數,例如 psrinfo vp the physical processor has 32 virtual processors 0 31 ultrasparc t1 cpuid 0 clo...
如何檢視已安裝的CentOS版本資訊
如何檢視已安裝的centos版本資訊 1 root localhost cat proc version linux version 2.6.18 194.el5 mockbuild builder10.centos.org gcc version 4.1.2 20080704 red hat 4....
如何檢視已安裝的CentOS版本資訊
1 root localhost cat proc version linux version 2.6.18 194.el5 mockbuild builder10.centos.org gcc version 4.1.2 20080704 red hat 4.1.2 48 1 smp fri ap...