- 浏览: 982204 次
- 性别:
- 来自: 广州
最新评论
-
qingchuwudi:
有用,非常感谢!
erlang进程的优先级 -
zfjdiamond:
你好 这条命令 在那里输入??
你们有yum 我有LuaRocks -
simsunny22:
这个是在linux下运行的吧,在window下怎么运行escr ...
escript的高级特性 -
mozhenghua:
http://www.erlang.org/doc/apps/ ...
mnesia 分布协调的几个细节 -
fxltsbl:
A new record of 108000 HTTP req ...
Haproxy 1.4-dev2: barrier of 100k HTTP req/s crossed
文章列表
用ACE3年了 读了好几遍实现 写了20W行代码以后发现ACE的原语太低了 在实际使用的过程中 非常依赖于网络和平台知识 不小心很容易错。 而且在高性能服务器方面 ACE的代码还没有精细到可以胜任高性能,还是用些简单的库如libevent代替就好了。 在易用性上 不如 erlang 这样的系统 。综合考虑还是淡出 ACE 只是在实现些业务服务器的时候 考虑到历史遗产的问题的时候 才使用。
- 2007-10-17 10:59
- 浏览 3026
- 评论(2)
感谢coderplayer同学, 让我转这篇文章。
Nginx,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。直到2007年4月,俄罗 斯大约有20%左右的虚拟主机是由nignx服务或代理的。Google在线安全博客中统计nginx服务或代理了大约所有Internet虚拟主机的4%。而netcraft的统计显示,nginx服务的主机在过去的一年里以四倍的速度增 ...
- 2007-10-10 21:57
- 浏览 6890
- 评论(0)
虽然目前动态网站的业务进行得如火如荼,但传输大量静态内容的服务却仍然有很大的需求,而且这种需求越来越多, 对服务器响应速度的要求也越来越高。而我们接下来要介绍的TUX正是此领域的佼佼者。
TUX是Threaded linUX http layer的简称。它是Redhat发行版特有的模块,目前最高版本是2.2, 首次出现在2.4内核中。它有以下特点:
静态内容处理
可以直接处理HTML、Gif等静态页面文件
ftp服务
通过配置, TUX可以作为一个匿名FTP 服务器使用
多虚拟主机支持 <o:p></o:p>
首次出现在TUX 2.1
- 2007-10-10 21:54
- 浏览 5120
- 评论(1)
/*
* Heap sizes start growing in a Fibonacci sequence.
*
* Fib growth is not really ok for really large heaps, for
* example is fib(35) == 14meg, whereas fib(36) == 24meg;
* we really don't want that growth when the heaps are that big.
*/
erlang的process heap堆大小默认是233 等于 ...
当你net_adm:ping(Node)的时候发生了什么? 这个涉及到很复杂的流程。让我为你解刨:
这个流程很长而且在erlang代码和c代码里面窜来窜去,重要的点 我用红字标注 请各位耐心。
1. net_adm.erl:
ping(Node) when is_atom(Node) ->
case catch gen:call({net_kernel, Node},
'$gen_call',
{is_auth, node()},
infinity) of
{ok, yes} -> pong;
...
ETS 是erlang term strorage 的意思 文档见erl5.5.5/lib/stdlib-1.14.5/doc/html/index.html。 这个是beam里面很核心的一个功能。ets, dets, mnesia 组成了erlang的数据库,注意mnesia本身没有存储机制 它的存储就是ets 和dets。
用ets:i().看下可以知道
11 code set 254 11393 code_server
12 code_names set 48 532 ...
经常的时候看大型工程的时候 碰到一二个地方实在不明白他是如何运作的 这时候最好的工具就是debugger 如gdb,的backtrace 可以得到完整的函数调用栈。在linux下推荐使用ddd, 俺的centos5 下标准版本没有安装ddd 顺手下载个安装就好了(标准版本却个motif-devel yum下就好)。ddd图形界面方便查看函数和变量,还有点击跳转功能。 附上几个调试erlang的脚本,希望能够方便大家。
1.
[root@test98 ~]# cat gdb_beam
#! /bin/bash
ddd -x gdb.init /usr/local/lib/erlang/erts ...
在erl shell下按下CTRL+C的时候
erts_printf("\n" "BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded\n" " (v)ersion (k)ill (D)b-tables (d)istribution\n");
但是实际上可以有更多功能 看代码:
while (1) {
if ((i = sys_get_key(0)) <= 0)
erl_exit(0, "" ...
经常在性能优化的时候 要看下erts内部的允许状态 erlang有未公开的函数
erts_debug:get_internal_state(XX)
XX为atom有以下几个
DECL_AM(node_and_dist_references);
DECL_AM(DbTable_words);
DECL_AM(next_pid);
DECL_AM(next_port);
DECL_AM(check_io_debug);
DECL_AM(available_internal_state);
DECL_AM(monitoring_nodes); ...
inet:setopt有packet设置选项: {packet, PacketType} (TCP/IP sockets) Defines the type of packets to use for a socket. The following values are valid:
raw | 0 No packaging is done.
1 | 2 | 4 Packets consist of a header specifying the number of bytes in ...
otp_src_R11B-5\lib\erl_interface\src\prog\erl_call.c 是个不错的工具, 就是ei的前端能够通过cnode给erlang的后端发各种请求。
具体的见 主题: 如何把erlang应用在项目中? http://www.iteye.com/topic/100425
where: -a apply(Mod,Fun,Args) (e.g -a 'erlang length [[a,b,c]]'
-c cookie string; by default read from ~/.erlang.cookie
...
http://www.sics.se/~joe/apachevsyaws.html 上比较yaws的性能 显示apache 4000就挂了 但是yaws 8w还在挺着。
见附件的图
但是你仔细看下他的测试方式
What do we measure and how?
We use a 16 node cluster running at SICS. We plot throughput vs. parallel load.
Machine 1 has a server (Apache or Yaws).
Machine 2 requests 20 KByte pages fr ...
翻erlang的代码发现erlang对memory的管理非常重视 内置了多种内存allocator:
B: binary_alloc
D: std_alloc
E: ets_alloc
F: fix_alloc
H: eheap_alloc
L: ll_alloc
M: mseg_alloc
S: sl_alloc
T: temp_alloc
Y: sys_alloc
多种分配策略:
1。 Best fit
2 。 Address order best fi ...
源码的 erts\emulator\internal_doc\erl_ext_dist.txt 描述了erlang ext term的格式, epmd通讯的流程协议和流程 同时还要node 间通讯的协议 相信对理解erlang的分布原理有帮助。
beam 模拟器有3种
1. beam 默认的
2. beam.smp 支持多处理器的
3. beam.hybrid 支持混合堆的
我们允许erl的时候 在linux下实际运行的是shell脚本
#!/bin/sh
ROOTDIR=/usr/local/lib/erlang
BINDIR=$ROOTDIR/erts-5.5.5/bin
EMU=beam
PROGNAME=`echo $0 | sed 's/.*\///'`
export EMU
export ROOT ...