良好的服务器设置,用于根据 n 个功能处理 500 个用户之间的交叉引用


Good server setup for crunching a cross-reference between 500 users based on n features

处理一个在用户之间引用数据的小脚本。每个用户对"功能"都有一定的计数。例如,特征A是(悲伤,快乐,愤怒(,特征B是(晴天,云,雷声(。这些功能的当前行数总计为 200.000(1000 个用户(。算法很简单:对于每个用户,计算特征,计算每个条目最高(A -> sad,B -> thunder(,并将其作为每个用户特征总数的百分比。我现在得到的是用户的"评级",我将其与数据库中的所有用户进行比较(是的,通过重新执行此操作(。基于所有用户的最高功能+最高功能+最高功能等的假设,与所有用户相比,用户之间具有某种相对相似性。

问题是,我在Linode的4核Xen实例上使用PHP执行此操作。它不是很快。目前最大化一个内核,另一个内核为 30%,其余内核处于空闲状态。脚本可以优化,但我真的很想弄清楚如何进行设置以使其运行得更快。我需要什么样的架构?

我可以看到这是一个非常广泛的问题,但我希望有人能给我一些指示。任何帮助将不胜感激!

亲切问候

莱因德

我发现罪魁祸首是 mysqli->fetch_assoc((,等待硬盘为 PHP 提供额外的资源。我通过一次性从数据库中获取所有结果,然后处理它们,而不是一个接一个的获取过程机制,使过程更快。