`
jzhihui
  • 浏览: 268131 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
近段时间在研究Erlang核心特性的实现,也许过段时间会有个系列的总结,期待...   今天看到有人写一个深入Hello World的文章,想起来读研的时候做的一个关于程序加载和链接的课程设计,也是以Hello World为例说明的,随发出来共享。文后有下载链接。   ======================================================   本文的目的:大家对于Hello World程序应该非常熟悉,随便使用哪一种语言,即使还不熟悉的语言,写出一个Hello World程序应该毫不费力,但是如果让大家详细的说明这个程序加载和链接的过程,以及后续 ...
  如果不需要安装wxWidgets的话,很简单,./configure & make & make install。但是装起来后,发现Erlang的debugger无法启动,显示“ERROR: Could not find 'wxe_driver.so' in: /usr/local/lib/erlang/lib/wx-0.99.1/priv”,虽说不使用debugger也问题不大,不过有时候调个小程序什么的还是不方便,随决定把wxWidgets安装一下。            在没有安装wxWidgets以前,config这一步会显示:“wx: wxWidgets n ...
上一篇说明Tsung的服务器监控机制的时候提到,收集到监控数据后,会发送到数据统计进程。其实在会话进程运行时,也会产生大量的统计数据,比如发送了多个请求,执行了多个个事务(Tsung事务),通过网络发送了多少数据,收到多少数据等等。   根据手册中描述,Tsung的统计数据分为四类:sample,sample_counter,counter,sum。其中sample与sample_counter会每10秒计算一次统计项的平均值及其标准差,并写入文件;而counter是一个单纯的计数器,用在比如一共发送了多个请求这样的统计项上;sum统计项有一个累积的过程,例如HTTP响应的总大小。sa ...
Tsung在进行压力测试同时,也可以监控服务器结点上的CPU、内存、系统负载等信息(详见监控一节)。            Tsung提供了三种监控方式:Erlang,SNMP,Munin。在tsung_controller启动的第二个阶段,会通过ts_os_mon:activate启动服务器监控。activate函数的执行很简单,通过ts_config_server:get_monitor_hosts拿到要监控的服务器列表,根据配置的监控方式调用ts_os_mon_sup:start_child来启动相应类型的监控进程,比如配置的监控类型为Erlang,那么ts_os_mon_sup ...
  在Websocket for Tsung一文中有提到如何扩展Tsung支持自有协议,这里所说的插件式协议支持是指上文中提到的第一种方式:作为session type,本文说明下它的实现原理。            tsung的配置文件中会有sessions这一节,主要配置会话进程跟测试服务器之间的交互过程。sessions可包含多个session,每个session有不同的概率,在会话进程选择session时,会根据这个概率来决定使用哪个session。          每个session都有个type属性,定义与测试服务器交互时使用的协议(应用层协议,如HTTP,XMMP等)。 ...
上一篇讲到ts_config_server:newbeams通过ts_launcher:launch和ts_launcher_static:launch启动本地和远程结点压力客户端,其中ts_launcher用于随机生成用户,ts_launcher_static主要用于静态生成用户。这一篇详细的说明压力客户端是如何启动的。          说明:压力客户端是指一个tsung应用,见TUNG_ROOT/src/tsung/tsung.erl。            newbeams会通过gen_server:cast/2调用回调函数ts_config_server:handle_cast/ ...
一方面,分析Tsung的架构及实现,另一方面,也是一个学习Erlang的过程,所以如果有碰到不了解的东西,也会记录下来。 (该分析系统基于Tsung 1.4.2,涉及到Erlang源码的部分会以R15B为基础)            Tsung由tsung.sh(默认位 ...
  这篇博文距离上次提到要写差不多快两个月了,一方面时间不多,另一方面主观上总觉得写博客总要写的很好才能发表出来。不过,看了很多别人的博客,其实很多时候只是个记录笔记。希望自己也能利用这个平台做好自己的技术积累过程,不要太在意到底写的怎么样。            费话少说,开发Websocket for Tsung的初衷是为了做测试。公司一个基于websocket和XMPP的长连接解决方案,需要做压力测试,而Tsung本身并没有对websocket的支持。要让Tsung支持websocket,其实也有两个思路,一个是将websocket作为session type(Tsung本身支持的 ...
  最近开始学习Erlang,一方面出于对其主要语言特征(高并发)的兴趣,另一方面,当前项目的压力测试希望用Tsung(http://tsung.erlang-projects.org/,基于Erlang,很好的压力测试工具)来做,而当前Tsung的协议支持还不能满足我们的要求(XMPP over Websocket),所以希望对其进行扩展(下一篇会讲到Tsung的具体扩展实现)。当然,学习一门语言就需要一个简单方便的工具来进行一些简单的实验。一开始试用了下Erlide(http://erlide.org/),但是配起来后,发现保存文件的时候有时候不会自动编译,然后运行一次程序会开一个新的Er ...
--(《Java Concurrency in Practice》读书笔记)   中断线程是指:线程正在运行,还没有正常退出(run方法顺利结束),而某个事件的发生导致该线程必须中断当前正在执行的任务,该线程或者退出,或者等待其它事件然后再继续执行。稳定的基于线程的服务,在程序退出时,必须能够安全的释放线程所占用的资源,减少对系统性能的影响。   Thread类提供的方法中与此功能相关的函数有Thread.stop,Thread.suspend,Thread.resume。但是这几个函数都不能安全的提供相应的功能:Thread.stop会导致对象处理不一致的状态,而Thread.susp ...
上次在做Java中最大线程数量的测试时,对于Linux下的线程与进程的关系有点迷惑,今天看到的一篇文章简单的说明了这两者的关系: Linux线程是通过进程来实现。Linux kernel为进程创建提供一个clone()系统调用,clone的参数包括如 CLONE_VM, CLONE_FILES, CLONE_SIGHAND 等。通过clone()的参数,新创建的进程,也称为LWP(Lightweight process)与父进程共享内存空间,文件句柄,信号处理等,从而达到创建线程相同的目的。 Linux 2.6的线程库叫NPTL(Native POSIX Thread Library ...
最近想测试下Openfire下的最大并发数,需要开大量线程来模拟客户端。对于一个JVM实例到底能开多少个线程一直心存疑惑,所以打算实际测试下,简单google了把,找到影响线程数量的因素有下面几个:   -Xms intial java heap size -Xmx maximum java heap size -Xss the stack size for each thread
Global site tag (gtag.js) - Google Analytics