我有一个更新程序脚本,每隔几个小时在游戏服务器上的各个区域运行一次。我希望更频繁地运行此脚本并添加更多区域。理想情况下,我希望尽可能均匀地分散 CPU 和 I/O 的负载。我曾经使用 mysql 运行此脚本,但现在网站使用 mongodb 来处理所有内容,因此将更新程序脚本也移动到 mongodb 是有道理的。当 mongodb 刷新数据库的所有更新时,我的 I/O 峰值非常高。
脚本是用 编写的C#
,尽管我认为这不是相对的。更重要的是,每次这些脚本之一运行时,我们都会进行大约 50 万到 120 万次更新。我们在代码和索引上做了一些小的优化,但此时我们还停留在如何优化实际的 mongodb 设置上。
其他一些重要信息是我们做了这样的事情
update({'someIdentifier':1}, $newDocument)
而不是这个:
$set : { internalName : 'newName' }
不确定这是否比做$set
或不做的性能差很多。
我们可以做些什么来尝试分散负载?如果这也有帮助,我可以为 VM 分配更多内存。
我很乐意提供更多信息。