Ale*_*nov 6 erlang erlang-otp
我有一个具有两个工作进程的主管:一个处理与远程服务器连接的TCP客户端和一个处理连接协议的FSM.
处理子进程中的TCP错误会使代码变得非常复杂.所以我更喜欢"让它崩溃",但这有一个不同的问题:当服务器无法访问时,将很快达到最大重启次数,并且主管将与我的整个应用程序一起崩溃,这对于这个案例.
我想要的是采用后退的重启策略; 如果失败了,如果主管知道什么时候由于崩溃而重新启动(即将它作为参数传递给init函数)就足够了.我找到了这个邮件列表线程,但是有更官方/更好的测试解决方案吗?
init
cth*_*ops 6
我多次使用erlang时遇到过这个问题并尝试了很多解决方案.我认为我发现最好的最好的办法就是有一个由主管启动的额外流程,并启动可能崩溃的流程.
它在启动时启动孩子,等待孩子退出并重新启动孩子(延迟)或适当退出.我认为这比后退服务器(你链接到的)更简单,因为你只需要保持关于一个孩子的状态.
我使用的另一个解决方案是必须将子进程作为瞬态启动,并有一个单独的进程,轮询并向已崩溃的进程重新启动.
Dus*_*tin 5
您可能会发现我们的主管垫是一个很好的起点.我使用它减慢了必须运行的东西的重启速度,但在启动时很快失败(例如遇到资源问题的端口).
归档时间:
14 年,11 月 前
查看次数:
2170 次
最近记录:
7 年,8 月 前