这个问题要看具体应用场景。 进程当然不是越多越好。 合理才好。
所谓限制进程并不是指技术上限制进程。是指设计上合理设计而已。 什么叫合理设计又回到了前面那个问题,必须看你具体的业务。没有一个固定标准。
讲几条这次大会总结的经验(注意不是规范,是经验而已):
1. 小消息大运算(yufeng)
这就代表如果你某个进程运算量过少的话,就用函数做算了,不要用进程。免得来回通讯开销过多;这条会降低你设计的进程数量
2. 当心进程过载(单个进程成为系统瓶颈)
如果某个进程需要服务于过多进程的话, 他就会过载。好比1000个小孩打一个小孩(yufeng) , 由于erlang
不支持将一个小孩拥有1000个小孩的超能力,唯一的解决办法就是将其变为1000个小孩打1000个小孩(可以横拆或者纵拆,如果能拆得开的话)。
解决进程瓶颈。 这种情况就是增加进程数来解决
3. 当心慢速操作拖慢进程处理, 造成堵塞(xushiwei)
这种情况下,erlang 的解决方案就是创建新的进程去慢慢做那个慢速操作,让服务进程能够快速处理下一个请求。 这样的话也是增加进程数量
(xushiwei 的cerl 2.0 解决方案是这个服务协程下面再管理一套“子协程”,其实也是一回事)
总结下, 其实所有进程的设计都不是按照越多越好,越少约好的标准来考虑的, 而是根据业务实际特点来设计的。 该多少就多少。
Regards
老范