`
mryufeng
  • 浏览: 982204 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表

淡出ACE

    博客分类:
  • ACE
用ACE3年了 读了好几遍实现 写了20W行代码以后发现ACE的原语太低了 在实际使用的过程中 非常依赖于网络和平台知识 不小心很容易错。 而且在高性能服务器方面 ACE的代码还没有精细到可以胜任高性能,还是用些简单的库如libevent代替就好了。 在易用性上 不如 erlang 这样的系统 。综合考虑还是淡出 ACE  只是在实现些业务服务器的时候 考虑到历史遗产的问题的时候 才使用。
感谢coderplayer同学,  让我转这篇文章。 Nginx,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。直到2007年4月,俄罗 斯大约有20%左右的虚拟主机是由nignx服务或代理的。Google在线安全博客中统计nginx服务或代理了大约所有Internet虚拟主机的4%。而netcraft的统计显示,nginx服务的主机在过去的一年里以四倍的速度增 ...
虽然目前动态网站的业务进行得如火如荼,但传输大量静态内容的服务却仍然有很大的需求,而且这种需求越来越多, 对服务器响应速度的要求也越来越高。而我们接下来要介绍的TUX正是此领域的佼佼者。 TUX是Threaded linUX http layer的简称。它是Redhat发行版特有的模块,目前最高版本是2.2, 首次出现在2.4内核中。它有以下特点: 静态内容处理 可以直接处理HTML、Gif等静态页面文件 ftp服务 通过配置, TUX可以作为一个匿名FTP 服务器使用 多虚拟主机支持 <o:p></o:p> 首次出现在TUX 2.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 ...
Global site tag (gtag.js) - Google Analytics