我有一个服务器程序,它从一组网络对等点中随机选择 10 个来完成一项任务。生成节点随机索引的代码如下:
indices = let index = getStdRandom $ randomR (0, number_of_peers - 1)
in sequence $ replicate 10 index
该程序已经运行了几个月,每天生成数千个“索引”,并且一直运行良好,直到昨天,当我注意到出现问题时:生成的随机数似乎“收敛”到一些重复值(结果是相应的网络对等体负载很重)。
要查看更改,以下是几天前的服务器日志:
peers selected: [55,47,80,74,183,85,04,33,72,58]
以及今天的日志(如您所见,重复选择了对等点 53、37 和 195):
peers selected: [53,53,37,37,37,37,195,195,195,21]
该程序在 x86_64 版本的 Ubuntu 10.10 上运行。