基本上,我有一个执行批处理作业的Windows服务。
我有两个相关的集合,customerAccounts和events。事件集合记录客户在站点上执行的操作,包括时间戳,事件名称,发生的页面和用户名。
该服务贯穿每个帐户,并根据他们在Events集合中的事件和一组用户定义的规则计算出他们的旅程阶段和帐户关闭的风险。
目前我的数据库中有大约3,500个帐户和大约100,000个事件。该服务在我的开发PC上运行仅需1分钟,但在服务器上看似永远(我估计基于修改服务需要大约2.5小时,因此它只能在单个客户帐户上执行作业。
我的机器是Core i7,内存为16GB,服务器是Intel Xeon E5-2609(64位,Win 2008 R2),内存为24GB。我把数据库放在一个更旧的服务器(32位,Windows 2003)上,该服务大约需要2分钟才能运行。所以,我知道在我的开发机器上只花了一分多钟,而在较旧的服务器硬件上只花了2分多钟,但在现代服务器上需要几个小时。
最初,Mongo Shell警告NUMA已在服务器上启用,应关闭以避免性能问题。此后一直关闭,但似乎没有对性能产生影响。
当我运行db.currentOp()时;在服务器上,我注意到它总是有一些查询“createIndexes”(索引是很久以前创建的),但是当我mongodump /将数据库恢复到我的dev机器并运行service / currentOp时,“ createIndexes“查询不存在。除此之外,没有别的东西似乎跳出来了。
有没有人对这个神秘的性能问题有任何想法/帮助?如果需要,我会发布currentOp / mongostats。
答案 0 :(得分:0)
快速回答:我重新安装了Mongo。没有花哨的配置,只是运行设置,它解决了问题。
我从来没有弄清楚为什么Mongo会不断创建索引。对于“创建索引”的一天充满事件日志,日志文件为0.25GB。