评估Erlang的可扩展性

时间:2014-03-14 10:46:18

标签: erlang scalability

我在考虑评估学校项目可扩展性的好方法时遇到了一些困难。这项任务只是一个推特服务。非常裸露的骨头。主要目标是使其尽可能具有可扩展性。但是,了解任务的扩展方式和原因同样重要。所以关键不是要创建一个非常可扩展的项目,而主要是为服务器创建一些不同的架构,看看哪个架构优于哪个架构以及为什么。

所以到目前为止,我有这样的基本服务器架构: * 1保存数据的主要过程 *每个用户1个唯一的进程服务器端

用户将消息发送到他自己的服务器端进程,然后只是将这些消息委托给中央进程。

为了测试这个,我会产生一个或多个充当客户端的进程。我会用推文向服务器发送垃圾邮件,然后评估它能承受一定负载的程度。

现在,为了评估可扩展性,我提出了以下指标:

首先,如果消息队列正在堆积,则进程正成为瓶颈。因此,每次处理推文时(或每N条推文),我都会存储队列长度,最后计算平均值。如果我在更多内核上运行它并且平均队列长度下降,它会更好地扩展。

其次,如果我创建了N个用户来垃圾邮件服务器(在N个进程或更少的进程上),我只需要计算服务器处理所有这些推文所需的时间。

有更好的方法吗?我不禁想到应该有更好的指标..

EDT:

到目前为止,我已尝试fprofeprof。然而,这些工具向我展示了在某些方法上花了多少时间。虽然这是我可以改进代码的一个很好的指标,但它并不是可扩展性的良好指标。如果它能够显示每个过程花费的时间会更好。

1 个答案:

答案 0 :(得分:1)

如果您对此感兴趣,请查看perceptpercept2